《软件测试技术实战:设计、工具及管理》—第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:不存在缺陷(即有用系统)的谬论
假如系统无法使用,或者系统不能完成客户的需求和期望,发现和修改缺陷是没有任何意义的。

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
198 3
|
8天前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:智能化测试用例生成策略
【4月更文挑战第28天】 随着软件开发的复杂性不断增加,传统的软件测试方法面临巨大挑战。为了提高测试覆盖率并确保软件质量,需要投入大量的时间和资源去设计、执行和维护测试用例。本文探讨了一种基于人工智能(AI)技术的智能化测试用例生成策略,该策略能够自动识别关键的测试路径,动态调整测试用例,并优化测试集合。通过引入智能化工具和算法,显著提升了软件测试过程的效率和有效性。
|
10天前
|
测试技术
【测试】优化软件测试:有效测试用例设计的关键
【测试】优化软件测试:有效测试用例设计的关键
|
10天前
|
jenkins 测试技术 持续交付
深入探索软件测试中的持续集成与自动化测试实践
【4月更文挑战第27天】 在当今软件开发的快速迭代过程中,持续集成(CI)和自动化测试已成为确保代码质量和加快交付速度的关键因素。本文将探讨如何通过实施持续集成流程,并结合自动化测试策略来优化软件测试工作。我们将分析持续集成的原理、自动化测试的最佳实践以及如何将这些方法应用于实际项目中,旨在为读者提供一套完整的解决方案,以提高软件项目的效率和质量。
13 3
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:智能化测试用例生成策略
【4月更文挑战第25天】 在软件开发生命周期中,高效的测试用例设计是确保产品质量的关键步骤。随着人工智能和机器学习技术的不断进步,智能化测试用例生成已成为提高软件测试效率和效果的有力工具。本文将探讨智能化测试用例生成的策略,包括基于模型的学习、自然语言处理以及遗传算法等,并分析其对传统测试方法的影响,最后提出实施智能化测试的实践建议。
|
1月前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
50 6
|
1月前
|
敏捷开发 运维 测试技术
深入探索软件测试中的持续集成与自动化测试实践
【4月更文挑战第3天】 在现代软件开发的快速迭代过程中,持续集成(Continuous Integration, CI)和自动化测试已成为确保产品质量和加快交付速度的关键实践。本文旨在探讨CI/CD流程中自动化测试的实施策略、面临的挑战以及优化方法。通过对自动化测试工具选择、测试用例设计、集成到CI流程的实践案例分析,为读者提供一套系统的实施指南和性能优化技巧,以期帮助团队提升测试效率,降低错误率,最终实现软件开发周期的缩短和质量的提升。
|
2月前
|
安全 测试技术
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
44 0
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
102 0

热门文章

最新文章