|
|
|
|
移动端

2.2 测试用例选择问题

《软件测试基础教程》第2章基于需求的测试生成,本章主要介绍从非形式化或形式化定义的软件需求生成测试集的技术。这些技术,有的可以自动地执行,而大部分则需测试人员付出艰辛的劳动,特别是在测试大型软件时。本章所介绍的大部分测试技术属于黑盒测试,因为生成测试集时不需参考被测软件的源代码。本节为大家介绍测试用例选择问题。

作者:王峰/郭长国/陈振华 等译来源:机械工业出版社|2011-09-17 21:23

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.2 测试用例选择问题

设D为软件p的输入域,测试用例选择问题是指:选取测试用例的子集T,以T中各元素为输入执行p,执行过程中将发现p中的所有缺陷。一般来说,不存在构造这种测试用例集合的算法,但运用启发式方法以及基于模型方法所生成的测试用例集合,还是能够有效地暴露部分特定类型的缺陷。因此,测试用例选择问题的关键在于:如何构造测试用例集合TD,使得采用集合T能够尽可能多地发现软件p中存在的缺陷。正如下面将要介绍的那样,测试用例选择问题之所以困难,主要原因在于软件p的输入域规模大、复杂程度高。

软件输入域(input domain)是指软件在执行过程中可能接收的全部合法输入的集合。软件的合法输入集合是由软件需求决定的。在许多实际问题中,软件输入域的规模非常庞大,可能包含很多元素,同时也很复杂,这些元素可能又具有多种类型,如整数、字符串、实数、布尔型以及结构。

在一般情况下,软件输入域规模非常之大,这就使得测试人员无法使用全部可能的输入值对被测软件实施穷举测试(exhaustive testing)。所谓穷举测试就是指测试人员逐个地使用输入域中的所有元素对软件实施测试。输入域的复杂性增大了选择测试用例的难度。下面两个例子说明了输入域的庞大和繁杂。

例2.1考虑程序P,其功能为将任意输入的整数序列按升序排列。假设程序P在整型取值区间为[-32768,32767]的计算机上运行,则所有由[-32768,32767]范围内的整数所构成的整数序列的集合就是程序P的输入域。

如果不限定输入序列的长度,则程序P的输入域是无限大的,根本不可能对其进行穷举测试。如果对输入序列的长度加以限定,取为任意自然数N>1,则N的取值将决定输入域的大小。用S表示输入域的大小,则有:

 

其中,v为输入序列中每个整数可能有多少种不同的取值,这里v=65536。根据上面的公式可以看出,即便N的取值很小,对于这个简单的排序程序来说,其输入域也非常之大。更具体地说,当N=3时,程序的输入空间就已大到无法对其实施穷举测试了。

例2.2考虑工资管理系统中的子程序P。P以雇员记录作为输入,计算雇员的周薪。简单起见,假设雇员记录由以下字段组成,每个字段有相应的类型和约束:

ID: int;ID是长度为3的数字,范围是001~999。

name: string;name是长度为20的字符串,字符串中的每个字符取自26个字母或空格。

rate:float;rate的取值范围为5~10美元/小时,以0.25美元的倍数递增。

hoursWorked:int;hoursWorked的取值范围为0~60。

程序P的输入域中的元素即为由上面所列4个字段构成的一条记录。这个输入域是非常庞大而又复杂的。ID字段共有999种可能的取值,name字段的可能取值多达2720个,rate字段可能的取值有21个,hoursWorked字段可能的取值为61个,最终可能形成的记录数为:

 

不难看出,这一次形成的输入域非常之大,穷举测试无法进行。需要注意一下,name字段可能的取值过多以及4个字段取值间的组合关系,是导致程序P输入域非常之大的主要因素。

事实上,对于大多数有意义的软件来说,其输入域都将远大于上文给出的实例程序。更进一步地讲,在一些情况下,由于输入与时序之间存在约束关系,使得即使描述软件输入域都非常困难。这是软件测试过程中无法避免的问题。因此,各种测试用例选择方法应运而生,测试人员运用这些方法从软件输入域中选择一个尽可能小的子集,以便达到测试软件的目的。本书将介绍这些测试用例选择方法,同时也将指出每种方法的优点与不足。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

网络工程师教程(第2版)

本书是全国计算机技术与软件专业技术资格(水平)考试的指定用书。按照新的网络工程师考试大纲的规定,本书包含了数据通信基础知识、网络体...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊