《软件测试技术实战:设计、工具及管理》—第1章 1.2节软件测试的七项基本原则

简介: 软件测试可以显示软件中存在缺陷,但不能证明软件不存在缺陷。软件测试可以减少软件中存在未被发现缺陷的可能性,但即使软件测试没有发现任何缺陷,也不能证明软件或系统是完全正确的。

本节书摘来自异步社区《软件测试技术实战:设计、工具及管理》一书中的第1章,第1.2节软件测试的七项基本原则,作者顾翔,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 软件测试的七项基本原则
下面是业界公认的软件测试的七项原则。

1.2.1 原则1:软件测试显示存在缺陷
软件测试可以显示软件中存在缺陷,但不能证明软件不存在缺陷。软件测试可以减少软件中存在未被发现缺陷的可能性,但即使软件测试没有发现任何缺陷,也不能证明软件或系统是完全正确的。软件中到底存在多少缺陷,谁也不知道。软件测试的目的是尽可能发现更多的缺陷。此外,有些缺陷是不影响使用的,所以在考虑时间和成本上可以不必修改,从而防止过度测试带来对资源的浪费。

1.2.2 原则2:穷尽软件测试是不可行的
进行完全(各种输入和前提条件的组合)的软件测试是不可行的。通过运用风险分析和不同系统功能的软件测试优先级,确定软件测试的关注点,从而替代穷尽软件测试。穷尽软件测试真正的意思是,在软件测试完毕后,软件测试工程师知道在系统里没有残留任何未知的Bug。因为如果有未知的Bug,那么就可以通过做更多的软件测试找到他们,这样软件测试也就还没有穷尽。因为零缺陷的软件是不存在的,所以穷尽的软件测试也是不可行的。

扩展阅读:Good enough原则
 

软件测试的原则是Good-enough原则:这是一种权衡投入/产出比的原则,测试既不要不充分,也不要过分,不充分和过分都是一种不负责任的表现,当然达到Good enough是一种理想状态。
1.2.3 原则3:软件测试尽早介入
为了尽早发现缺陷,在软件或系统开发生命周期中,软件测试活动应该尽可能早地介入,并且也应该将关注点放在已经定义的软件测试目标上。在软件测试的各个阶段,软件测试最好在需求分析期间就介入进去,一方面可以尽早发现缺陷,另一方面可以尽早掌握产品的需求和设计,为更好地进行测试做好准备。请参考1.1.4节介绍的W软件测试模型。

1.2.4 原则4:缺陷集群性
软件测试工作的分配比例应该与预期的和后期观察到的缺陷分布模块相适应。少数模块通常包含大部分在软件测试版本中发现的缺陷或失效。这个符合80-20原则,即80%的缺陷发生在20%的模块中。造成这种现象的可能性如下:

  • 该模块功能比较复杂;
  • 实现该功能模块的开发工程师水平比较低;
  • 其他原因。

James Whittaker等著的《探索式软件测试》书中提到对软件灾难区进行重点测试也是基于这点考虑的。

案例1-18:缺陷集群性。
产品项目同案例1-17,根据前两周的测试,总结出来的缺陷报告如下:


1cb8b3008922043162af82b710066ffaca7fe0e2

由此可见,模块D的缺陷是最多的,其次为模块A,然后是模块B,模块F和模块C,模块E和模块G相对缺陷比较少。根据缺陷集群性,测试经理调整第三周的测试任务如下:

89d3510b1aeb27f96fcae70f16b27f1fa9049896

1.2.5 原则5:杀虫剂悖论
采用同样的测试用例多次重复进行测试,最后将不再发现新的缺陷。为了克服这种“杀虫剂悖论”,测试用例需要进行定期评审和修改,同时需要不断增加新的不同的测试用例,来测试软件或系统的不同部分,从而发现更多的潜在缺陷。具体可以参见1.1.11节中关于杀虫剂现象的描述。

1.2.6 原则6:软件测试活动依赖于软件测试背景
针对不同的软件测试背景,进行不同的软件测试活动。比如,对通信系统的软件进行软件测试,与对嵌入式机顶盒系统软件的软件测试的方法是不一样的。

1.2.7 原则7:不存在缺陷(即有用系统)的谬论
假如系统无法使用,或者系统不能完成客户的需求和期望,发现和修改缺陷是没有任何意义的。

相关文章
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
621 11
|
测试技术 持续交付
探索软件测试中的自动化测试策略
随着软件开发周期的加速和市场需求的不断增长,传统的手动软件测试方法已难以满足现代软件开发的高效性和准确性要求。本文旨在探讨自动化测试在软件测试中的重要性、实施策略及其对提高软件质量的影响。通过分析自动化测试的优势与挑战,以及提供实用的自动化测试工具和框架选择指南,旨在帮助读者理解并应用自动化测试以提升软件开发效率和产品质量。
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
339 1
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
586 4
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
293 4
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
在软件开发的世界中,测试是确保产品质量的关键环节。本文将深入探讨自动化测试框架的重要性和实现方法,旨在为读者揭示如何通过自动化测试提升软件测试效率和准确性。我们将从测试的基本概念出发,逐步引导读者了解自动化测试框架的设计和实施过程,以及如何选择合适的工具来支持测试活动。文章不仅提供理论知识,还将分享实用的代码示例,帮助读者将理论应用于实践。无论你是测试新手还是经验丰富的开发者,这篇文章都将为你打开一扇通往更高效、更可靠软件测试的大门。
278 1
|
数据可视化 测试技术 API
软件测试中的自动化测试框架选择与实践
在当今快节奏的软件开发环境中,自动化测试成为了确保软件质量和加速交付的关键。本文将探讨自动化测试的重要性,并比较几种流行的自动化测试框架,包括Selenium、Appium和TestComplete。文章还将提供一些最佳实践和案例研究,以帮助读者更好地理解和实施自动化测试策略。
|
敏捷开发 前端开发 Java
软件测试中的自动化测试框架选择与实践
在当今软件开发生命周期中,自动化测试已成为提升软件质量和开发效率的关键手段。本文旨在探讨自动化测试框架的选择标准及其在实际项目中的应用实践。通过对主流自动化测试框架的分析比较,结合具体案例,本文将阐述如何根据项目需求和团队特点选择合适的自动化测试工具,并分享实施过程中的经验教训。
351 1
|
Java 测试技术 API
软件测试中的自动化测试框架选择与应用##
在快速迭代的软件开发周期中,选择合适的自动化测试框架对于提高软件质量和开发效率至关重要。本文探讨了当前流行的几种自动化测试框架的特点和适用场景,旨在为软件开发团队提供决策依据。 ##