《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.9 在经过一段很艰难的时光后才得到的经验教训

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 本节书摘来自华章出版社《 自动化测试最佳实践:来自全球的经典自动化测试案例解析 》一 书中的第2章,第2. 9节,作者:(英)Dorothy Graham Mark Fewster 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.9 在经过一段很艰难的时光后才得到的经验教训
在过去的三四年里,我们遇到了无数的困难:
软件测试变得非常成熟,有时反而会使我们忽略一些最简单的测试。比如,我们往往测试了复杂的SQL查询语句,却忽略了对在用户组之外创建新用户这类简单操作的测试。事实上,这种语句是不允许出现的,因为可能会由于在用户组的权限设置中没有考虑到这种情况而导致重大的错误。
我们过于关注大规模的自动化测试中的变化,导致有些非功能性测试有时并未得到足够的重视。比如,用户可能会获得只有专业人员才能看懂的错误提示消息,软件产品中经常缺少帮助功能,这些都是软件设计和测试中存在的问题。
使用随机生成的输入数据来进行测试时,有时虽然发现了严重的缺陷,但是因为测试人员能力有限,不能再重新生成导致故障的数据,所以并不能对调试过程产生任何帮助。经常讨论上述这种测试,一般是从经济的角度:它们通常需要额外的资源来辅助进行分析,并且在大多数情况下,并不能通过它们找到产生bug的原因,因此,也不可能通过它们找到产生软件缺陷的根本原因。
对自动化投入的评估主要看ROI的效果。如果不在比较的过程中引入其他因素,很有可能得出错误的故障报告。比如,我们要仔细地对结果进行比较,考虑到地域因素,有时要先进行转换再进行比较等。例如,当你在比较一台位于挪威境内的PC上的日期和一台位于美国境内的PC上的日期的时候,不同的时间格式(挪威为“日/月”而美国境内为“月/日”)导致时间显示的结果也会不同。
有时候通过软件来模拟物理故障并不是很容易,并且要模拟这些故障在多台电脑上几乎同时发生也是很困难的。此外,通过软件来模拟的断电和断网情形与实际发生的断电和断网也可能并不一样。
有时候可能会发生结果误报问题,因为测试时,即便遇到一个或多个失效也可能报告正确的结果。对于那些长期使用都未出现过故障的测试用例,往往更容易忽略对其正确性的检查。但随着时间的流逝,这些测试可能会不断积累许多错误,因此在报告中要不定期地对其正确性进行检查。
如果一些优先级比较低的次要bug没有立即修复,那么它们可能会掩盖一些主要bug,而这些主要bug由于引入的时间太长,往往更难对其进行分析。
必须要插入和修改等待时间来保证在测试继续运行之前,前面的强制性过程已经完成了。用更新的硬件取代现有硬件通常意味着要对这一过程再一次进行同步。
【真知灼见】
预测可能会发生改变的事物,并使它们在必要的时候更容易改变(例如,保存同步时间的核心列表)。
在测试套件的某些部分中,期望结果模板用来与实际结果进行比较。由于这类模板需要大量的维护工作,因此我们试图将这些基于模板的测试改为基于断言的测试。
引入新的平台有时会产生一些问题,并需要大量的资源来解决这些问题。同时,对操作系统的监控力度也要加大。
对于基于Windows的测试,要关闭自动更新,并将更新放在等待队列中,在测试可以中断的那个时段之前,再运行这些更新。
我们要清楚正在运行测试的网络中所发生的一切。比如,每隔一个月午夜时候出现一些无法解释的故障,最后发现,故障是由前雇员的一台电脑上的夜间执行工作所导致的:这台电脑没有关闭,而是仍然非常活跃地向本地网络发送查询请求的垃圾邮件。
【小窍门】
回头看有些错误是非常显而易见的,但你如果没有想到,它们可能就会困扰你。
建议定期做探索性测试,你将会对所发现的问题感到非常惊奇,同时,有时候你还可以将这些经验用于新的自动化测试中。

相关文章
|
3月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
89 1
|
4天前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
37 8
.net8 使用 license 证书授权案例解析
|
3月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
302 76
|
2月前
|
存储 人工智能 NoSQL
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
83 12
|
3月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
3月前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
3月前
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
3月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
102 4
|
3月前
|
PHP 开发者 容器
PHP命名空间深度解析及其最佳实践####
本文深入探讨了PHP中引入命名空间的重要性与实用性,通过实例讲解了如何定义、使用及别名化命名空间,旨在帮助开发者有效避免代码冲突,提升项目的模块化与可维护性。同时,文章还涉及了PHP-FIG标准,引导读者遵循最佳实践,优化代码结构,促进团队协作效率。 ####
47 1
|
3月前
|
Java 数据库连接 开发者
Java中的异常处理机制:深入解析与最佳实践####
本文旨在为Java开发者提供一份关于异常处理机制的全面指南,从基础概念到高级技巧,涵盖try-catch结构、自定义异常、异常链分析以及最佳实践策略。不同于传统的摘要概述,本文将以一个实际项目案例为线索,逐步揭示如何高效地管理运行时错误,提升代码的健壮性和可维护性。通过对比常见误区与优化方案,读者将获得编写更加健壮Java应用程序的实用知识。 --- ####

热门文章

最新文章

推荐镜像

更多