基于程序规则说明的自动测试用例生成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2005211209
作者简介:金虎(1974-),男,2003级博士研究生,研究方向为计算机网络,网络安全,软件下载.文章编号: 049026756(2006)0420768205
基于程序规则说明的自动测试用例生成
金 虎2,李志蜀2,李 奇1
(1.四川师范大学软件重点实验室,成都610066;
2.四川大学计算机学院,成都610064;
3.成都信息工程学院计算机系,成都610041)
摘要:自动测试过程中,在特定测试标准下生成的测试用例的质量优劣,将极大地影响测试的
性能和结果.作者结合基于程序规则说明的两种测试方法———随机测试技术和决策表技术,利
用决策表形成完备的测试标准,保证随机生成的测试用例的充分性,完成测试用例的自动生成
过程.研究内容分为如下4个部分:(1)基于软件规则说明的自动测试技术分析;(2)对程序规
则说明生成决策表方法的测试标准;(3)结合随机测试数据生成和决策表技术对自动生成测试
用例进行分析,比随机生成测试用例方法有更好的效果.
关键词:规则说明;决策表;自动软件测试
中图分类号:TP393 文献标识码:A
软件测试是在特定条件和标准下对软件进行验证的行为.通过构造测试数据运行软件以找出软件中的缺陷和错误是种基本的测试方法.手工构造测试数据费时而且工作量大,因此自动测试技术受到广泛关注.自动测试通常包括3个部分[1]:(1)测试用例的自动生成;(2)使用测试用例对测试程序的执行;(3)将运行结果与测试预测比较得到测试结果评测.在基于程序规则说明的自动测试技术研究中,自动测试过程还没形成公认的标准,存在下述的问题:(1)测试标准的选择;(2)测试用例生成的充分性;(3)自动测试过程的设计.这些问题增加了自动测试过程实现的困难.没有确定的测试标准,就无法判定测试用例集的充分性,也就不能决定自动测试过程该何时结束.
针对上述问题,我们利用功能测试方法中的决策表技术帮助选择测试标准,
用以对测试用例充分性的图1 基于程序规则说明的软件测试过程Fig.1 S pecification 2based SW testing process
保证,并作为自动测试过程的结束条件.
1 基于软件规则说明的自动测试技术
测试是在特定的条件和标准下的一系列行为.
在基于程序规则说明的测试过程中,程序规则说明
是测试的基础,程序的实现和测试都根据规则说明.
基于程序规则说明的测试过程如图1所示.
基于程序规则说明的测试方法近来受到广泛的
关注,具有开放、灵活和易于过程控制等许多优点.
但传统程序规则说明的表示并不严密,甚至可以是
自然语言描述,难以实现自动测试过程.实际研究
中,常用有三种形式化的表示方法:基于模型的规则
2006年8月
第43卷第4期四川大学学报(自然科学版)Journal of Sichuan University (Natural Science Edition )Aug.2006Vol.43 No.4
说明测试技术,代表性语言是Z 与VDM ;基于状态的规则说明测试技术,强调对软件系统的状态和状态转移的描述;基于属性的规则说明测试技术,强调对于功能模块关系的语法分析.我们使用第一种方法进行描述.
2 决策表技术用于测试用例充分性判定
测试用例被定义为输入/输出对,输入是出现在程序输入指令中的变量,输出则是程序的运行结果或行为.自动测试过程中,从形式化的软件规则说明生成测试用例是一个关键问题,不完备的测试用例无法保证测试结果的可靠性,将直接影响测试结果的有效性.
定义1 设程序Q 的所有输入变量为x 1,x 2,…,x n ,其中x i ∈Dx i .则称D =Dx 1×Dx 2×…×Dx n 为程序Q 的输入域空间.程序Q 一次实际的合法输入对应于输入域D 空间上的一点x ∈D [2].
对于确定的程序,其输入变量空间的数据集合通常是无限的.采用穷举输入域空间的方法,虽然可以保证完备性,却因为此空间太大而缺乏可行性,还将导致产生大量的冗余测试用例.
自动生成测试用例总是在一定的策略和标准下进行.代码测试技术中测试标准相对成熟,有明确的测试指标.比如代码执行路径的覆盖率,DD 路径覆盖,突变测试标准等.但在基于程序规则说明测试方法中,并没有像代码测试中这样明确和公认的测试标准,因此,需要确定能有效判断测试用例充分性的标准.
程序规则说明是以外部观点来看待软件,被测试程序被看作是从程序的输入空间到输出空间的作用函数FUNC :D ϖF ,D 是定义1中的输入域,F 是程序的行为或结果的全集.基于程序规则说明的测试就是验证被测试程序能否完整和正确实现规则说明所描述的功能.
定义2 设程序Q 在测试数据集T 上执行,并且实现了功能F ,如果满足Πt ∈T :if Q (t )=F (t )]Πt ∈D :Q (t )=F (t ),则称测试数据集T 是可靠的,其中T 功能测试是把程序看作从输入变量空间到输出变量空间的函数f :(X 1,X 2,…,X m )ϖ(Y 1,Y 2,…,Y n ). 随机测试数据生成器[3]函数在被测试程序的规则说明中构造输入变量空间的子集T 定义3 设程序Q 的规则说明中P (X 1,X 2,…,X n )是程序输入变量必须满足的命题逻辑条件,如果测试数据集T 是可靠的,并且在T 上能满足P ,则T 是测试充分的. 形式化的规则说明不仅能得到程序的输入和输出变量空间,还以命题逻辑为基础,将程序的实现条件表示为逻辑表达式.例如,当输入变量I =(X 1=x 1,X 2=x 2,…,X m =x m )时,如果满足条件P 1(X 1,X 2,…,X m ),则程序实现功能F 1. 对于测试用例来说,如果能实现规则说明中的所有条件组合和功能覆盖,则测试数据集就是充分的.因此对测试充分性标准从对输入域空间的判定转换为对具体命题逻辑公式值的覆盖.为被测试程序构造充分的测试用例集合,可通过扩大程序规则说明中的命题逻辑条件表达式限制来实现.命题逻辑条件是其子句机械产生出的所有组合的子集. 定理1 设程序为Q ,其输入域空间为D ,实现的功能为 F.如果测试用例集T ’是完备的,则T ’必然是测试充分的. 证明 如果测试集合T ’不是测试充分的,则程序Q 在测试用例集T ’上的执行,或者不能实现规则 967第4期金虎等:基于程序规则说明的自动测试用例生成