一. 软件测试简介
软件测试是确保软件质量的重要环节,涉及到测试类型、阶段、方法、文档和缺陷管理等多个方面。通过合理规划和执行测试,可以提高软件的可靠性和用户满意度。它是软件开发生命周期中不可或缺的一部分,它确保软件产品能够按照预期工作,满足用户的需求和期望。
二、软件测试基础概念价值
软件测试的基础概念不仅帮助我们理解软件的功能和质量要求,还在实际操作中发挥了重要的作用。测试不仅是一个技术活动,更是确保软件成功的关键因素。
- 提升软件的质量。
- 提高用户满意度。
- 降低开发成本和风险。
- 确保软件的安全性。
三、软件测试基础概念
什么是软件测试?
- 通过手工或者工具对"被测对象"进行测试。
- 验证实际结果与预期结果之间是否存在差异。
- 通俗来讲,软件测试就是验证被测对象好不好用、能不能用、功能是否正常、能否满足用户的需求。
软件测试的作用
-
通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
-
测试可以降低同类型产品开发遇到问题的风险。
软件缺陷
-
软件缺陷被测试工程师和开发工程师们称作
bug。 -
软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据。
软件测试原则
原则(Principles ),是每个人在行事中所遵循的准则。
软件测试也有一套原则让每位软件测试从业人员去遵循,这些原则是前辈们前仆后继在无数的坑坑洼洼中总结出来的。软件测试的原则是指帮助测试团队有效地利用他们的时间和精力来发现测试项目的隐藏 bug 的指导方针。从实际的实践和研究中,研究了以下 7 条软件测试的基本原则,以便测试人员在软件测试领域广泛应用。
-
原则一:测试显示缺陷的存在(Testing shows presence of defects)
-
时至今日,依然有不少人容易犯错:没有发现错误的测试说明软件没有缺陷。
这个原则可以用另一种方式来描述: 测试的本质是证明软件存在缺陷,而不是软件没有任何缺陷。
-
测试只能证明软件是存在缺陷的(证伪),而不是证明软件是没有缺陷的(证实)。 -
软件测试只能找出应用程序或软件中存在的缺陷,测试是为了辅助开发,降低缺陷存在的可能性而开展的活动,即便对产品或者应用程序进行了多次的、比较彻底的测试都没有发现任何缺陷,也不能证明软件是100%完美的。
-
-
原则二:穷尽测试是不可能的 (Exhaustive testing is impossible)
-
穷尽测试指的是对软件系统进行全面、彻底的测试,覆盖所有可能的输入、路径和状态。然而,由于软件系统的复杂性,几乎不可能测试所有可能的情况,因为它需要大量的时间。相反,测试团队只能专注于一些重要的指标。
- 例如,一个有多个输入字段和条件的程序,可能有数以万计的可能组合,穷尽测试会非常昂贵且不可行。
-
-
原则三:尽早介入测试 (Testing Early)
-
"早期的鸟儿有虫吃"或者是"早起的虫子被鸟吃",对,说的就是这个理儿,早,是我们解决问题的有效办法。 -
必须尽早介入测试活动,为软件开发的下一阶段做好准备。只要生成产品需求或文档,测试人员甚至就可以开始测试。
- 为什么测试要尽早介入呢? 简单的说就是保证软件质量,降低风险和成本。
- 测试人员一般在需求阶段就开始介入,使缺陷在需求或设计阶段就被发现,缺陷发现越早,修复的成本就越小。
-
据调查,缺陷的修复成本与其发现时间成反比,且越晚修复其修复成本将会成指数级增长。

-
显然,从一开始就解决问题总是更容易、更便宜,而不是如果发现错误太晚就改变整个系统。因此,通过早期测试,测试人员可以检测到错误,并帮助开发团队以更少的成本和精力解决问题。
-
另外,尽早介入测试,测试人员能够更全面的了解需求和项目整体进度,知己知彼百战不殆,说的就是这个理儿。
-
-
原则四:缺陷集群性(2/8原则)(Defect Clustering)
-
缺陷聚类指的是在几个模块中发现了大部分缺陷。这一原则要求测试团队利用自己的知识和经验,确定要测试的潜在模块。这一预测有助于节省时间和精力,因为团队只需要关注那些 "敏感" 领域。 -
二八原则,即:80%的错误是由20%的模块引起的。
-
在测试中,应该优先关注那些容易出错的区域。
-
然而,这种方法也有缺点: 一旦测试人员只专注于所有团队的一小块区域,他们可能会错过其他区域的错误。
-
原则五:杀虫剂悖论 (Pesticide Paradox)
-
当我们反复使用相同的杀虫剂的时候,会有少量害虫产生免疫而存活下来,使得杀虫剂失去药效。
杀虫剂悖论是指测试人员一直使用相同的方法或手段去重复测试,这些测试只适用于一些有限的模块,而不是整个系统。这种测试可能很难发现bug,甚至无法发现bug。因此,为了涵盖项目的各个部分,它要求测试团队经常审查和更新测试用例。
-
如果对相同的缺陷进行相同的测试,可能不会找到新的缺陷。就像对抗杀虫剂的昆虫一样,使用相同的策略可能导致昆虫适应新的环境。所以需要不断更新和改进测试方法和策略,以应对新的缺陷和软件变化。
-
-
原则六:测试活动依赖于测试内容(Testing is context dependent)
- 测试活动的效果和方法高度依赖于测试内容的质量和完整性。测试内容包括需求文档、设计文档、用户故事等。如果这些内容不准确或不完整,测试活动也会受到影响。
-
原则七:没有错误是好,是谬论 (Absence of error - Fallacy)
- 在 原则一:测试显示软件存在缺陷 中说明,测试是为了降低缺陷存在的可能性而开展的活动,即便多次测试都没有发现任何缺陷,也不能证明软件是完美的。
软件测试对象
-
软件的组成部分 = 文档 + 数据 + 程序

-
需求分析阶段:需求文档、接口文档
-
编码实现阶段:源代码
-
系统功能使用:软件程序
测试用例
- 为特定的目的而设计的一组测试输入、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档。