基于模型的软件测试综述

时间:2022-10-08 08:29:42

基于模型的软件测试综述

【摘 要】面向对象软件开发应用越来越广泛,自动化测试也随之被程序员认可和接受,随之而来的就是基于UML的软件开发技术的大范围普及和基于模型的软件测试技术的普遍应用。由于被测软件的特点不同,测试的目的也不尽然相同,测试模型相对应的就会有很多种类。笔者在本文详细描述了基于模型的软件测试技术的现状,同时对于不同模型在测试中适用情况做了深入的比较,主要讨论了有限状态机模型、马尔可夫链模型和UML模型。文章最后,笔者就该种测试方法的未来发展前景做了分析。

【关键词】基于模型的软件测试,有限状态机,UML

一、引言

软件工程一直在探讨的一个问题就是提高软件质量的有效方法,无疑软件测试时解决这一问题最重要和直接的方法。软件测试的划分方法有很多种,主流的方法是将软件测试分为针对于程序代码本身的测试和针对于软件编写规范化的测试。针对程序代码本身的测试主要是依据代码语句编写测试用例,然后用测试用例对代码进行测试,直到能够完全测试代码的所有分支路径为止,我们称之为测试完全性原则。针对于软件编写规范化的测试主要是依据软件要实现的功能和设计规范进行用例设计,然后对与之相关的功能和设计属性进行测试,知道能够完全测试所有关联的属性为止,我们认为这样的测试是完全的。近年来,面向对象的软件开发逐渐普及,随之而来的是测试自动化的要求有着显著的提高,这种种技术的发展蓬勃带来了一个必然的后果就是基于模型的软件测试技术越来越被广大程序员接受。此类测试方法从上文的分类上来看属于针对于软件编写规范化的测试,最初主要适用于硬件方面的测试。本文主要介绍几种主要的测试模型以及各自的适用范围,然后阐述了构造模型的必需信息以及测试用例的生成方式。

二、基于模型的软件测试和模型

(一)基于模型的软件测试.首先应该要明确软件模型的概念,是指用抽象化的方式对软件行为和结构进行阐述,前者可以通过一系列的输入输出逻辑和数据流分析来表示,后者则是通过部署图、流程图等图形方式直观表述,基于模型的软件测试就是通过上述两种抽象化方式产生测试用例。相比于针对程序代码本身的测试,基于模型的测试更高效,同时也促进了测试的自动化,使得测试结果更加的准确,也更利于评价。

(二) 软件测试的模型简介.本文主要介绍以下几种典型的模型:

1.有限状态机 该类模型是用状态转移图来表示,并通过状态的覆盖来生成测试用例。这种模型可以将测试用的数据结合图的遍历算法自动生成输入的序列进行相应测试。该种测试模型可以充分结合形式语言与自动机理论来进行分析和设计,适用范围主要是反应式的软件,但由于模型构造的工作规模比较大,自动构造就成为了这一模型的一个关键点。

2. UML模型 又称为统一建模语言,是软件工程中面向对象设计与分析中常用到的规范化建模语言。该模型主要是利用状态图进行行为建模,状态图可以看做是有限状态机的拓展,状态图是一个层次分明的图,可以包括更多低级的有限状态机,低级状态机之间是并行的关系。UML状态图广泛用于对于单个类的建模。

3. 马尔可夫链 常见于数理统计中,是一种统计类模型,也是一种状态机,不同的是马尔可夫链的状态迁移带有概率特征,可以利用概率自动生成测试用例并对测试的结果进行系统且准确的分析。马尔可夫链模型具有很大的适用范围,可以通过状态迁移图来表征。

4.文法模型 实际上是将状态机的不同状态用相应的文法来表示,国内外学者对这方面的研究比较少。

三、基于模型的软件测试过程及相应软件

(一)分析被测软件.这个过程需要充分了解软件的设计需求、用户使用手册;软件用户的识别,穷举用户输入值并对输出做一预期;记录输入和相应的条件;深入理解软件内部构造,进行相应测试进而发现缺陷。

(二)选择合适的测试模型.如上文所介绍的测试模型,都有自己所适用的范围,实际测试中要根据测试的需求和软件自身的特点选择合适的模型。具体的选择标准如下:首先要对模型有全面的了解,以确定每种模型对应的测试应用领域;其次要充分理解软件系统,并根据软件的特点结合模型应用领域选用合适的测试模型;最后是应该充分协调组织、人员和工具的配合。

(三)构造测试模型.这一部分需要根据输入输出的具体情况抽象出软件的各个系统状态,然后依据不同的测试模型有相对应的构造过程。

(四)生成和执行测试用例.测试模型一定确定下来,就可以自动生成测试用例了,同时要注意构造测试路径的时候要考虑到迁移概率、路径最大长度等的限制条件。接下来就需要对生成的测试用例进行测试执行了,实际上就是对仿真脚本的测试。

(五)分析测试结果.基于模型的软件测试也并不能完全防止测试效果不佳的问题,也需要我们人工进行复查,这就需要对于测试结果进行分析,通过状态验证解决测试失效辨识的问题。

四、基于模型的软件测试评价

(一)优势分析.无疑,此种测试提高了测试的自动化程度,虽然仍然无法使得测试结果十分精确,但已尽可能地避免了测试失效辨识的问题,而且通过对测试结果的分析可以提高测试制品的重用性。如今面向对象开发的普及使得基于模型的软件测试方式成为了一种主流测试,将测试渗透到软件开发的各个阶段,能够及时修正错误

(二)劣势分析.模型测试发的缺点也是显而易见的,主要集中在以下几方面:对测试人员的知识和理论储备要求很高;需要较多的前期投入,包括选取模型、构造模型等;

(三)未来研究方向分析.基于上述分析,我们对于模型化测试的未来研究方向做如下的分析预测:1.集中于对软件测试模型的理论和应用两方面的研究,包括研究针对特定软件的专用模型和抽象出来具有普适性的通用模型;2.针对测试完全性方面的研究,主要基于测试的可靠性和效率,一般着眼于输入覆盖率、迁移覆盖率等方面;3.测试失效辨识的研究,这部分与测试自动化息息相关,两者往往结合起来,这将是将来研究的重点。

参考文献:

[1]A.V.K.Shanthi,G.Mohan Kumar. Automated Test Cases Generation from UML Sequence Diagram[A]. 新加坡国际计算机科学与信息技术协会(IACSIT―International Association of Computer Science and Information Technology).Proceedings of 2012 International Conference on Software and Computer Applications(ICSCA 2012)[C].新加坡国际计算机科学与信息技术协会(IACSIT―International Association of Computer Science and Information Technology):,2012:7.

上一篇:论小学语文教育人文性与工具性的统一 下一篇:舌尖上的夫妻