0 引言
黑盒测试方法是一种从软件系统的功能说明书出发去寻找软件错误的测试方法,测试软件系统功能。与白盒测试方法不同,黑盒测试方法不关注软件的逻辑结构,将待测试的软件看作一个黑盒子,只关注软件功能的实现。常见的黑盒测试方法有:随机测试、等价类划分、边界值分析和因果图等。
1 常用黑盒测试方法
1.1 随机测试
该测试方法仅仅依靠测试者的直觉和个人经验去设计测试用例,对软件进行随机测试,因此较难发现错误,效率较低,大型软件一般很少使用。
1.2 等价类划分
该方法是从软件输入数据的限定条件出发,或者从软件的输出数据倒推输入数据的特性,从而划分为不同的类别,每一个类别称为等价类,每个等价类中可选取一组数据作为该等价类的代表,对系统进行测试。如系统要求输入的数据为0~5之间的整数,就可划分出3个等价类:小于0的整数;0~5的整数;大于5的整数。
1.3 边界值分析
此方法通常结合等价类划分方法一起使用。系统在边界处产生错误的概率较大,因此有必要对边界处加强测试。选取的测试数据可以略大于、略小于或等于边界值。对上述等价类的例子而言,可设定-1、0、1、4、5、6进行测试。
1.4 因果图
与等价类划分和边界值分析方法相比,因果图方法既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,效率较高。它将自然语言描述的规格说明转换为类似数字逻辑电路的因果图。步骤如下:
①将功能说明书分解成片段。将输入条件分成若干组,分别对每个组使用因果图,减少输入条件组合的数目;
②识别原因和结果,并加以编号。原因是指输入条件或输入条件的等价类,结果是指输出条件或系统变换。每个原因和结果都对应于因果图中的一个结点,当原因或结果成立(或出现)时,相应结点的值为1,否则为0;
③根据功能说明中规定的原因与结果之间的关系画出因果图;
④根据功能说明在因果图中加上约束条件;
⑤根据因果图画出判定表;
⑥为判定表的每一列设计一个测试用例。
2 优化测试用例数量的黑盒测试方法
前述黑盒测试方法测试用例数量有时过多,有必要采用化方法选取有代表性的测试用例来提高发现错误的概率。
2.1 分类树方法
该方法与等价类划分类似,不同之处在于分类树方法是用树状图来表示各类别。
操作步骤如下:
(1)从软件系统的功能说明书中识别出不同的类别。以求两数中较大数的程序为例:假设程序要求的输入文件是File,File接收两个数据a和b。计算a-b的结果,由得到的结果判断两数的大小。因此,输入文件File有3个类别:不存在、存在但为空文件、存在但非空。a-b的值也可分为3类:大于0、小于0、等于0。
(2)根据得到的类别构造分类树。
(3)根据分类树的结点设计测试用例表。
(4)从用例表中挑选可行的测试用例。
本文以企业员工考勤系统为例探讨分类树设计测试用例的方法。此考勤系统的功能说明书如下:
(1)统计企业每月考勤结果。员工平时上下班刷卡的时间记录在考勤系统中。根据考勤记录统计员工的出勤情况。每个员工都有一个ID,可唯一识别员工的个人信息,如员工的姓名、岗位、工资等信息。
(2)在考勤系统界面上输入员工ID,系统information文件中存放员工个人信息,根据该文件可识别员工的权限,如果ID号码不合法,或是离职员工,系统将提示
“无法统计出勤情况”。在职员工分为两类:一类是普通员工,需进行功能说明书第3步的操作;另一类是特权员工,如总经理等级别的员工,常因出差、招标等原因外出,因此考勤可以适当放宽,执行功能说明书第4步操作。
(3)上班时间为早上9:00到下午5:00,刷卡时间允许前后波动15分钟。普通员工一个月内最多可迟到3次。超过3次,每超过1次扣除员工月工资总额的1/30。假设刷卡时间为time,月工资为salary,迟到次数为count。迟到次数小于3次,系统提示“无迟到记录”;迟到次数等于3次,系统提示“本月迟到达到3次”;迟到次数大于3次,系统计算本月应扣除工资:salary/30×(count-3),并将结果显示出来。
(4)特权员工刷卡时间不作为考勤的唯一标准。统计此类员工考勤信息时,系统弹出“特权员工不按照普通员工的考勤考核办法”。
根据考勤系统的功能说明书,可以分析得出系统的不同类别,如下表1所示。
表1 考勤系统的分类和类别
分类 对应类别
information文件的状态不存在,存在但是空文件,存在但不空
员工ID状态无此ID,有此ID
ID的权限普通员工,特权员工
迟到次数<3,=3,>3
由表1可知,每个分类分别有3、2、2、3个类别,将这些类别分别组合,可知该系统的用例总数为3×2×2×3=36个。但其中有些用例是不合法的,比如:“information文件的状态”如果是空,则不可能与“员工ID状态”这个分类进行组合。此类不合法的测试用例无需进行测试。因此实际测试用例少于36个。
构造系统分类树,如图1所示。
该分类树中图形含义如下:①圆点表示开始,代表根结点,表示系统的输入域。位于顶点下方的“information文件的状态”为顶层分类;②矩形框表示按照功能说明进行的分类(即表格1中第一列的项目);③分类树的终端即叶子结点用列(竖线)来表示;④分类树中的每一行代表一个测试用例 。
分类树下方用横线隔开,每一行可以设计一个测试用例。可设计如下7个测试用例:①输入information文件状态为“不存在”,预期输出:考勤系统弹出错误提示;②输入information文件状态为“存在但为空”,预期输出:考勤系统弹出错误提示;③输入information文件状态为“存在但不空”,员工ID状态为“无此ID”,预期输出:考勤系统弹出“无法统计出勤情况”的提示;④输入:information文件状态为“存在但不空”,员工ID状态为“有此ID”,ID的权限为“特权员工”,预期输出:考勤系统弹出“特权员工不按普通员工的考勤办
法考核”;⑤输入:information文件状态为“存在但不空”,员工ID状态为“有此ID”,ID的权限为“普通员工”,迟到次数count小于3,预期输出:考勤系统弹出“无迟到记录”;⑥输入:information文件状态为“存在但不空”,员工ID状态为“有此ID”,ID的权限为“普通员工”,迟到次数count等于3,预期输出:考勤系统弹出“本月迟到达到3次”;⑦输入:information文件状态为“存在但不空”,员工ID状态为“有此ID”,ID的权限为“普通员工”,迟到次数count大于3,预期输出:考勤系统显示员工本月应扣工资金额。
由图1可知,由分类树设计的7个测试用例,相比原先由组合关系得到的36个测试用例,数量明显减少,根据系统的输入数据域,可全面测试系统功能。
图1 考勤系统分类树
2.2 正交试验设计
正交试验设计(Orthogonal experimental design)是研究多因素多水平的一种设计方法,它根据正交表从全面试验中挑选出部分有代表性的点进行试验。正交表是均衡分散的,在减少测试用例的同时,也能对软件进行全面的测试。
在正交测试中,次数(Runs)表示测试用例的个数;因素数(Factors)表示影响某结果的变量个数;水平数(Levels)表示每个因素取值的个数;正交表的表现形式记为:Lruns(1evelsfactors)。
其操作步骤如下:①找出与软件系统输出结果相关的因素与水平;②根据不同的因素和水平,选择适当的正交表。如果影响软件的水平数相同,因素数刚好符合正交表,则直接选用该正交表。如果水平
数相同,但在正交表中找不到相应的因素数,则取因素数最接近但略大实际值的表;③将正交表转化为含有因素的测试用例方案。
3 结语
分类树方法与等价类划分相似,但主要采用树形图来设计测试用例,可以减少用例数量。此方法对测试者软件项目经验要求不高,而且可以不依赖自动化工具即可进行测试。正交试验设计法也可以优化用例的数量。该方法由正交表来设计测试用例,减少试验次数。但利用正交试验设计法有时因素数和水平数与正交表不会恰好相符,有一定的误差。本文两种方法各有优点。
参考文献:
\[1\] 段力军.软件产品黑盒测试的测试用例设计[J].测试技术学报,2007,21(2):160-162.
.Education, IEEE Transactions on Issue Date : Feb.2004,47(1):42-50.
[3] 郭学品,钟声,黄成.软件测试用例设计分析[J].海南广播电视大学学报,2010(4):16-19.