如今,开发团队严重依赖自动化测试的反馈来评估他们正在开发的系统的质量。
根据软件测试的类型和使用的开发过程,每晚或每次提交后运行自动化测试可为团队提供有关代码更改对其整体质量的影响的信息。然而,巨大的力量伴随着巨大的责任。您越依赖自动化测试的反馈来决定是否允许构建继续进行开发管道中的下一步,您就越必须能够依赖这些非常自动化的测试的软件质量和缺陷检测有效性.
换句话说,对系统质量的信心至关重要,因此,如果系统在任何阶段在自动化过程中进行测试,您还应该相信这些自动化测试的完整性。不幸的是,这就是测试自动化经常无法发挥其潜力的地方。自动化测试不是他们应该成为的产品质量的坚实可靠的捍卫者,而是经常成为欺骗、烦恼和模棱两可的根源。他们最终破坏了他们应该首先提供的信任。
我们如何才能重新获得对自动化测试的信心?让我们看看自动化测试可能会削弱而不是建立信心的两种方式,然后考虑你可以做些什么来纠正这种情况——或者更好的是,首先防止它发生。
误报
让我们从误报的简短解释开始:
假阳性是二元分类中的错误,其中测试结果错误地指示存在某种情况(例如疾病不存在时的疾病),而假阴性是相反的错误,其中测试结果错误地指示疾病的存在。当它实际存在时,它不存在。这是二进制测试中的两种错误,与两种正确结果(真阳性和真阴性)形成对比。它们在医学上也称为假阳性(或假阴性)诊断,在统计分类中称为假阳性(或假阴性)错误。 [1] – 维基
这种破坏性的自动化测试在用户界面驱动的测试中更频繁地发生,主要是因为这些测试最有可能失败(同步和超时问题、异常处理、产品中未传达的更改等)。如果您的超时和异常处理设计不正确,则误报在根本原因分析和将来防止它们方面可能会非常耗时。当这些误报不定期重复出现时,可能更难以确定是什么导致了问题。
当您的团队或企业使用持续集成或持续部署策略进行软件开发时,误报可能会非常加重。当您的构建管道包含偶尔会产生误报的测试时,您的构建可能偶尔会失败,因为您的测试无法正确处理异常和超时。这最终可能会导致您完全从管道中消除测试。虽然这可能会暂时缓解您对破碎建筑物的问题,但这不是一个长期的方法。您努力创建这些测试是有原因的(对吗?),因此它们应该包含在自动化测试和交付过程中。因此,您应该尽快调查这些误报的根本原因并尽快纠正它们。
为了避免误报,您应该投入精力开发强大且可靠的测试,包括充分的异常处理和同步过程。这肯定需要预先投入时间、精力和专业知识,但从长远来看,通过消除这些令人难以置信的令人讨厌的误报,坚实的基础将获得回报。
假阴性
让我们从对假否定的简短解释开始:
假阴性错误或假阴性是错误地指示条件不成立的测试结果。– 维基
虽然误报可能很烦人,但至少它们会通过错误警告或不成功的CI 构建让自己知道。对测试自动化信任度下降的重大威胁在于负面情况:测试在不应该通过的情况下通过。在制定程序决策(如部署到生产环境)时,您越依赖自动化测试运行的结果,就越需要相信您的测试结果准确反映了被测应用程序的质量,而不是而不是通过测试的空壳,但没有执行他们应该进行的验证。
假阴性特别难以识别和管理,主要有两个原因:
如前所述,它们不会像真阳性和假阳性那样主动展示自己的存在,例如通过显示错误通知。
虽然某些测试从一开始就可能是假阴性,但随着时间的推移以及对被测产品的不断修订,会产生很大一部分假阴性。除了建立新的测试和升级过时的测试之外,测试自动化方法的一个关键组成部分应该是经常评估现有测试用例的故障检测性能。对于在早期运行顺利且成功的测试尤其如此。您确定他们仍在执行正确的断言吗?或者如果被测应用程序运行不正确,它们也会通过吗?以下是一个明智的计划,用于不断评估您的测试是否仍然值得您对它们充满信心:
当你开发你的测试时,测试它们。根据测试和断言的类型,这可以像拒绝测试结束时声明的断言并检查测试是否失败一样简单。当您采用测试驱动开发时,您会自动执行类似的操作,因为在您添加实际生产代码之前,您的测试不会通过。
无意义的通过测试可能对统计数据很有用,但它增加了您可能不需要的维护工作。定期检查您的测试,以确保它们仍然具有原始缺陷检测能力,并且不会因为自测试开发以来对您的应用程序所做的更改而变得多余。我建议将突变测试视为一种为单元测试建立和维护高质量、健壮的测试套件的技术。这就是它的意思:
突变测试(或变异分析或程序变异)用于设计新的软件测试和评估现有软件测试的质量。突变测试涉及以小方式修改程序。 [1] 每个突变版本称为突变体,测试通过使原始版本的行为与突变体不同来检测和拒绝突变体。这被称为杀死突变体。测试套件是通过它们杀死的突变体的百分比来衡量的。可以设计新的测试来杀死更多的突变体。突变体基于定义明确的突变运算符,它们要么模仿典型的编程错误(例如使用错误的运算符或变量名称),要么强制创建有价值的测试(例如将每个表达式除以零)。执行。突变测试是白盒测试的一种形式- Wiki
尽管进行突变测试运行可能很耗时,尤其是对于大型系统而言,但它可以为您提供有关单元测试套件的质量和缺陷检测能力的重要见解。构建可靠的自动化测试需要编程技能,但拥有确定是否完全自动化测试的能力可能更为关键。确定自动化特定测试的最有效技术也需要技巧。我建议并找到了测试自动化问题的最简单答案——一个清晰的计划。如果我所走的道路没有直接给出答案,那么这个选项可能也不是最有效的。
卓码软件测评是一家[ 具备CMA、CNAS双重资质 ]的专业做软件测试的第三方软件测试服务机构, 可根据您的需求提供各类软件测试服务,并出具合格有效的软件测试报告。点击→→可了解测试报价
部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。负责人:曾菲 电话:4006070568