测试用例自动生成方法的现状及研究

  • 格式:doc
  • 大小:32.00 KB
  • 文档页数:9

测试用例自动生成方法的现状及研究作者:马亮张刚来源:《现代电子技术》2008年第06期摘要:软件测试数据生成在软件系统开发费用中占很大比重。

如果该过程能自动实现,则会极大地减少软件开发的周期和费用。

测试用例的生成工作包含选定被测任务、分析输入数据、确定其取值并分析对应的输出数据。

其中分析对应的输出数据是决定测试是否成功的关键环节。

测试用例选取的一个中心原则,就是以用最少的测试用例找到尽可能多的错误。

目前的工具尚不能完成自动生成测试用例这个环节,往往是只能采用人工选取的方法。

按所采用的方法和研究对象的不同,将测试用例自动生成方法主要分为5类:基于有限状态集的测试,基于标注的转换系统的测试,针对面向模型的需求规格说明的测试,针对面向对象软件的测试,以及运用模型检查生成测试用例的方法。

在简单介绍前4种方法之后,重点对模型检查的方法进行详细的分析和探讨。

关键词:测试用例;自动生成;模型检查;形式化建模中图分类号:TP311 文献标识码:A文章编号:1004-373X(2008)06-126-04Research on Status ofAutomated Test Case Generation MethodMA Liang,ZHANG Gang(China Aerospace Engineering Consultation Center,Beijing,100037,China)Abstract:It costs much money that software test data generation in software development.If this process can realize automatically,it will reduce period and money a lot in software development. Test case generation includes of choosing the object tested,analyzing the data input,making sure the value of the data and analyzing the relevant data output.It is key of analyzing the relevant data output that decides whether test is successful or not.The central principle of choosing test case is that it can find more error using less of test case.At present,there are few tools that can generate test case automated completely.Now,people always do it man-made.Based on the difference of the methods and object researched,it has five methods of automatically testing case generation.It includes that test based on finite state,test of transformation system based on label,test aiming at model-oriented requirement specifications,test aiming at object-oriented software and method of automated test case generation by model checking.After some brief introduction of the four methods before,it gives more information about the method of model checking here.Keywords:test case;automated generation;model checking;form modeling通过对目前测试用例自动生成方法的研究现状进行调研,国外的一些机构和组织在测试用例自动生成方法这一领域已经开展了大量的研究工作,例如美国国家标准局(NIST),并取得了阶段性的研究成果,有些研究组织正努力将测试用例自动生成方法运用于实践中。

目前国内对自动生成测试用例方法的研究还处于起步阶段,与国外相比,存在一定的差距。

国内一些高校和研究机构,例如,国防科技大学、南京大学、中科院软件所,正在进行利用形式化方法进行安全性保障的单元技术研究。

在软件领域,形式化方法最初用于对高可靠性软件进行形式化验证,由于其在验证软件特性时可生成反例的特点,逐渐被用于测试用例的生成中。

模型检查技术是目前形式化方法在实际运用中的常用形式,基于需求的运用模型检查自动生成测试用例的研究已广泛开展。

本文将针对运用模型检查生成测试用例的方法的优缺点及其原理,主要技术途径进行着重的介绍和分析。

1 特定领域生成测试用例方法现状测试用例的设计和编制是软件测试中最重要的活动。

测试用例是测试工作的指导,能有效地保障软件测试的质量,也是评估测试结果的度量基准。

目前的测试用例设计的手段主要以手工方式为主,已有一些关于测试用例自动生成方法的研究。

在运用手工方式设计测试用例时,存在测试用例的设计过程不规范的问题。

同时,设计的用例的输出结果的正确性(即根据测试输入数据得到测试的输出数据)还需要通过人工结合需求进行判定来保证。

由于软件的复杂性,以目前的测试技术水平发现软件中的所有错误是不可能的,而且软件错误在所难免,如何提高对软件进行测试的充分性是目前要解决的一个问题。

目前正在研究的主要几种类型的方法有:(1) 基于有限状态机的测试;(2) 基于标注的转换系统(LTS)的测试;(3) 针对面向模型的需求的测试;(4) 针对面向对象软件的测试;(5) 运用模型检查的测试。

以上的一些方法已有与之对应的原型工具,有些已经投入到实验中,另外,当前已有一些商业化的测试辅助工具,支持自动生成测试用例的功能。

在以上5种测试用例自动生成方法中,除模型检查方法之外,其他4种方法主要适用于特定的应用领域。

基于模型检查的测试用例生成方法是目前被广泛研究的一种确认测试用例生成方法,已有一些阶段性的研究成果。

1.1 基于有限状态机的测试对有限状态机(FSM)的测试是一个广为人知的研究课题,可以追溯到E.F.Moore 的早期研究:“顺序机的想象实验”。

但此方法的实际应用则是在方法提出很久以后,主要应用于对协议的一致性测试。

通常以有限状态语言定义有限状态机中的状态以及状态的有限集合的值,并对有限状态机中的状态迁移加以描述。

其测试方法是:给定一个需求状态机A的全部信息(状态迁移图或状态表格)和一个针对需求的实现的状态机B,通过将测试序列应用到B,观察输出结果,检验B是否是A的正确实现[1]。

基于有限状态机的测试的应用的领域较小,但其思想常体现在需求描述和形式化建模中,针对需求的描述方法中就有状态图描述法。

实际上,根据需求建立的形式化模型可以看作一个有限状态机。

1.2 基于标注的转换系统的测试标注的转换系统(LTS)主要用于描述以特定的需求规格说明语言定义的系统行为,例如,程序代数(如LOTOS)是一种语义模型为LTS的运用广泛的语言。

一个标注的转换系统(LTS模型)包括状态和状态之间的标注的状态迁移,以状态模拟系统的状态,以状态迁移对系统与系统周围的环境发生的交互进行模拟。

LTS模型通常以图或树的形式描述系统行为以及改变系统状态的事件,其中边被标注为事件,代表状态迁移,而节点代表状态。

针对LTS系统,已开发出许多测试工具,这些测试工具都是基于ioco测试理论,其中一个比较著名的工具是TorX[2]。

基于标注的转换系统的测试的思想与基于有限状态机的测试的思想类似,将系统看作一个有限状态机,系统由状态和状态迁移组成,由于此方法主要应用于以特定的需求规格语言(如程序代数)定义的系统,比较紧密的结合这些特定的需求规格语言的特性,不具有通用性,应用到常用的需求中存在难度。

1.3 针对面向模型的需求规格说明的测试面向模型的语言,如VDM-SL,Z,B通过描述系统的状态,以及改变状态的动作建立行为模型。

通常用集合、序列、关系,以及函数来描述系统中存在的状态,而以前置条件,后置条件的形式定义的语法来描述系统的动作。

这种类型的测试方法主要有BZ-TT方法,其他一些相应的方法主要有基于Z语言的方法,基于VDM-SL的方法。

在其他一些提出的解决方案中,将转换包含到了逻辑设计模型中,如Prolog,其优点在于不需要通过设计特定的解决方案生成测试用例,由语言本身的特性来实现测试用例的生成[3]。

这种方法目前还处于理论研究阶段,在实际中的运用很少。

1.4 针对面向对象软件的测试目前大多数的软件系统采用传统的结构化方法进行设计,即面向结构的软件,例如目前的航天型号软件,基本都是通过结构化方法进行设计开发,很少采用面向对象方法进行设计和开发。

目前在软件开发领域,面向对象方法已被广泛接受与运用,出现了大量的运用面向对象方法开发的软件。

测试面向对象的程序和测试结构化方法设计出的程序有很大的差异,因为,在一种环境下某一个被充分测试的面向对象组建在任何其他的环境中不一定意味着其已经被充分的测试到。

因此,出现了许多特定的针对面向对象软件进行测试的研究。

目前此领域的研究进展如下:OZTest是针对面向对象程序的半自动的生成测试用例的框架,以Object-Z作为形式化的需求规格说明语言。

Object-Z是一种基于模型的面向对象的语言。

由于目前的航天型号软件基本上采用结构化方法进行设计开发,因此针对面向对象软件的测试目前不适合应用于航天型号软件测试。

随着技术的发展,面向对象方法可能会被航天型号软件采用,则可以采用此方法对型号软件进行测试[4]。

相对于运用模型检查生成测试用例的方法,以上4种方法主要适用于特定的应用领域,不具有通用性。

2 运用模型检查生成测试用例方法在软件领域,形式化方法最初用于对可靠性要求较高的软件进行需求描述和形式化验证,随着研究的深入开展,形式化方法的应用范围逐渐扩大到软件的开发设计,系统的安全特性验证。

模型检查技术是一种基于状态探测的得到广泛运用的形式化方法,如图1所示,模型检查器检查需求中某个系统特性是否成立时,根据反映需求的形式化模型在内存中构造一个有限状态转换模型,探测模型的可达状态空间,以检测被验证的系统特性 (以时序逻辑进行描述)与模型是否存在冲突,从而验证这个系统特性对于需求是否成立。