1.2 为什么需要测试

对组件和系统及其相关文档进行严格的测试,有助于降低在运行过程中发生失效的风险。发现缺陷并随后进行修复,有助于提高组件或系统的质量。此外,还可能需要进行软件测试,以满足合同或法律要求或行业具体标准。
1.2.1 测试对成功的贡献
在计算的整个历史中,软件和系统投入运行后,由于存在缺陷,随后导致故障或无法满足利害关系方的需要,这种现象很常见。但是,使用适当的测试技术可以减少这种有问题交付的频率,只要这些技术是在适当的测试技能、适当的测试级别和软件开发生命周期的适当时间点上应用的。例如:
• 测试人员参与需求评审或用户故事优化能够发现这些工作产品中的缺陷。识别并移除需求中的缺陷能够降低开发错误或者不可测功能的风险。
• 在系统设计时,测试人员与系统设计人员紧密合作,可以提高双方对设计和如何测试的理解。这种理解的增加可以减少基本设计出现缺陷的风险,并能在早期识别相关的测试。
• 在开发代码时,测试人员与开发人员紧密合作,可以提高各方对代码的理解和如何测试代码。这种理解的增加可以降低代码和测试中出现缺陷的风险。
• 测试人员在发布前验证和确认软件能够发现可能被遗漏的缺陷,并为解决导致失效的缺陷相关的过程(例如:调试)提供支持。这样可以提高软件满足利益相关者的要求和满足需求的可能性。
除了上述例子,满足定义的测试目标(见1.1.1节)有助于整个软件开发和维护的成功。
1.2.2 质量保证和测试
尽管人们经常用质量保证(或者QA)代指测试,但是质量保证和测试相关却又和测试不同。有个更大的概念质量管理,将它们联系在一起。质量管理包括所有指导和控制组织内和质量相关的活动。质量管理同时包括了质量保证和质量控制。质量保证通常关注于遵循适当的过程,从而获得针对特定质量级别的信心。当正确执行过程时,根据这些过程创建出来的工作产品通常质量较高,而这有助于缺陷预防。此外,使用根本原因分析检测和消除缺陷的原因,以及正确地应用回顾性会议的结果改进过程,对于有效的质量保证是很重要的。
质量控制涉及各种支持达到适当质量水平的活动,包括测试活动。测试活动是整个软件开发或维护过程的一部分。由于质量保证与整个过程的正确执行有关,质量保证为进行合适的测试提供支持。如1.1.1和1.2.1节所述,测试通过多种方式为质量作出贡献。
1.2.3 错误、缺陷和失效
每个人都会犯错误(Error、Mistake),而错误会导致在软件代码或者其他一些相关工作产品中引入缺陷(defect、fault或bug)。导致在一个工作产品中引入缺陷的错误可以触发另外一个导致相关工作产品中引入缺陷的错误。例如:需求引发的错误会导致需求缺陷,进而引起编程错误导致代码中存在缺陷。
代码中的缺陷如果被执行,可能会导致一个失效,但并不是所有情况都是这样的。例如:有些缺陷需要特定输入或前提条件才会触发失效,因此极少甚至从来没有发生。
很多原因都会导致错误的发生,例如:
• 时间压力
• 人类的易错性
• 没有经验或者技能不足的项目参与者
• 项目参与者之间沟通不畅,包括需求和设计的错误沟通
• 代码、设计、架构、待解决的问题和/或使用的技术的的复杂性
• 错误理解系统间和系统内的接口,尤其是在系统内和系统间交互频繁时
• 新的、不熟悉的技术
除了代码中的缺陷会导致失效外,环境因素也会导致失效。例如:辐射、电磁场和污染会导致固件中的缺陷,或者通过改变硬件条件影响软件的执行。
并非所有非预期的测试结果都是失效。由于测试执行的方式错误,或者由于测试数据、测试环境或其他测试件的缺陷,或由于其他原因,也可能会发生误报(False Positives)。反之亦然,类似的错误或者缺陷也可能会导致漏测(False Negatives)。漏测是测试没有发现它应该发现的缺陷;而误报是报告的缺陷实际上不是真正的缺陷。
1.2.4 缺陷、根本原因和影响
例如:假设由于一行错误代码导致错误的支付了利息,从而引起客户的抱怨。由于产品负责人错误的理解利息的计算方法,造成了相关的用户故事描述不清,而这段代码就是针对该用户故事的。如果在利息计算中存在大量的缺陷,而这些缺陷的根本原因都是由于类似的误解,那么产品负责人应该通过参加利息计算相关的培训,从而减少将来产生类似缺陷。
这个例子中,客户抱怨就是影响。错误的利息支付是失效。代码中不合适的计算是缺陷,该缺陷来源于模糊不清的用户故事这个初始的缺陷。这个初始缺陷的根本原因是产品负责人缺乏相关知识,从而导致他在编写用户故事时犯了错误。根本原因分析的流程在ISTQB-ETM专家级测试管理大纲和ISTQB-EITP专家级改进测试流程大纲进行了讨论。

猜你喜欢

转载自blog.csdn.net/TBOKCN/article/details/82945351
1.2