1 背景

测试活动中,常涉及三个术语,即:测试用例(test case)、测试规程(test procedure)、测试脚本(test script)。

在一个组织内部,大家对术语的所指有共同的认识,因此使用起来没有歧义。然而,在更大范围交流时,则会发现理解并不相同。

本文对这三个术语进行辨析。

2 测试用例 vs 测试规程

2.1 术语定义

测试用例(test case)和测试规程(test procedure)这两个术语,在RTCA DO-178C、IEEE 1012-2016、ISO/IEC/IEEE 29119等标准、规范中的定义基本一致。

在DO-178C中,定义如下:

测试用例Test case: A set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exercise a particular program path or to verify compliance with a specific requirement. 为特定目标开发的一组测试输入、执行条件和预期结果,例如执行一条给定程序路径或验证对特定需求的符合性。

测试规程Test procedure: Detailed instructions for the set-up and execution of a given set of test cases, and instructions for the evaluation of results of executing the test cases. 设置和执行给定测试用例集的详细指令,以及评估测试用例执行结果的指令。

2.2 追溯关系

DO-178C要求对测试用例、测试规程及其相关生命周期数据建立如下双向追溯:

(1)软件需求和测试用例;

(2)测试用例和测试规程;

(3)测试规程和测试结果;

追溯关系如下图所示。

2.3 说明

结合上述定义和追溯关系,可以更加清晰的理解测试用例和测试规程的关系。即:

(1)测试用例是面向需求的。测试用例定义了需求是否被正确实现的评价准则。通过评审测试用例,可以获得需求是否被正确的测试,以及是否满足了测试覆盖准则。

(2)测试规程是面向执行的。测试规程详细规定了测试用例如何被执行、如何评估测试结果。测试规程的重点是可执行、可复现,执行给定的测试规程,应获得确定的测试结果。

(3)测试规程基于测试用例产生。测试用例基于需求产生,一般不具备可执行性。基于测试用例产生测试规程,需要补充系统的实现信息(典型如接口数据的详细定义)以及测试执行环境信息,从而使测试规程可执行。

3 测试规程 vs 测试脚本

测试规程(test procedure)和测试脚本(test script)都用于测试执行。一般来讲,二者区别在于:测试规程用于人工测试执行,测试脚本用于自动化测试执行。

测试规程用于人工执行,因此要求较好的可读性;同时在内容表达上灵活度更大,可以加入注释等辅助信息,这就可能导致测试规程在语法上有随意性,存在语义不精确问题。与此相对,测试脚本用于程序执行,符合语法要求,不需要人为解释,语义清晰;同时这也带来内容表达形式上的严格约束,并且对相关的数据、系统有较高结构化要求。

测试脚本可以是基于Python、Lua或领域特定语言(DSL)等编写的程序代码,也可以是数据表。实际中,测试规程和测试脚本的界限并非泾渭分明,良好结构化的测试规程也可以支持自动化测试。

4 与测试环境的关系

测试规程或测试脚本的执行,都需要测试环境的支持。测试环境为被测对象(软件或系统)构造交联环境,施加激励,并获得被测对象的响应,从而完成测试执行。

测试环境可以是硬件在环(HIL)的物理台架,也可以是基于软件构造的虚拟系统。

测试规程或测试脚本需要依赖测试环境才能完成测试,这必然导致测试规程(测试脚本)与测试环境存在耦合。然而另一方面,测试环境往往由不同供应商提供,甚至针对同一个被测对象,需要建设多套不同的测试环境,这就导致希望测试规程(测试脚本)与测试环境解耦,以实现测试规程(测试脚本)的重用。

测试用例仅与需求相关,因此与测试环境无关。

测试规程的执行是面向被测对象的,可以从被测对象的输入、输出角度进行描述,即实现基于信号的测试(相对于基于仪器的测试),从而也能够实现与测试环境的解耦。

测试脚本需要程序化执行,需要调用测试环境的接口实现数据访问。在实践中,可以通过规范测试环境的外部接口,使得测试脚本与具体的测试环境无关,实现一套测试脚本在不同测试环境上执行,从而与测试环境解耦。

5 用例、规程、脚本的转换

从前文可知,测试用例和测试规程之间,存在着需求到实现的信息缺口。基于需求开发的测试用例,需要增加实现信息,以获得可执行的测试规程,其中一个主要内容,是将测试用例中的输入、输出数据映射为实现的详细数据定义。当具备上述数据映射关系时,即可以实现测试用例到测试规程的自动转换。

测试规程与测试脚本的转换,则与具体的测试活动相关。如果测试规程的执行依赖于人工操作与观测,则本身不具备自动化条件。当前,随着测试环境自动化水平的提高,越来越多的人工操作与观测可以自动化执行,使得测试规程能够更大比例的转换为测试脚本,实现高效的自动测试。

6 总结

本文依据DO-178C、ISO/IEC/IEEE 29119等标准规范以及工程实践,对测试用例、测试规程、测试脚本进行了简要辨析。

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: