L2-11测试的主要目的是什么
随着对软件产品质量要求的越来越高,对软件测试的要求也随着提高。目前我们提到的软件测试,不再局限在测试执行上,而是贯穿于整个软件开发生命周期中,包含了静态测试(例如评审)和动态测试。测试目的也不再局限在发现缺陷上面,其目的会随着不同测试级别或测试阶段而有所侧重点。根据ISTQB基础级大纲2018版本的内容,其测试目的如下图所示:
一、发现缺陷
尽早和尽量多的发现被测对象中的缺陷,应该是测试人员测试过程中最常提起的一个测试目标,也是所谓测试价值的一个的重要体现。发现缺陷的目的是推动开发人员定位和修复问题。等开发修复完成之后,测试人员通过再测试和回归测试,确保开发人员已修复缺陷,以及变更没有影响原来正常的区域,从而提高产品质量。开发生命周期的每个阶段,都应该有测试的参与,并尽量多的发现本阶段的缺陷,从而大大提高本阶段的缺陷阶段遏制能力,从而提高测试效率、降低成本和提高质量。
发现的缺陷不仅仅是功能层面的,因为软件产品的质量要求是多维度的,因此软件测试还应该关注在各种非功能质量属性上面。更多的产品质量属性可参考标准ISO 25010 - 软件产品质量,其主要质量类型框架如下图所示。
二、增加信心
当测试过程中发现很少或没有发现缺陷时,测试就可以帮助树立对于软件产品质量的信心。同时,通过测试增加信心还可以表现在下面3个方面:
(1)确认Verification:确认软件产品描述的需求已经得到正确实现;[ISO 9000][GBT 11457]
(2)验证Validation:被测对象可以按照用户/客户的要求工作,例如:完成特定任务;[ISO 9000][GBT 11457]
(3)合规性:通过测试确定软件产品已经遵守合同、法律或法规要求或标准;
例如,在验收测试时,其主要目的就是增加信心:确认软件产品能够按照预期工作,并且满足用户完成特定任务的要求,从而增加用户对使用产品质量的信心。
三、提供信息
测试过程的每个阶段都在为开发过程提供信息,包括给软件产品的不同利益干系人提供不同维度不同详细程度的信息。提供信息的主要目的是帮助利益干系人作出正确的决策:
(1)评估质量:通过测试过程提供的各种数据,可以帮助利益干系人评估被测软件产品的质量。例如:根据测试过程中发现缺陷的累积趋势、测试执行的进度数据、执行通过率和覆盖率等,可以判断软件产品是否满足计划中定义的质量要求;
(2)评估进度:通过提供的各种数据,可以帮助管理人员作出是否能及时发布软件产品的决策,包括评估:测试执行进度是否在计划范畴内、开发修复缺陷进度是否满足质量和发布要求等;
评估产品质量和进度情况,测试过程中提供的数据是非常重要的输入。
四、预防缺陷
测试过程中发现的缺陷,特别是在开发生命周期早期发现的缺陷,对后续阶段而言可以起到预防缺陷的作用。另外,通过测试过程中发现的缺陷,或用户现场发现的缺陷,分析引入缺陷的根本原因以改进开发过程和测试过程,预防同样的缺陷不会在将来的开发过程和测试过程中重复出现,从而不断提高产品质量,这也是软件质量保证的重要一环。同时,从测试的角度,也要分析为什么能发现缺陷,以及为什么缺陷会遗漏到用户现场,也要找到根本原因,从而不断提高测试过程的有效性。
通过测试发现缺陷、增加信心、提供信息和预防缺陷的目的,会贯穿于整个开发生命周期,并且这些测试目的是相互支持和补充的,都有助于最终降低软件产品的风险,包括质量风险(产品风险)和管理风险(项目风险)。同时,开发过程和测试过程的不同阶段,其测试目的会有所不同,同时,不同利益干系人对测试目的的要求和详细程度也会不一样,应该将各种测试目的融合在每个阶段。