收稿日期:20120711;修回日期:20120827 基金项目:国家自然科学基金资助项目(61103051);浙江省自然科学基金资助项目
(Y1101237)
作者简介:周冲波(1990),女,浙江宁波人,学士,主要研究方向为软件测试、软件可靠性;楼俊钢(1982),男,浙江义乌人,副主任,讲师,博
士,主要研究方向为软件可靠性建模、可信计算、系统性能评测等(loujungang0210@hotmail.com);程龙(1989),男,河南光山人,学士,主要研究方
向为软件测试、云计算.
基于矩阵行列变换的测试用例约简算法
周冲波,楼俊钢,程 龙
(湖州师范学院 信息与工程学院,浙江 湖州 313000)
摘 要:针对测试用例约简问题,定义了一种不会改变测试需求与测试用例覆盖关系的布尔运算。应用此运
算,辅以不同的测试需求、用例集优先策略,经矩阵的列变换得到精简的测试需求集,然后使用行变换对测试用
例集进行约简。该方法不受测试用例输入顺序的影响。实验表明,与一些常用的约简算法相比,提出的算法在
有序树生成程序测试用例约简的几个实例上都能得到较优的用例集。
关键词:软件测试;测试用例;测试需求约简;测试用例约简
中图分类号:TP311 文献标志码:A 文章编号:10013695(2013)03077904
doi
:10.3969/j.issn.10013695.2013.03.035
Testsuitesreductionbasedonmatrixtransformation
ZHOUChongbo,LOUJungang,CHENGLong
(CollegeofComputerScience&Technology,HuzhouTeachersCollege,HuzhouZhejiang313000,China)
Abstract:Inallusiontotheproblemoftestrequirementsreduction,thispaperdefinedanewBooleanoperationoftherela
tionshipswhichdidn’tchangethecoverageoftestsuitestotestrequirements.Redundancerequirementswasreductedbycol
umntransformationoperationofmatrixbasisoftheinterrelationsamongthetestingrequirements
,thentestsuitescouldbere
ductedbyrowtransformationoperationofmatrix.Theexperimentalresultsbasedonseveralcasesshowsthat,comparedwith
someotherexistedmethods,thismethodhasbetterpropertythatcangeneratetheminimaltestsuitetotestallthetestrequire
mentssufficiently.
Keywords:softwaretesting;testsuites;testsuitesreduction;testrequirementsreduction
!
引言
测试用例的约简问题可以描述为
[1~3]
:给出一个测试用例
集 T,一个测试用例需求集 R,R满足给定程序要求的某种测
试覆盖准则,T可以完成对 R中所有 r
i
的测试,要求从 T中找
到一个测试用例优化集可以满足所有 r
i
的测试,需要在大量
的测试用例中筛选出最优的测试用例,即能用最少的测试用例
覆盖最多的测试需求。
最常见的测试用例约简方法有贪心算法
[4,5]
、启发 式算
法
[6]
、整数规划算法
[7]
以及扩张集算法
[8,9]
等。贪心算法 (简
称 G算法)每次将满足测试需求 R最多的一条测试用例选取
出来,从 R中删除已被该测试用例满足了的测试需求,在剩余
的测试用例中反复执行,直到满足所有的测试需求,即
R为空
集
[4]
。在此基础上,Chen等人提出了 GE和 GRE算法
[5]
。GE
算法改进了贪心算法,首先找出某项需求仅能被唯一一条测试
用例满足的对应测试用例,即必不可少测试用例,再使用贪心
算法进行约简。GRE算法反复地选取出必不可少测试用例,
剔除 11冗余测试用例,再使用贪心算法进一步地约简测试用
例。Harrold等人提出了一种启发式算法,按照测试用例的重
要程度来约简测试用例集(简称 H算法)
[6]
。该算法将测试需
求进行划分,若某项需求 r
k
能被 i条测试用例满足,则划分至
R
i
,由此得到一个新的测试集合 R
1
,R
2
,…,R
d
(d
≤
n)。由 R
1
得到必不可少测试用例,然后从 R
2
开始,选择能最大限度满足
需求的测试用例,即运用贪心算法。以此类推,从剩余
R中依
次取得最优的测试用例。
这几种算法都是对测试用例集的简化策略,它们的效果取
决于初始化的测试用例集,不能从根本上保证根据测试目标对
测试用例进行最优化。测试用例集是根据测试需求来确定的,
如果不考虑测试需求集的精简而只着眼于测试用例集的算法
研究,所取得的效果将很有限
[8]
。为此,许多研究人员建议在
简化测试用例前先进行测试需求的约简。如聂长海等人
[10]
首
先充分考虑测试目标中测试需求之间的相互关系,对可用测试
用例进行划分,生成一个测试用例集,再利用启发式、贪心、整
数规划方法消除冗余,进行进一步优化,从而提出一种最小测
试用例集生成方法;章晓芳等人
[11]
着重考虑了测试需求间的
相互关系,提出一种基于测试需求约简的测试用例集优化方
法。然而这些方法约简测试需求的过程十分频琐,先去除包含
关系的需求,再利用部分重合关系进行一步约简,无法一步到
位,并且也不能保证每次都得到最简的测试用例集。
本文参考 Quine和 McCluskey在对布尔函数进行代数化
简法时提出的 QM方法
[12,13]
,即用 01来表示测试用例与测
试需求之间的关系。为了保证算法不受测试用例排列顺序的
影响,并且尽可能实现对测试用例更优更准确的选择,定义了
第 30卷第 3期
2013年 3月
计 算 机 应 用 研 究
ApplicationResearchofComputers
Vol.30No.3
Mar.2013