基于模型的测试综述报告讲解.doc
《基于模型的测试综述报告讲解.doc》由会员分享,可在线阅读,更多相关《基于模型的测试综述报告讲解.doc(16页珍藏版)》请在三一办公上搜索。
1、基于模型的测试综述 2016年1月摘 要面向对象软件开发应用越来越广泛,自动化测试也随之被程序员认可和接受,随之而来的就是基于UML的软件开发技术的大范围普及和基于模型的软件测试技术的普遍应用。基于模型的测试是软件编码阶段的主要测试方法之一,具有测试效率高、排除逻辑复杂故障测试效果好等特点。本文描述了基于模型的测试的模型以及建模标准,并介绍基于模型的测试的基本过程以及支持工具,同时通过七个维度对基于模型的测试方法进行描述。最后分析基于模型的测试的优缺点并列举了应用案例。关键词:软件测试,基于模型的测试,软件模型,测试工具目 录摘 要I1 引言22 基于模型的测试、模型以及建模标准22.1基于模
2、型的测试22.2基于模型的测试的模型32.3建模标准43 基于模型的测试的基本过程及支持工具53.1基于模型的测试的基本过程53.2支持工具64 分类74.1 模型主体74.2 模型冗余程度74.3 模型特征74.4 模型表示法74.5 测试用例选择标准84.6 测试用例生成技术84.7 联机、脱机测试用例生成95 基于模型的测试的工具Spec Explorer95.1 Spec Explorer95.2 连接测试用例和待测系统95.3 静态模型和实例模型116 基于模型的测试的优缺点11参考文献131 引言在软件开发的生命周期中,测试是一个非常重要的阶段。软件测试1通过为特定测试目的而设计的
3、测试用例的执行情况,与预期的软件行为进行一致性对比,从而判定软件错误所在,以此确保软件的可靠性和正确性。由于软件产品的固有的复杂性质,软件测试的难度也就不言而喻。传统的测试方法被认为是繁琐的、强工作量且容易出错。应运而生的基于模型的测试开始受到日渐广泛的关注。基于模型的测试(Model-Based Testing)2是一种系统化的测试方法,可被应用于软件生命周期早期阶段的产品的测试,并且它使完全自动化测试成为可能,其特点是:在产生测试例和进行测试结果评价时,都是根据被测试应用程序的模型及其派生模型(一般称作测试模型)进行的。基于模型的测试深受工业界的青睐,原因如下:一是工业界通常需要验证软件产
4、品的系统行为。在产品设计的早期,基于模型的测试的使用有利于帮助找出不清晰的、易存在二义性的软件系统规格说明(“即编码前的分析设计模型/文档”)。二是基于模型的测试方法使得大量不重复的、有意义的测试用例产生变得可能。三是使用基于模型的测试一旦系统规格说明发生改变,只需要对测试模型进行修改就可以轻松地达到更新测试用例的目的。本文组织如下,首先介绍了基于模型的测试及其特点,分析了主要的测试模型及如何选择合适的测试模型,重点是有限状态机模型、UML模型和马尔可夫链模型,并且提出了建模的标准;接着介绍基于模型的测试的基本过程以及支持工具,再通过七个维度对基于模型的测试方法进行描述,并对每一个维度探讨了可
5、能取值,然后与其他软件测试技术相比,分析基于模型的测试的优缺点,最后列举了一些基于模型的测试的应用案例。2 基于模型的测试、模型以及建模标准2.1基于模型的测试首先应该要明确软件模型的概念,是指用抽象化的方式对软件行为和软件结构进行阐述,软件行为可以通过一系列的输入输出逻辑和数据流分析来表示,软件结构则是通过部署图、流程图等图形方式直观表述,基于模型的测试就是通过上述两种抽象化方式产生测试用例。相比于针对程序代码本身的测试,而基于模型的测试方法不仅可以有效地提高测试效率,提高测试例生成的自动化程度,进行测试失效辨识,也有利于评价测试结果。基于模型的测试是对被测系统的模型化,然后根据模型特性,完
6、全或者部分地自动生成测试用例的一种软件测试技术。基于模型的测试是一个轻量级的,形式化的验证软件系统的方法。首先,基于模型的测试对待测软件系统(通常被称为System Under Test,简称SUT)进行形式化的建模,设计出机器可读的模型;其次,和其他形式化方法比,基于模型的测试并不致力于让待测软件系统与规格说明在所有可能情况下都保持一致,而是系统化的从模型生成一组测试用例,使用这组测试用例测试待测软件系统,得到充分的证据说明待测系统的行为与模型期望是一致的。2.2基于模型的测试的模型理想的模型需要容易被测试人员理解,能够把大的复杂的问题描述成小的简单的系统,最好还是以一种测试用例生成工具方便
7、识别的形式。想要同时满足以上所有的特性是很困难的,但是可以把几种不同的模型整合成一个,扬长避短地得到理想模型。在基于模型的测试中使用过的模型可能有几十甚至上百种,我们不可能也没有必要去逐一了解,Mark Utting和Bruno Legeard把它们大致分为以下几种3:表2.1 MBT模型分类类型示例基于Pre/PostB、OCL、JML、Spec#、Z基于转换FSM、状态图、UML状态机统计式马尔可夫链基于历史消息队列图、UML顺序图函数式HOL系统操作式Petri网数据流式Lustre、块状图基于模型的测试中使用的典型模型有: 有限状态机(FSM,Finite State Machine)
8、、UML模型和马尔可夫链等模型。1. 有限状态机 该类模型是用状态转移图来表示,并通过状态的覆盖来生成测试用例。这种模型可以将测试用的数据结合图的遍历算法自动生成输入的序列进行相应测试。该种测试模型可以充分结合形式语言与自动机理论来进行分析和设计,适用范围主要是反应式的软件,但由于模型构造的工作规模比较大,自动构造就成为了这一模型的一个关键点。2. UML模型 又称为统一建模语言,是软件工程中面向对象设计与分析中常用到的规范化建模语言。该模型主要是利用状态图进行行为建模,状态图可以看作是有限状态机的扩展,强调了对复杂实时系统进行建模,提供了层次状态机的框架,即一个单独状态可以扩展为更低级别的状
9、态机,并提供了并发机制的描述4,因此UML使用状态图作对单个类的行为建模。3. 马尔可夫链 是一种以统计理论为基础的统计模型,可以描述软件的使用 在软件统计测试中得到了广泛应用。马尔可夫链实际上是一种迁移具有概率特征的有限状态机,不仅可以根据状态间迁移概率自动产生测试例,还可以分析测试结果对软件性能指标和可靠性指标等进行度量5,6。另外,马尔可夫链模型适用于对多种软件进行统计测试,并可以通过仿真得到状态和迁移覆盖的平均期望时间,有利于在开发早期对大规模软件系统进行测试时间和费用的规划。马尔可夫链是统计测试的基本模型,在净室软件工程中得到了深入研究,在微软、Raytheon及美国联邦航空署(FA
10、A)都得到了成功应用7。马尔可夫链可以用随机迁移矩阵或者带迁移概率的状态迁移图表示。基于马尔可夫链的测试充分性准则一般要求测试过程中对马尔可夫链迁移的覆盖与实际使用相同6。4. 文法模型 可以描述程序的语法。由于不同的文法等价于不同的状态机 因此也可以视为状态机模型的变体。有关基于文法的测试可见文8,这方面研究工作相对较少。2.3建模标准随着系统的增长,建模是捕获和再利用有关系统知识的一个非常经济的手段。对于一个测试团队来说,这些信息是非常宝贵的:一个测试工程师了解被测系统的行为需要占据的工作量,一旦这个信息被理解,该如何保存给下一个工程师、下一个版本或者更改要求呢?如果你处于测试的设计阶段,
11、那么你是幸运的。但是更常见的是,这些信息被埋藏在一个测试脚本中,一旦改变或者丢失就只能等待重新发现。测试团队通过给系统构建一个给予指定输入得到所需行为的模型,可以获得有重用的最大优势就是这些工作都不会丢失。一旦这个测试周期停止,下一周期就可以迅速开始。如果该产品具有新的功能,它们可以逐步加入到模型中;如果产品的质量需要提高,那么模型需要改善和扩大测试;如果有新的人员加入到测试团队中,他们可以通过回顾模型迅速投入进来。一旦你决定想要为被测系统建模,下一步建模的时候要思考这个系统管理的数据、执行的操作和与它通信的子系统。下面给出几条原则:1抽象原则,通常不把输入、输出纳入到模型中。2模型与被测系统
12、不必完全一致。3 基于模型的测试的基本过程及支持工具3.1基于模型的测试的基本过程基于模型的测试的基本过程共有6个步骤,如图2.1所示,其步骤如下:1 分析被测系统首先分析被测软件的系统特性,主要分析的是开发方式,主要有所采用的开发技术(面向对象、面向过程),开发语言,开发系统环境等。然后根据分析结果,结合各个模型的特性选择合适的模型作为测试用例生成的模型。2 建立抽象模型根据所选择的模型对被测软件进行建模,可以进一步分析该模型是否适合软件。模型选择和建立模型可能是个反复的过程,只有在充分了解该软件系统的特点和各个模型的特点才可能为软件系统建立最恰当的模型。这个模型是一个抽象模型,因为它应该比
13、待测软件系统(通常被称为System Under Test,简称SUT)本身更小,更简单,它只关注关键环节。建立完成后,需要检查该模型与所期望的行为是否一致。3 生成抽象测试从模型生成抽象测试,必须选择一些测试选择标准,因为通常有无限多的可能的测试。比如使用有限状态机FSM模型时,根据一定的覆盖准则遍历状态间的迁移所获得的转换路径就是测试路径,而且在使用FSM模型时选择不同的测试覆盖准则所产生的测试用例是不同的。4 具体化抽象测试基于模型的测试的第四步是把高层的抽象测试转化为可执行的具体测试。主要有两种方法:(1)使用模板和映射抽象测试的变换工具;(2)通过一些环绕在SUT和代码实现间的适配器
14、。5 执行具体测试基于模型的测试的第五步是在被测系统上执行具体的测试用例,不管是在在线的还是离线的基于模型的测试,都可以使用测试执行工具和方法。6 分析测试结果得到测试结果后,必须确定产生该故障的原因并采取纠正措施,因为有可能是建模时的缺陷模型导致的测试用例本身故障。然后根据测试结果和分析结果,评估被测软件的质量,并且指出出错的地方和提出改进的意见和建议。图2.1 基于模型的测试过程3.2支持工具基于模型的软件测试必须有相关工具支持。当前支持基于模型的软件测试工具中比较具有代表性的有:1) 支持状态机模型的工具。包括,Software Engineering Technology 的测试工具
15、toolSET_Certify运行于RISC6OOO和 SUN 平台;现在此工具属于 G-Lab,并已经提供了对统计测试的支持;IBM 的 GOTCHA,可以根据用户事先确定的测试充分性准则进行基于软件状态模型的测试例生成; IBM的TCBean 是一个提供测试脚本管理功能的基于状态机的测试引擎。2) 支持马尔可夫链模型的工具。包括,Cleanroom Software Engineering 的 CleanTest,支持统计测试,是商用的使用模型及统计测试例生成工具;IBM 的 Cleanroom Certification Assistant, 可以自动化统计验证过程,通过使用概率分布产生
16、测试例,并对测试结果进行分析。3) 对UML模型提供测试支持的工具。包括, SilverMark公司针对IBM 公 司 的 VisualAge 开发的支持测试用例生成和回归测试的 TestMetor 和 UML designer Connection。4) 对统计测试结果进行分析的工具。包括 AT&ST 的软件可靠性工程工具箱和美国海军水面战中心开发的 SMERFS,均提供多种时间域和区间域模型进行可靠性估计; 美国空军喷气动力实验室开发的 CASRE,支持可靠性估计和预测。4 分类本文通过七个维度对基于模型的测试方法进行描述。并对每一个维度探讨了可能取值。4.1 模型主体模型主体包括SUT模
17、型和SUT所处环境模型。目前基于模型的软件测试中往往两者都同时考虑。SUT模型的作用包括:(1)作为SUT的oracle(因为SUT包含了预期行为);(2)利用结构信息产生测试用例。SUT所处环境模型用于限制SUT模型的可能输出。4.2 模型冗余程度基于模型的测试可以被应用到不同的场景。大致说来,主要区别在用于测试和用于实现的模型间的冗余程度。文献9中描述了两个可能场景。第一个场景中模型被用来同时产生测试用例和系统实现。该场景中用于产生代码的模型必须描述详细,但对测试用例生成来说确需要抽象级别更高的模型。第二个场景是:模型仅用于产生测试用例。该模型根据规约文档生成,而SUT则是手工实现。我们可
18、以使用该模型作为系统的规约补充,但其相当复杂。往往需要补充文档辅助才能使用。4.3 模型特征模型特征与非确定性、时序问题、模型的连续性或事件离散性有关。非确定性在SUT和模型中均会发生。时序问题一般与实时系统相关。而就动态性而言。模型可能是离散的、连续的或两者综合。基于模型的软件测试过去往往关注离散模型,但连续或者混合模型目前在嵌入式系统中得到广泛使用和研究。不同的模型特征将影响对模型表示法的选择、测试用例的生成和执行。4.4 模型表示法目前存在大量模型范式对SUT进行建模,根据10获得如下的分类:1) 基于状态的表示法:针对变量集和修改变量的操作对系统进行建模,变量集代表系统内部状态的一个快
19、照,操作通过前置条件和后置条件定义。典型代表为Z、B、VDM和JML。2) 基于Transition的表示法:描述不同系统状态间的transition。采用类似FSM的形式进行表示。结点代表系统的状态,边代表系统的操作或行为。目前常通过添加数据变量、采用分层的机器和机器之间的并行来加强表示能力。典型代表为Statechartshbeled transition system和IO automata。3) 基于历史的表示法:通过描述随着时间的推移,行为允许的轨迹对系统进行建模。可以使用不同的类型的时间记号(离散或连续,线性或分支,点或区间等),导致了不同类型的时序逻辑。4) 函数表示法:将系统描
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 模型 测试 综述 报告 讲解
链接地址:https://www.31ppt.com/p-3838766.html