软件测试中如何定义测试用例的质量标准?
在定义测试用例的质量标准之前,先要了解设计测试用例的目的。测试用例是测试工作中最重要的元素或测试件(test ware)之一,是测试执行的基础。测试用例不仅能有效地帮助实施后继的回归测试、知识的传递和测试的管理等,而且更重要的是能更快、更有效地发现缺陷,确保测试的系统性和全面性,在测试的深度和广度达到所期望的目标。也就是说,测试用例的质量就是满足测试目标的程度,体现在 “测试覆盖率和测试执行效率”两个方面。所以,测试用例最基本的质量标准就是:
达到已定义的或所要求的测试覆盖率,如大于98%。
使测试执行的效率达到最好的水平,如最有效的途径并使60%以上的测试用例被测试工具执行。
但是,按照这样的标准,很难在测试执行前或执行过程中评估测试用例的质量,而不得不在执行完这些测试用例之后进行度量,特别是测试覆盖率。所以,理想的情况要求在测试用例设计过程中,可以按照某种特定的质量标准对测试用例进行复审(review)、实施评估。那么,这种特定的质量标准是什么呢?
根据多年的实践经验,测试用例的标准不能局限于一个层次,因为测试用例设计类似于软件设计,软件设计有架构设计(结构设计/概要设计)和详细设计,所以对于测试用例的质量标准,也应分为两个层次来考虑:
(1)高层次——满足某一个测试目标或测试任务来整体看测试用例,衡量一组测试用例的结构、设计思路和覆盖率等指标。
(2)低层次——从单个测试用例看,衡量其描述的规范性、可理解性和可维护性等指标。
大家都知道,测试用例是测试工作中最重要的元素,是测试执行的基础。测试用例不仅能有效地帮助实施回归测试和测试的管理等,而且更重要的是能更快、更有效地发现缺陷,确保测试的系统性和全面性。今天,我们就从两个方面来衡量测试用例的质量。
1.高层次的测试用例
<1> 测试用例的目标清楚,并能满足软件质量的各个方面,包括功能测试、性能测试、安全性测试、故障转移测试、负载测试等。
<2> 设计思路正确、清晰。例如,通过序列图、状态图、工作流程图、数据流程图等来描述待测试的功能特性或非功能特性。
<3> 在组织和分类上,测试用例层次清楚、结构合理。测试用例的层次与产品特性的结构/层次相一致,或者与测试的目标/子目标的分类/层次相一致,并具有合理的优先级或执行顺序。
<4> 测试用例覆盖所有测试点,也就是说每个测试点都有相应数量的测试用例来覆盖。
<5> 测试手段的区别对待。在设计测试用例时,就要全面考量测试的手段,哪些方面可以通过工具测试,哪些方面不得不用手工测试,对不同手段的测试用例区别对待。
<6> 有充分的负面测试。作为测试用例,不仅要测试正确的输入和操作,还要测试各种各样的例外情况,如边界条件、不正确的操作、错误的数据输入等。
<7> 没有重复、冗余的测试用例,满足相应的行业标准等。
2.合格的测试用例
<1> 测试用例的出发点是发现缺陷。
<2> 测试用例的单一性。一个测试用例面向一个测试点,不要将许多测试点揉在一起。
<3> 符合测试用例设计规范或测试用例模板。
<4> 描述清楚,包括特定的场合、特定的对象和特定的术语,没有含糊的概念和一般性的描述。
<5> 操作步骤的准确性,按照步骤的操作得到唯一的测试结果。
<6> 操作步骤的简单性。操作步骤不应该太复杂,过于复杂的操作步骤意味着测试用例需要被分解为多个测试用例或者分解为多个环节进行验证。
<7> 所期望的测试结果是可验证的,即能明确地判断测试的实际结果是否与所期望的结果相同或相匹配。
<8> 测试环境的正确性、测试数据的充分性。
<9> 前提条件、依赖性被完全识别出来。
这样,测试用例具有很好的可理解性和可维护性,可以提高测试执行的效率。并能保证不同的人员执行相同的用例能获得统一的结果。步骤的准确性和期望结果的可验证性,非常有助于测试执行的自动化实现。也只有实现了测试执行的自动化,测试执行的效率才是最高的,而且测试人员才有更多的时间去思考、去设计更优秀的测试用例,进入良性循环,相互促进,不断地提升测试的质量和效率。
文章来源于领测软件测试网 https://www.ltesting.net/