因果图法在ATE软件测试用例设计中的应用
2018-03-21马艳
马艳
(中国人民解放军92941部队,辽宁葫芦岛125001)
0 引言
软件测试作为软件生命周期的一个重要环节,对软件质量起着至关重要的作用。影响软件测试质量和效率的因素很多,如测试环境的搭建、测试人员的素质、测试工具和测试方法等,其中测试用例的设计和执行是核心步骤[1]。常用的黑盒测试用例设计方法中,等价类划分法和边界值分析法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系,这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合可能出错的情况却被忽视了。如果在测试时全面考虑输入条件的各种组合,则可能的组合数目将是天文数字。而因果图法能够根据输入条件之间的相互依赖和制约关系,准确、全面地覆盖各种条件组合,高效生成无遗漏、不重复的测试数据条件,因此受到越来越多的关注[2-5]。
1 因果图法的基本概念
因果图法是一种利用图解法分析输入(原因)和输出(结果)的各种情况,画出因果图,转换为判定表,从而设计测试用例的方法,适合于检查程序输入条件的各种组合情况[6]。
1.1 因果图的图形符号
因果图法的4种图形符号分别表示了软件需求规格说明书中的恒等、非、或、与4种因果关系(见图1所示)。
图1因果图的4种基本符号
1.2 因果图的约束关系
状态相互之间可能存在某些依赖关系,称为约束。输入条件的约束有E(异)、I(或)、O(唯一)和R(要求)4类。输出条件的约束只有M约束(强制),见图2所示。
图2因果图的约束符号
2 因果图测试用例设计方法
利用因果图法设计测试用例的方法如下[2]:
(1)分析软件规格说明描述中哪些是原因(输入条件),哪些是结果(输出条件),设计必要的中间节点,给每个原因、结果和中间节点赋予各自的标识符。
(2)分析软件规格说明描述中的语义,找出原因与原因之间、与结果之间、与中间节点之间的对应关系,根据这些关系画出因果图。由于语法或环境限制,有些原因与原因之间、与结果之间、与中间节点之间的组合情况不可能出现,为表明这些特殊情况,用相应的记号表明约束或限制条件。
(3)把因果图转换为判定表。
(4)把判定表的每一列拿出来作为依据,设计测试用例。
使用因果图法充分考虑到了输入情况的各种组合以及各个输入之间的相互制约关系,能够帮助软件测试人员按照上述步骤高效率地设计测试用例。另外,因果图法将自然语言的规格说明转化成形式语言的规格说明,可以发现规格说明描述中存在的不完整性和二义性,有助于软件需求规格说明书的完善。
3 因果图法在ATE软件测试用例设计中应用
以某型装备自动化测试设备(ATE)软件测试为例,其测试软件含9个测试项目,其中3个为静态测试项目(测试1、2、3,不需加电执行),6个为动态测试项目(测试 4、5、6、7、8、9,需加电执行和上传程序)。每个测试项目中又含有若干测试子程序,每个测试子程序通过点击测试软件虚拟面板上的测试按键组合来实现。以测试软件主界面上的按键组合为例,使用因果图方法设计测试用例。测试软件的输入和输出描述如表1所示。
表1测试软件的输入和输出描述
测试用例设计因果图如图3所示。其中,a1、a2、a3之间为“或”的关系,与a4之间分别为“非”和“与”(不需加电执行),执行则结果分别为r1、r2和r3;a5~a10之间为“或”,与a4和a11之间分别为“与”(需加电执行和上传程序),执行则结果分别为r4~r9;静态测试项目和动态测试项目、a11(上传程序)、a12(结束测试)之间为“非”,同时执行则结果为r11(空循环)。
图3测试用例设计因果图
把因果图转换为判定表如表2和表3所示。
表2静态测试项目判定表
表3动态测试项目判定表
根据判定表设计测试用例,生成测试用例36个,对被测对象覆盖全面且有效,如表4所示。
表4测试用例设计
4 结束语
设计出高覆盖率和低数量的测试用例可以有效地减少软件测试时间,提高软件测试效率。本文从充分考虑输入条件的各种组合、输入条件之间的相互制约关系方面出发,提出了基于因果图的测试用例设计方法,与传统的测试用例生成算法相比,因果图法可以准确、全面地覆盖各种条件组合,生成高效的测试用例集,进一步缩短软件测试执行过程的时间,在自动化测试设备的软件测试中起到了很好的作用。
[1]王吉茂,尹平,张慧颖.软件测试用例生成与约简算法研究[J].飞行器测控学报,2013,32(2):152.
[2]萧萍.基于因果图的测试用例设计及应用[J].软件导刊,2016,15(4):44-46.
[3]李莉.基于状态转换图的测试用例设计方法[J].软件产业与工程,2012,15(3):45.
[4]梁彦.功能测试用例设计的研究[J].信息通信,2013,125(3):5.
[5]林琳.基于黑盒测试的航天嵌入式软件用例设计方法[J].计算机工程与设计,2012,33(6):2272.
[6]徐芳.软件测试技术(第2版)[M].北京:机械工业出版社,2012