基于模型的测试综述报告讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于模型的测试综述
2016年1月
摘要
面向对象软件开发应用越来越广泛,自动化测试也随之被程序员认可和接受,随之而来的就是基于UML的软件开发技术的大范围普及和基于模型的软件测试技术的普遍应用。基于模型的测试是软件编码阶段的主要测试方法之一,具有测试效率高、排除逻辑复杂故障测试效果好等特点。本文描述了基于模型的测试的模型以及建模标准,并介绍基于模型的测试的基本过程以及支持工具,同时通过七个维度对基于模型的测试方法进行描述。最后分析基于模型的测试的优缺点并列举了应用案例。
关键词:软件测试,基于模型的测试,软件模型,测试工具
目录
摘要................................................ I
1 引言 (2)
2 基于模型的测试、模型以及建模标准 (2)
2.1基于模型的测试 (2)
2.2基于模型的测试的模型 (3)
2.3建模标准 (4)
3 基于模型的测试的基本过程及支持工具 (5)
3.1基于模型的测试的基本过程 (5)
3.2支持工具 (6)
4 分类 (7)
4.1 模型主体 (7)
4.2 模型冗余程度 (7)
4.3 模型特征 (7)
4.4 模型表示法 (7)
4.5 测试用例选择标准 (8)
4.6 测试用例生成技术 (8)
4.7 联机、脱机测试用例生成 (9)
5 基于模型的测试的工具Spec Explorer (9)
5.1 Spec Explorer (9)
5.2 连接测试用例和待测系统 (9)
5.3 静态模型和实例模型 (11)
6 基于模型的测试的优缺点 (11)
参考文献 (13)
1 引言
在软件开发的生命周期中,测试是一个非常重要的阶段。软件测试[1]通过为特定测试目的而设计的测试用例的执行情况,与预期的软件行为进行一致性对比,从而判定软件错误所在,以此确保软件的可靠性和正确性。
由于软件产品的固有的复杂性质,软件测试的难度也就不言而喻。传统的测试方法被认为是繁琐的、强工作量且容易出错。应运而生的基于模型的测试开始受到日渐广泛的关注。基于模型的测试(Model-Based Testing)[2]是一种系统化的测试方法,可被应用于软件生命周期早期阶段的产品的测试,并且它使完全自动化测试成为可能,其特点是:在产生测试例和进行测试结果评价时,都是根据被测试应用程序的模型及其派生模型(一般称作测试模型)进行的。
基于模型的测试深受工业界的青睐,原因如下:一是工业界通常需要验证软件产品的系统行为。在产品设计的早期,基于模型的测试的使用有利于帮助找出不清晰的、易存在二义性的软件系统规格说明(“即编码前的分析设计模型/文档”)。二是基于模型的测试方法使得大量不重复的、有意义的测试用例产生变得可能。三是使用基于模型的测试一旦系统规格说明发生改变,只需要对测试模型进行修改就可以轻松地达到更新测试用例的目的。
本文组织如下,首先介绍了基于模型的测试及其特点,分析了主要的测试模型及如何选择合适的测试模型,重点是有限状态机模型、UML模型和马尔可夫链模型,并且提出了建模的标准;接着介绍基于模型的测试的基本过程以及支持工具,再通过七个维度对基于模型的测试方法进行描述,并对每一个维度探讨了可能取值,然后与其他软件测试技术相比,分析基于模型的测试的优缺点,最后列举了一些基于模型的测试的应用案例。
2 基于模型的测试、模型以及建模标准
2.1基于模型的测试
首先应该要明确软件模型的概念,是指用抽象化的方式对软件行为和软件结构进行阐述,软件行为可以通过一系列的输入输出逻辑和数据流分析来表示,软件结构则是通过部署图、流程图等图形方式直观表述,基于模型的测试就是通过上述两种抽象化方式产生测试用例。相比于针对程序代码本身的测试,而基于模型的测试方法不仅可以有效地提高测试效率,提高测试例生成的自动化程度,进行测试失效辨识,也有利于评价测试结果。
基于模型的测试是对被测系统的模型化,然后根据模型特性,完全或者部分
地自动生成测试用例的一种软件测试技术。
基于模型的测试是一个轻量级的,形式化的验证软件系统的方法。首先,基于模型的测试对待测软件系统(通常被称为System Under Test,简称SUT)进行形式化的建模,设计出机器可读的模型;其次,和其他形式化方法比,基于模型的测试并不致力于让待测软件系统与规格说明在所有可能情况下都保持一致,而是系统化的从模型生成一组测试用例,使用这组测试用例测试待测软件系统,得到充分的证据说明待测系统的行为与模型期望是一致的。
2.2基于模型的测试的模型
理想的模型需要容易被测试人员理解,能够把大的复杂的问题描述成小的简单的系统,最好还是以一种测试用例生成工具方便识别的形式。想要同时满足以上所有的特性是很困难的,但是可以把几种不同的模型整合成一个,扬长避短地得到理想模型。在基于模型的测试中使用过的模型可能有几十甚至上百种,我们不可能也没有必要去逐一了解,Mark Utting和Bruno Legeard把它们大致分为以下几种[3]:
表2.1 MBT模型分类
基于模型的测试中使用的典型模型有: 有限状态机(FSM,Finite State Machine)、UML模型和马尔可夫链等模型。
1.有限状态机该类模型是用状态转移图来表示,并通过状态的覆盖来生成测试用例。这种模型可以将测试用的数据结合图的遍历算法自动生成输入的序列进行相应测试。该种测试模型可以充分结合形式语言与自动机理论来进行分析和设计,适用范围主要是反应式的软件,但由于模型构造的工作规模比较大,自动构造就成为了这一模型的一个关键点。
2.UML模型又称为统一建模语言,是软件工程中面向对象设计与分析中常用到的规范化建模语言。该模型主要是利用状态图进行行为建模,状态图可以看作是有限状态机的扩展,强调了对复杂实时系统进行建模,提供了层次状态机的框架,即一个单独状态可以扩展为更低级别的状态机,并提供了并发机制的描述[4],因此UML使用状态图作对单个类的行为建模。