中国大学MOOC 软件测试 课程资源
软件测试的目的、原则、基本测试原理及特性准则
贺 平 撰文
1.软件测试的目的
软件测试是以发现软件的存在的缺陷、错误为第一目的,并藉此对软件的质
量进行度量评价。为达到此目的,测试活动的目标是最大可能的找出最多的错误或缺陷来。测试是从假定软件含有缺陷和故障的假设而进行的,实现这个目标的关键,是要科学合理地设计出最能暴露存在问题的测试用例,并通过测试用例来实现这个测试的根本目的。因此,软件测试活动也常常用下面三点来表述:
? 测试是程序执行过程,并限于执行处理有限的测试用例与情形,并发现
了错误;
? 检测软件是否满足软件定义的各种需求目标;
? 执行的测试用例发现了未曾发现的错误,实现成功的测试。
2. 软件测试的原则
依据软件测试的目的,通过实践归纳出了一些测试活动的原则。
? 尽早和及时的进行测试。测试活动应从软件产品开发初始阶段就开始; ? 测试用例要由测试数据与预期结果两部分组成,并包括测试的前置条件 或后置条件;
? 测试需根据软件需求和分析得来的风险,测试活动可由专业测试者进行 或程序开发者自行测试完成;
? 测试需要严格执行测试计划,排除测试工作的随意性;
引用本文内容敬请注明出处
中国大学MOOC 软件测试 课程资源
? 充分注意测试中的集群效应。实践经验表明,大量的统计结果分析表明 ,软件程序中约80%的错误仅与20%的程序有关。这就是所谓的‘8/2现象’,可以告诉测试者的重点关注应在哪里。
? 应对测试结果作核查,存档测试计划、测试用例、缺陷统计和分析报告 等文档,为软件运行时的维护工作提供足够的资料及测试条件。这里的软件维护是指软件交付使用后到来的Bug修复,软件变更、版本升级等过程,以及带来的相应测试活动。
3.软件测试的基本测试原理
软件测试产生和发展已达40多年了。经过长期地测试活动的实践和研究,已总结归纳出了一些基本的测试原理与测试特性准则,并被业界、机构普遍接受和遵循,这对测试的分析、设计、执行和管理工作均具有工程化的指导作用和意义。
测试原理1:测试可以证明缺陷存在,但不能证明缺陷不存在
测试可以证明软件系统(产品)是失败的,即说明软件中有缺陷。但测试不能证明软件中没有缺陷。适当的软件测试可以减少测试对象中的隐藏缺陷。即使在测试中没有发现失效,也不能证明其没有缺陷。
测试原理2:穷尽测试是不可能的
测试若考虑所有可能的输入值及其组合,并结合所有的前置条件进行穷尽测试是不可能的。实际测试过程中,对软件测试基本上是抽样测试。因此,必须根据风险和优先级,控制测试工作量。
测试原理3:测试活动应尽早开始
在软件生命周期中,测试活动应尽早实施,,并聚焦于定义的目标上,这样
引用本文内容敬请注明出处
中国大学MOOC 软件测试 课程资源
可以尽早的发现缺陷。
测试原理4:缺陷的集群性
在通常情况下,缺陷并不是平均而是集群分布的,大多数的缺陷只存在于测试对象的极小部分中。因此,如在一个地方发现了较多缺陷,通常在附近会有更多的缺陷,这就是所谓的缺陷集群性,也就经常所说的‘8/2现象’,80%的缺陷集中在20%的程序模块中。因此,在测试中,应机动灵活地应用这个原理。
测试原理5:‘杀虫剂’悖论
若同样的测试用例被一再重复执行,则会减少测试的有效性。先前没有发现的缺陷反复使用同样的测试用例也不会被重新发现。因此,为了维护测试的有效性,战胜这种“抗药性”,应对测试用例进行修正或更新。这样软件中未被测试过的部分或先前没有被使用过的输入组合会被重新执行,从而发现更多的缺陷。
测试原理6:测试依赖于测试内容
测试必须与应用系统的运行环境及使用中固有的风险相适应。因此,没有两个系统可以完全相同的方式进行测试。对于每个软件系统,测试出口准则等应依据其使用的环境分别量体定制。例如,对安全起关键作用的系统与一个电商应用系统所要求的测试是不尽相同的。
测试原理7:没有失效就是有用的系统是一种谬论
测试找到了导致软件失效的Bug,并修正了缺陷或错误,但并不能保证整个系统达到了用户的预期要求和需要(软件)。因此说没有发现软件失效的情况就是有用的系统,这是一种谬论。
引用本文内容敬请注明出处
中国大学MOOC 软件测试 课程资源
4.测试特性准则
根据上述的七条测试原理,归纳抽象,并得到了软件测试的一些特性准则。
这些测试特性准则将对测试需求、测试分析、测试计划、测试执行和测试管理等方面提供理论依据,指导测试工程的准确、高效和降低成本。
?
对任何软件(产品)系统都存在有限的充分测试集合。
若一个软件系统在一个测试数据(测试用例)集合上的测试是充分的,
?
那么再测试执行一些测试用例也是充分的,这一特性称作测试的单调性。
?
即使对软件所有的组成成分都进行了充分测试,也并不能表明整体软件
系统的测试已经充分,这一特性称作测试的非复合性。
?
即使对软件系统整体的测试是充分的,也并不能证明软件系统中各组成
成分都已得到了充分测试,这个特性称作测试的非分解性。
?
软件测试的充分性应与软件需求及软件实现相关。测试充分性和软件需
求、实现相关联。
?
软件越复杂,测试数据需用就越多,这一特性称为测试的复杂性。 测试越多,进一步测试所获充分性增长就越少,这一特性称作测试回报
?
递减率。
主要参考文献
1. 《软件测试教程(第3版)》,贺平,电子工业出版社,2014 2. ISTQB-Certified Tester -Foundation Level,2011版
引用本文内容敬请注明出处