已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 测试用例的设计和编制是软件测试中重要的活动,更是软件质量的根本保障。因测 试工作量太大,手工编写测试用例很难保证测试质量,所以自动生成测试用例具有非常 重要的意义。u m l 被广泛应用于面向对象系统的分析和设计,是需求和代码实现的中 间桥梁,既保持了需求中本质的信息,也是最终代码实现的依据。所以从u m l 模型自 动生成测试用例,可以有效降低测试工作量并提高测试质量。 论文介绍了基于u m l 软件测试产生和发展及现状,概述了u m l 模型、集成测试、 测试数据自动生成方法中的有关概念、机制和算法。总结了u m l 模型在软件测试中应 用的关键技术和问题。 本文在总结前人研究的基础上,将u m l 协作图和状态图结合起来,通过测试交互 类的所有可能状态来加强集成测试,生成既包含对象间交互信息又保存对象状态信息的 中间模型s c t e s t ( s t a t c c h a r t c o l l a b o r a t i o nt e s t ) ,将s c t e s t 模型转化为状态协作树并 生成测试路径,结合进化算法和逆向数据依赖链方法,充分利用数据间的依赖关系,生 成高质量的测试数据。 关键词:软件测试,u m l ,测试用例,状态图,覆盖标准,测试数据 t h er e s e a r c ha n di m p l e m e n t a t i o no fu m l - b a s e d s o f t w a r et e s t i n g l ix u e s h e n g ( c o m p u t e r a p p l i c a t i o nt e c h n o l o g y ) d i r e c t e db ya s s o c i a t e p r o f e s s o rz h a n gg u o p i n g ab s t r a c t d e s i g no ft e s tc a s e si st h em o s ti m p o r t a n tt 1 1 i n gi ns o f t w a r et e s t i n g ;i ta l s oi sab a s es a f e g u a r do f s o f t w a r eq u a l i t y a n di t sh a r df o rm a n u a l l yg e n e r a t e dt e s tc a s e st om a i n t a i nt h es o f t w a r eq u a i t yb e c a u s e t e s tw o r k l o a di sv e r yh e a v y ;t h eu m lw h i c hi sw i d e l yu s e di nt h ea n a l y s i sa n dd e s i g no f0 0 s y s t e m si s t h ei n t e r - p r o d u c tb e t w e e na n a l y s i sm o d e la n dc o d ei m p l e m e n t a t i o n , k e e p sb o t ht h ei n f o r m a t i o ni nt h e a n a l y s i sm o d e la n dt h eu l t i m a t eb a s i sf o rc o d ei m p l e m e n t a t i o n ;s og e n e r a t i n gt e s tc a s ef r o mu m l m o d e li s v e r yh e l p f u lt oa l l e v i a t et h et e s tw o r ka n dr a i s et h et e s tq u a l i 锣 t h i sp a p e ri n t r o d u c e st h ee m e r g e n c e ,d e v e l o p m e n ta n dt h ec u r r e n ts t a t u so ft h eu m l b a s e ds o f t w a r e t e s t i n g , a n dg i v e sa no v e r v i e wo ft h ec o n c e p m e c h a n i s ma n da l g o r i t h mo fu m lm o d e l s , i n t e g r a t i o n t e s t i n g , a n dt e s td a t ag e n e r a t i o n w es u mu pt h ek e yt e c h n o l o g ya n dp r o b l e ma b o u tu m l m o d e l sw h i c hi s a p p l i e di nt h ef i e l do fs o f t w a r et e s t i n gs y s t e m t h i sp a p e rp r o p o s e sa ni n t e g r a t i o nt e s t i n gt e c h n i q u et h a ti sb a s e do nt h ei d e at h a tt h ei n t e r a c t i o n s b e t w e e n 嘶优= t ss h o u l di d e a l l yb ee x e r c i s e df o ra l lp o s s i b l es t a t e so ft h eo b j e c t si n v o l v e d i nt h i sp a p e r , a s c t e s t ( s t a t e c h a r t - c o l l a b o r a t i o nt e s t ) m o d e lf o rg e n e r a t i n gi n t e g r a t i o nt e s tc a s e si sb r o u g h tu pb a s e do n c o l l a b o r a t i o nd i a g r a ma n ds t a t e c h a r td i a g r a mw h i c hc o n t a i mb o t ht h ei n t e r a c t i o ni n f o r m a t i o nl x j t w e g l r l o b j e c t sa n da l lt h ep o s s i b l es t a t e so fe a c hi n t e r a c t i n gc l a s s a n ds c t e s tm o d e li s c o n v e r t e dt o s t a t e - c o l l a b o r a t i o nt r e ei no r d e rt og e n e r a t et e s tp a t h ;t e s td a t ag e n e r a t o rc o m b i n e de v o l u t i o n a r yt e s t i n ga n d c h a i n i n ga p p r o a c hi su t i l i z e dt of u l l ya n a l y z et h ed e p e n d e n c eb e t w e e nd a t a og e n e r a t eh i g h - q u a l i t yt e s t d a t a k e yw o r d s :s o f t w a r et e s t i n g ,u m l ,t e s tc a s e ,s t a t c c h a r t , c o v e r a g ec r i t e r i a , t e s td a t a 1 1 1 关于学位论文的独创性声明 本人郑重声明:所呈交的论文是本人在指导教师指导下独立进行研究工作所取得的 成果,论文中有关资料和数据是实事求是的。尽我所知,除文中已经加以标注和致谢外, 本论文不包含其他人已经发表或撰写的研究成果,也不包含本人或他人为获得中国石油 大学( 华东) 或其它教育机构的学位或学历证书而使用过的材料。与我一同工作的同志 对研究所做的任何贡献均已在论文中作出了明确的说明。 若有不实之处,本人愿意承担相关法律责任。 学位论文作者签名:鸢甄日期:。d 辟多月2 6 日 学位论文使用授权书 本人完全同意中国石油大学( 华东) 有权使用本学位论文( 包括但不限于其印 刷版和电子版) ,使用方式包括但不限于:保留学位论文,按规定向国家有关部门( 机 构) 送交学位论文,以学术交流为目的赠送和交换学位论文,允许学位论文被查阅、 借阅和复印,将学位论文的全部或部分内容编入有关数据库进行检索,采用影印、 缩印或其他复制手段保存学位论文。 保密学位论文在解密后的使用授权同上。 学位论文作者签 指导教师签名: 日期:z 口岛年步月如日 日期:功武年乡月日 中国石油大学( 华东) 硕士学位论文 第一章前言 基于u m l 模型的软件测试是软件测试的一个新领域,它旨在通过将u m l 模型用 于指导测试、验证模型与代码的一致性、检查软件产品是否符合需求和设计,以提高测 试质量。许多研究都针对这一领域开展了深入的研究工作。本章主要介绍论文的相关背 景和研究意义,并就论文的组织结构和论文的主要工作和创新点进行阐述。 1 1 课题的提出、目的及意义 随着系统规模和复杂性的日益增加,人们对软件测试越来越重视。为了尽量减少花 费在软件产品测试上的时间和精力,人们开始投入到软件测试方法与测试工具的研究 上。而软件测试领域中的一个关键的、同时也是极为困难的问题就是如何设计和生成有 效的测试用例。 面向对象的技术对于提高软件质量起到了很大的作用,但是也带来了新的故障风 险,并给软件测试提出了新的挑战。区别于传统软件的功能分解,面向对象软件是通过 合成来构造软件的,因而集成是面向对象软件开发中最重要的工作。面向对象的迭代式 增量开发过程,通过不断的集成产生系统的可执行的版本,每一个集成的环节都可能引 入错误,导致软件中存在缺陷,为了能够发现软件集成中的问题,面向对象软件的集成 测试非常重要。要检验最终实现中各种集成是否与设计的集成一致,则需要进行集成测 试,集成测试主要检查类内方法交互、类间方法交互、组件间交互是否被正确地实现。 作为一种标准建模语言,u m l 对软件开发各阶段提供了强有力的支持,近年来u m l 被学术界和工业界广泛应用,成为事实上的建模语言标准。使用u m l 进行面向对象软 件开发,在提高软件质量的同时,仍然需要测试来确认软件分析、设计、实现的致性 和正确性。基于u m l 开发的软件系统,软件开发的分析、设计阶段工作成果多为各种 模型图,系统的可用信息都在这些模型图中,给信息的提取带来了新的问题,从而也给 测试带来新的课题。对测试而言,u m l 模型是分析模型和代码实现的中间产品,既保 持了分析模型中本质的信息,也是最终代码实现的依据,所以希望能够研究出从u m l 设计模型图自动生成测试用例的方法,降低测试的工作量。对基于u m l 模型的测试, 原先的基于规约或者是基于程序的方法都不能直接使用,要将问题转换到原来传统测试 方法可以处理的问题空间中加以解决,转换工作主要解决信息提取问题,然后用常规测 试方法生成测试。 第二章基于模型的测试技术 1 2 国内外研究现状 面向对象的软件开发方法近年来得到了广泛的应用,随之而来的是给软件测试提出 了新的课题。在测试用例自动生成方法和基于模型的测试技术上,国内外都进行了大量 的研究。目前基于u m l 模型的测试方法是面向对象软件测试的重要研究方向之一。 1 2 1 国外研究现状 在基于u m l 模型的测试技术方面,目前下面几项研究具有较大的影响: a j o f f u t t 等在文献 2 2 中提出了基于u m l 状态图模型的测试用例生成方法。该研 究的主要贡献在于:( 1 ) 提出了基于u m l 状态图的四种测试覆盖准则:迁移覆盖、全判 定覆盖、迁移对覆盖、全路径覆盖。( 2 ) 开发了一个验证性的测试用例生成工具u m l t e s t , 同时就经典的c r u i s ec o n t r o l 例子进行了测试。这是第一个基于u m l 模型自动生成测试 用例的工具。( 3 ) 评价了上述四种测试覆盖准则。 c h r i sr u d r a m 的文献 2 l 】中研究了基于u m l 活动图模型的测试用例生成方法。c h r i s 通过扩充u m l 活动图的语法和语义,提出了形式化的活动图( f a d ,f o r m a la c t i v i t y d i a g r a m ) 。在形式化活动图中,图元的划分更细致和具体,其语义也更丰富。在f a d 中, 活动分为用户动作、系统动作、输出动作、复合活动,而且这些动作都有自己严格的语 义。例如:用户动作表示用户的输入动作,其中包括输入变量名及其值域范围、输入端 口以及输入的约束条件;输出动作则通过输出端口和输出变量来表示。元素语义的细化 这一思想对于测试用例的设计与生成非常有用。但由于c h r i s 的研究基于实时系统,因 此他所提出的测试用例生成方法并不完全适用于交互式系统。此外,c h r i s 的研究仅仅 对基于活动图模型的测试用例生成从理论上做了一个初步探索,没有考虑活动图模型中 的复杂元素,包括循环、并发等情况。另外,c l a d sr u d r a m 的方法中活动图转化成形式 化活动图( f a d ) 需要手工完成。 e v a n s 等人在文献【2 3 】提出使用z 、劢斗来进一步形式化u m l 。e v a n s 等目前正在进 行项目p r e c i s eu m l ( p u m l ) 的研究,致力于开发定义良好的u m l 。在模型验证方面, l i l i u s 和p a l t o r 在文献【2 9 】开发了一个u m l 模型验证工具v u v i l ,用于检查u m l 状态 图。 s u p a p o mk a n s m o k e a t 等在文献 3 0 q h 提出了基于u m l 状态图模型的测试用例生成 方法。s u p a p o m 通过将u m l 状态图转化为测试流图( t f g ) ,测试流图识别状态图中的 所有流程,然后根据测试流图生成测试。该方法生成测试用例的性能不高,而且不能处 理并行的情况。 2 中国石油大学( 华东) 硕士学位论文 1 2 。2 国内研究现状 基于u m l 模型的软件测试在我国起步比较晚,但是随着此项研究逐渐被重视,也 取得了一些初步的研究成果。 张毅坤等在文献 31 】中把基于扩展的有限状态机e f s m 的唯一输入输出u i o 测试用 例自动生成方法和u m l 的类的状态图相结合,提出了一种基于u m l 状态图的测试用 例自动生成方法。该方法的特点是在测试用例中包含了预测,并且通过算法保证测试用 例的路径长度为最短,同时测试从状态图开始,避免了建模中出现的状态爆炸问题。但 其中还有一些问题值得继续探讨和研究,这些问题主要有:( 1 ) 不可到达状态,因为前置 条件的存在,实际执行时能到达的状态和输入数据有关,其关键问题就是如何选择测试 数据;( 2 ) 所用的覆盖标准是状态的覆盖而不是状态及状态转换的覆盖,理论上讲是不充 分的。 袁洁松等在文献【6 】中给出了u m l 活动图的形式化定义和灰盒测试方法,该方法首 先分析u m l 活动图上的所有执行路径( 每条路径称为一个测试场景) ,然后根据测试场 景中的节点和转换所代表的活动及其输入输出变量、相关约束条件等生成测试用例,并 根据该方法实现了一个自动生成测试用例的工具u m l t g f ,它可以从r a t i o n a lr o s e 的 规约文件中提取活动图信息并生成相应的测试用例,该工具能够提高软件测试的效率, 降低测试成本。但是文中假设的前提和约束太多,将来需要进一步研究的目标是将其实 用化。 1 2 3 目前存在的主要问题 基于u m l 模型的软件测试已经取得了很大发展,但是尚存在如下问题亟需解决; 1 )当对象处于不同的状态时对消息的接收和发送的反应有很大差异,交互类之间 基于状态的测试在以前的研究中涉及较少。 2 )覆盖率不高问题直是困扰u m l 设计模型自动生成测试用例的问题之一,因 此不能实现测试的完整性。 3 ) 为模型生成有效的测试数据。 1 3 论文的工作 论文在总结前人研究成果的基础上,将利用u m l 协作图和状态图生成s c t e s t 模型, 并从s c t e s t 模型中生成测试用例。文中分析了通过协作图和状态图进行集成测试的可行 性和必要性,阐述了采用协作图和状态图进行集成测试的方法,并为测试提供测试数据 第二章基于模型的测试技术 自动生成方法。实践证明采用该方法进行集成测试,是有效的、可行的,是对自动化测 试以及动态生成测试用例的新探索,并具有一定的实用性。 论文的工作总结如下: 1 ) 介绍了面向对象的测试技术、集成测试、基于模型的测试技术及其在面向对象 软件测试技术中的应用。 2 ) 针对协作图中缺乏状态信息的问题,将状态图和协作图结合,建立中间模型, 生成集成测试用例。 3 ) 给出中间模型的理论基础和建立方法,并根据覆盖标准为中间模型生成测试用 例。 4 ) 详细描述了如何为集成测试用例提供测试数据。 1 4 论文的组织结构 论文共分为五部分,分别为: 第一章介绍了论文研究的背景、国内外研究现状、论文的工作和组织结构。 第二章概述了软件测试技术及基于模型的测试技术,对自动化测试和测试覆盖进行 了阐述。 第三章阐述了u m l 软件测试的相关概念,主要对u m l 测试的过程、自动化测试 框架、现有u m l 集成测试方法和测试数据生成方法进行介绍。 第四章对如何利用协作图和状态图进行集成测试进行了说明。首先将状态机中类的 状态信息集成到协作图中建立s c t e s t 模型,然后将s c t e s t 模型转化为状态协作树从 而生成测试用例,并提出了一种测试数据的自动生成方法。 总结和展望部分总结了论文的工作和创新点,并给出进一步研究的工作内容。 4 中国石油大学( 华东) 硕士学位论文 第二章基于模型的测试技术 2 1 软件测试技术 2 1 1 软件测试的基本概念 软件测试的实质是根据软件开发各阶段的规格说明和程序的内部结构精心选取一 批测试数据,形成测试用例,并用这些测试用例去驱动被测程序,观察程序的执行结果, 验证所得结果与预期结果是否一致,然后做相应的调整。测试数据生成是软件测试的核 心与关键。但是,不同测试数据对发现软件故障的能力差别很大。为了节约时间和资源, 提高测试效率,必须从大量的输入数据中精心选出少数有代表性的测试数据,使得采用 这些测试数据能够达到最佳的测试效果,高效地把隐藏的故障揭露出来。 软件测试主要涉及以下4 方面的问题: ( 1 ) 谁来执行测试 一个软件产品的开发通常涉及开发者和测试者两种角色。开发者通过开发而形成产 品,例如分析、设计、编码、调试或者文档编制等。测试者通过测试来检验产品中是否 存在缺陷,包括根据特定目的设计测试用例、构造测试、执行测试以及评估测试结果等。 一般做法是:开发机构负责代码的单元测试,而系统测试则由一些独立的测试机构进行。 ( 2 ) 测试什么 表现在程序中的故障,并不一定是编码所引起的,即使针对源程序进行测试,所发 现故障的根源也可能在开发前期的各个阶段。因此,需求分析、概要设计、详细设计以 及程序编码等各个阶段所获得的文档,包括需求规格说明、概要设计规格说明以及源程 序,都应成为软件测试的对象。 ( 3 ) 什么时候测试 模块开发结束之后可以进行测试,也可以推迟至各模块装配成一个完整的程序之后 再进行测试。时间证明,随着开发的深入,未进行测试的模块对整个软件的潜在破坏作 用就越来越明显。 ( 4 ) 怎样进行测试 软件规范说明了软件本身应该达到的目标,程序实现则是一种对应各种输入如何产 生输出的过程。对软件进行测试就是根据软件的功能规范说明和程序实现,利用各种测 试方法,生成有效的测试用例,对软件进行测试。 5 第二章基于模型的测试技术 2 。1 2 测试的复杂性与经济性 穷举测试工作量实在太大,在现实生活中,软件测试不可能进行穷举测试,所以程 序中就有可能存在潜在的未被发现的错误。软件测试技术的研究目的就是为了怎样以极 小的付出获取尽可能大的收益,即通过采纳一定的技术手段,充分利用有限的人力和物 力资源,高效率、高质量地完成软件测试。为了降低测试成本,选择测试用例时应注意 遵守“经济性 的原则。第一,要根据程序各模块的重要性和一旦发生故障将造成的损 失来确定它的测试等级;对关键测试,重点关照。第二,要认真研究测试策略,以便能 使用尽可能少的测试用例,发现尽可能多的程序错误。掌握好测试的量是至关重要的, 测试不足意味着让用户承担隐藏错误带来的危险,过度测试则会浪费许多宝贵的资源。 一个成功的测试主要包括两个方面:一是软件在所有的( 或是足够多的) 测试数据上 是正确的;二是测试数据是充分的,即软件在测试数据上的表现能够充分地反映软件的 总体表现。检查软件在测试数据上行为的正确性称为测试的“先知者问题 。判断一个 测试数据集合是否充分称为充分性问题。 从不同的角度出发,软件测试会派生出两种不同的测试原则。下面是一些至关重 要的测试原则。 ( 1 ) 完全测试是不可能的。 这主要因为:程序输入量太大,程序输出量太多,软件实现途径太多,软件规格说明没 有一个客观的标准。从不同的角度看,软件故障的标准可能不同,这就注定了一切实际 的测试都是不彻底的。 ( 2 ) 软件测试是有风险的。 ( 3 ) 存在的故障数量与发现的故障数成正比。 ( 4 ) 并非所有的软件故障都能恢复。 ( 5 ) 软件测试是一项复杂的、具有创造性的和需要高度智慧的挑战性任务。 2 1 3 软件测试方法 软件测试技术大体上可分为两大类:一类是白盒测试技术,白盒测试技术是把程序 看成装在一个白盒子里,即完全了解程序的内部结构和处理过程,按照程序内部的逻辑 结构,检验程序中的每条通路是否都在按照预定要求正确工作。自盒测试技术典型的是 逻辑覆盖技术;一类是黑盒测试技术,又称为功能测试技术,与白盒子测试技术恰恰相 反,把程序看成一个黑盒子,即完全不用考虑程序的内部结构和处理过程。即黑盒测试 是在程序接口进行的测试,它只检查程序功能是否按照预先的要求正常工作,接受输入 6 中国石油大学( 华东) 硕士学位论文 数据是否产生正确的输出结果。黑盒测试技术包括边界值分析技术、等价分类技术、因 果图技术等。 白盒测试从考察程序的结构和逻辑出发验证所构造的程序是否符合设计要求。白盒 测试包括逻辑覆盖、域测试、符号测试、路径分析、程序插装及程序变异等。 黑盒测试不需了解程序内部实现的细节,从程序需求规格说明出发,设计测试用例 进行测试,以发现程序的错误,验证程序是否符合预定的要求。黑盒测试又称功能测试。 黑盒测试技术设计测试用例的方法包括功能分解、等价类划分、边值分析、因果图、错 误推测法。 自盒测试方法是从开发者的角度在源代码级使用软件分析和理解技术,对程序的内 部逻辑结构进行分析来测试系统,而黑盒测试方法通过从用户的角度测试软件系统是否 符合需求规约,这两类方法各有侧重,在测试的实践中都是有效的、互补的和实用的, 但它们又各有缺点,并且不能在方法内部进行完善来解决,而且在面向对象语境下,软 件的设计思路和软件的结构与传统的面向过程的软件相比有了很大的变化,而传统的软 件测试方法不能适应这样的变化。 灰盒测试对基于包含预期软件结构和行为信息的设计模型生成测试,设计模型是需 求规约和代码实现的中间产品,既保持了需求规约里的信息,也是最终代码实现的依据, 灰盒测试有效结合了黑盒测试和白盒测试的要素,先基于扩展的白盒测试方法分析结构 的逻辑覆盖,然后基于黑盒测试方法生成满足覆盖条件的输入和输出组合生成测试用 例,能够发现容易被黑盒测试和白盒测试所忽略的问题。 2 2 基于模型的软件测试技术 随着模型在软件设计和开发中越来越普遍的应用,基于模型的测试也越来越受到人 们的关注。模型描述了系统的功能以及系统可能的行为,使得测试以一种清晰有序的方 式进行。本节将对基于模型的软件测试技术进行基本的介绍。 2 2 1 模型的定义 所谓模型,是对一个系统的抽象,它从某个特定的视角、在某个特定的抽象层次上 对所建模的系统进行的描述。人们常常在正式构造系统之前,首先建立一个简化的模型, 以便更透彻地了解其本质,抓住问题的要害。模型是理解、设计、测试和维护系统的基 础。就软件而言,模型是对软件行为的一个描述。软件行为可以通过系统接收的输入序 列、动作、条件、输出逻辑、模块间的数据流等来描述。模型需要尽可能地形式化,并 7 第二章基于模型的测试技术 与实际系统相符合,从而使得模型具有可重用性、可共享性和精确性。模型不但抓住了 所研究系统最本质的关系,而且比所研究系统更易于开发和分析。模型具有四要素:主 题( s u b j e c t ) 、论点理论( p o i n to f v i e w t h e o r y ) 、表示( d e p r e s e n t a 廿o n ) 和技术( t e c h n i q u e ) 。首 先模型必须有定义完好的主题;其次,个模型必须以一定的理论为基础,该理论能够 指导识别相关的问题及信息,并根据模型生成测试所需的信息,例如有穷自动机理论、 图论、m a r k o v 链等。此外,一个建模技术必须具有某一特定的表示方法,很多软件测 试模型都用图来表示。最后,模型是复杂的人工制品,因此建模技术的好坏与建模者有 密切的关系。现实中存在大量的模型,他们从不同的侧面描述了软件行为。例如:控制 流、数据流、程序依赖图通过分析源代码的结构来表现系统实现的行为。决策表、状态 机则用于描述系统的外部行为。 2 2 2 测试中常用模型介绍 测试中常用的模型包括:有限状态机( f s m ) ,u m l 模型,m a r k o v 链等。下面分别 介绍。 有限状态机:有限状态机有两种表示形式:状态转移矩阵、状态转移图。早在软件 工程产生之前,有限自动机的相关理论就已经非常成熟了。目前,有限状态机在协议一 致性测试中是必不可少的。但有限自动机存在的一个问题是,复杂软件将产生大的有限 自动机,相应地创建和维护的费用就会比较高。 u m l 模型:u m l 模型综合了多种模型的优点,可以从不同的视角描述系统,具有 很强的描述和管理能力。目前,u m l 己被众多软件企业和开发者所采用,u m l 融合了 多种方法的成果,具有定义良好、功能强大、普遍适用的优点。这些特点,为基于模型 的测试提供了非常好的契机。现在,大量基于u m l 模型的测试方法研究己经展开,主 要集中在动态模型方面,包括状态图、顺序图、活动图以及用例图等。 m a r k o v 链:m a r k o v 是一个随机模型,它被用于描述软件的使用。m a r k o v 链很像有 限自动机,可以认为是一种概率性的有限自动机。m a r k o v 链不仅用于生成测试用例, 还用于收集和分析失效数据,从而对软件的各种质量参数进行评估和度量( 如可靠性、 平均失效时间等) 。 2 2 3 基于模型测试的基本过程 基于模型的测试过程主要由下列活动组成: 1 ) 了解被测系统,根据测试目标确定被测组件及其功能特性。 8 中国石油大学( 华东) 硕士学位论文 2 ) 选择合适的模型。选择模型时,要考虑系统特征、工具支持等方面的因素。 3 ) 建立设计模型。 4 ) 根据模型生成测试用例集。 5 ) 运行测试用例集。 6 ) 利用测试结果,评估测试用例集的价值、度量软件的质量特性等。 2 2 4 基于模型测试的优缺点及可能存在的问题 基于模型的测试具有如下优点: 1 ) 基于模型的测试技术可以用于各种不同系统的测试,包括图形用户界面、嵌入 式系统等。 2 ) 模型具有很好的抽象性,表现了被测系统的关键元素,而去除了非关键元素。 3 ) 模型具有可重用性,可在项目组的不同人员中共享。 4 ) 很多模型都具有成熟和雄厚的理论基础,这些就使得基于模型的软件测试活动 变得容易。 5 ) 根据模型还可能获得对应输入的预期输出结果。 基于模型测试的难点及可能存在的问题如下: 1 ) 基于模型的测试要求测试者具备一定的技能,他们必须熟悉所使用的模型元素 及相关原理,同时还需要熟悉相关工具、脚本和编程语言。 2 ) 在基于状态的模型中,存在状态空间爆炸的问题,这不仅是建模的难点,同时 也对测试产生了一定的障碍和影响。此外,对于一个大型的系统而言,模型的 创建、维护与管理也是一个值得关注的问题。 3 ) 制定模型的测试覆盖准则是基于模型测试的一个重要问题。 4 ) 测试自动化。 2 3 测试评测标准一测试覆盖 测试覆盖是对测试完全程度的评测,是由测试需求和测试用例的覆盖或己执行代码 的覆盖表示的。通过覆盖标准,就可以检查测试的完全程度。 现阶段,随着软件开发过程的规范化,越来越多的软件公司加强了对软件测试的重 视,希望通过测试,能够使发布的系统更安全、更稳定、更符合用户的需求。从理论上 讲测试是永无止境的,只要不断测试就一定能不断发现问题。那究竟如何度量测试的进 度,如何判断测试可以完结,这些,可以依靠测试覆盖率的分析来实现。目前最常用的 9 第二章基于模型的测试技术 覆盖标准是基于需求的测试覆盖和基于代码的测试覆盖。 2 4 本章小结 本章介绍了基于模型软件测试的相关概念,首先对软件测试进行了介绍,然后就各 种模型进行了分析并对现有测试覆盖进行了介绍。 l o 中国石油大学( 华东) 硕士学位论文 第三章u m l 测试技术 上一章介绍了基于模型软件测试的相关概念。本章首先对u m l 进行介绍,然后分 析u m l 测试过程和u m l 自动化测试架构,最后介绍现有的u m l 集成软件测试方法和 测试数据生成方法。 3 1u l v l l 简介 统一建模语言u m l 是面向对象技术与可视化建模技术发展的里程碑,是当今成功 地进行软件开发所不可缺少的关键环节。u m l 是对软件密集型系统中的人工制品进行 可视化表示、详细刻画、构造和存档的标准语言,它融合了多种方法的成果,定义良好、 功能强大、普遍适用,适用于以面向对象技术描述的任何类型系统,具有很宽的应用领 域:而且u m l 适用于系统开发的不同阶段,从需求规格描述直至系统维护。 为了刻画软件开发的各个方面,u m l 提供了九种图,包括:类图、对象图、用例 图、交互图( 包括顺序图和协作图) 、状态图、活动图、构件图、配置图。u m l 通过四层 元模型体系结构来定义,并将u m l 分成三个逻辑子包:基础设施包、行为元素包、模 型管理包。基础设施包给出了系统静态结构的基本架构,包括:类图、对象图、组件图、 配置图。行为元素包用于支持系统动态行为建模,包括:用例图、交互图( 包括顺序图 和协作图) 、活动图、状态图。总而言之,所有这些不同类型的u m l 图为软件系统提供 了描述静态结构、动态行为和物理配置的强大能力。 u m l 模型在测试自动化方面有着很大的应用潜力,很多科研机构对此进行了较多 研究,形成了不少的成果。基于u m l 的软件测试是基于规格说明的软件测试的一个分 支,其最大的优点就是它比其它形式化方法具有更为规范的适用性。在软件开发的各个 阶段,通过将系统的分析、设计和实现等工件转化为u m l ( 或是u m l 的扩展) 的规格 说明,并把它们作为测试需求的直接来源,驱动测试的整个过程。基于u m l 的软件测 试最终的目标是实现测试设计和执行的自动化。 虽然u m l 具有很多的良好的特性和应用能力,但是如何让它支持软件测试,需要 进行如下的研究工作: 1 ) 研究u m l 模型的可测试性,针对不同类型的系统在不同阶段的测试,给出严 格的可测试的u m l 模型。 2 ) 研究从u m l 模型生成测试用例,实现测试设计和执行的自动化。 3 ) 设计基于u m l 的自动化测试工具,实现测试工具的集成。 第三章u m l 测试技术 可以看出,基于u m l 的测试首先要考虑的就是可测性问题,因此为了提高模型的 可测试性,必须通过一定的约束来限制u m l 的使用。并且,为了通过一定的策略和方 法自动化生成测试用例,还需要借助其他语言( 例如o c l ,p v s 等) 来增加模型的精 确性。 使用u m l 的控制机制是提供模型的可测试性是一种非常有效的方法。u m l 提供了 一些机制使得用户不用修改底层的建模语言就可做以下扩展。以下是u m l 提供的3 种 扩展机制: 1 ) 构造型:允许创造新的构造块,该构造块既可以从现有构造块派生,也可针对 要解决的问题重新建立。 2 ) 标记值:扩展u m l 构造块的特性,允许创建元素的新信息。 3 ) 约束:扩展u m l 构造块的语义,允许增加新的规则或修改现有的规则。 3 2 切l 测试过程 如图3 - 1 是基于u m l 的测试过程: 图3 - 1 基于u m l 的软件测试过程 f i 9 3 1 u m l - b a s e dt e s t i n gp r o c e s s 如图3 1 ,测试过程可以分为六大主要步骤: i ) 创建u m l 规格说明。从用户的需求和文档中生成u m l 规格说明。 2 ) 验证u m l 规格说明。对u m l 规格说明的验证内容包括u m l 模型的一致性、 最优性、鲁棒性、可跟踪性、结构良好性、有效性等。验证的过程可以通过工 具辅助完成,而且也应该根据实际的系统特点对验证的内容进行取舍。 3 ) 确定测试的规格和策略。测试的规格和策略包括:测试过程中成功和失败的标 准、测试覆盖准则、测试选择策略和优化参数、测试生成算法等等。这些内容 既需要从需求设计文档导出,也需要测试人员根据实际的情况确定。 1 2 中国石油大学( 华东) 硕士学位论文 4 ) 生成测试用例。测试用例生成是整个过程中最为核心的过程。根据测试的规则 和策略,将经过验证的规格说明转化为测试用例。生成的测试用例通常是抽象 的,还需要通过测试人员进行修改和完善。另外还需要实现测试的驱动模块, 使得测试用例可以执行。 5 ) 执行测试用例和跟踪。测试的执行就是按照测试用例手工或自动执行软件的过 程。在执行过程中,按照测试用例的步骤执行待测系统,将实际结果与预期结 果进行比较,并在文档中记录各种信息。 6 ) 测试结果分析。对测试结果的分析是缺陷统计和归类的过程。分析得到的结果 既可作为系统修改升级的依据,也可以作为测试用例生成、执行优化的根据。 3 3 切订l 自动化测试架构 完全通过手工完成基于u m l 的测试是不现实的,在测试过程中还需要很多测试工 具进行辅助测试。要实现u m l 测试的自动化,就要建立自动化测试框架。构建u m l 的自动化框架实现如下目的: 1 ) 支持多种u m l 测试模型及其扩展的解释和验证。 2 ) 具有开放的体系结构,可以实现与其他测试工具的集成。 3 ) 支持不同的用户访问接口,方便对测试过程的跟踪和控制。 4 ) 具有良好的重用性,各部件都可以组装和拆卸。 如图3 2 是u m l 自动化测试的体系结构。用户访问接口是用户可以操作的所有界 面,包括模型的创建或者导入、测试规则的输入、测试生成的中间结果及用例的浏览等 等。此外,体系结构还提供与其他自动测试框架或者工具集成的接口。核心组件主要包 括模型分析和验证器、测试用例生成器、测试执行引擎、测试执行驱动、测试跟踪和结 果分析器和其他部件。其中,模型分析和验证器主要完成模型( 导入文件) 的语法分析 和验证,保证模型的完整性和正确性。经过验证的模型通过测试用例生成器可以生成测 试用例,但是这些测试用例可能是抽象的,无法执行的。因此,还需要对测试用例进行 加工,并且需要开发出待测系统的驱动模块。然后通过测试执行引擎,在测试执行驱动 的支持下实现测试用例的执行。测试执行的过程就是根据测试用例,向待测系统发送消 息( 或进行输入) ,然后接收系统的响应。最后,将测试过程和结果情况通过测试和结 果分析器进行记录,供测试人员进行分析。此外,这些消息也可以反馈给测试用例生成 器和测试执行引擎,对测试的过程进行动态调整。 1 3 第三章u m l 测试技术 臣二三豢二期! 零阀嗨彗自纛:三二薹。! 三盈 丫 e ? 模堑夯菥菊骚i 谭j核心组件 呖第溺 ,其, 匿:。i 测试用倒生摩趣。黛 汹试粤叵踪_ 和绩焉套暂器。霭 他。 部 i 件: “谢i l :音封t 符苫i 出一:致1 眵蛳i l ;苷赫徉前薪翻 缓:荔 陵,卿唑执1 j ? 。i 羊僦;。j 1 匕,删风执1 j 警铡一2 幽 群t 一4 掣备:7 一=: o o i p与其他工具的集成接口。一l b ;e 靠也以2 咄聒m t 一一一c r 管甜 图3 - 2u m l 自动化测试的体系结构 f i 9 3 - 2 u m l - b a s e da u t o m a t e dt e s t i n ga r c h i t e c t u r e 3 4u m l 集成测试现状 面向对象的集成测试主要关注对象间的交互测试,检查经过单元测试的类能否在与 其他类交互时实现预期的功能。集成层次的测试集中在通过方法调用或异步消息的对象 交互上。充分的单元测试并不能产生有效的集成测试。这是因为有些错误在单元测试中 无法发现而仅在集成测试的特定状态出现,a b d u r a z i k 等在文献【1 7 】中使用协作图对源码 进行静态检查,并衡量测试的充分性。此方法对协作图使用传统的控制流和数据流分析 以产生集成测试。t e s ts e q u e n c eg e n e r a t o r ( t e s t o r ) 在文献 1 0 】中使用状态图和协作 图为基于组件的系统生成集成测试。每个组件的行为都以u m l 状态图的形式定义,而 测试指导是以u m l 协作图制定。b a s a n i e r i 和b e r t o l i n o 在文献 1 1 】中使用用户交互测试 模型进行交互测试。用户交互测试( u i t ) 模型是从用例图和顺序图中生成。p i l s k a l n s 等在文献【1 4 】中提出了从用例图和顺序图生成测试用例的方法。此方法将上述图形转化 为中间模型o m d a g 进行集成测试。s e d i t e c 在文献【2 8 】中对顺序图中的参与类进行集 成测试。l et r a o n 和j e r o n 等在文献【1 5 】中提出了使用u m l 类图进行集成测试的方法, 将类图转换为中间模型t dg r a p h ( t d g ) ,t d g 具有3 种形式的依赖:类对类,类对方 法和方法对方法的依赖。这种方法更被用来决定类的测试顺序。b r i a n d 等在文献【2 6 】中 使用类图来决定生成顺序,使集成测试所需要的测试桩数量最小化。 从上面可以看出,u m l 中很多模型都被用于集成测试,u m l 状态图主要用于测试 1 4 中国石油大学( 华东) 硕士学位论文 软件基于状态的行为,交互图主要用于集成测试,但是现有技术主要是测试类内部基于 状态的行为或类之间的交互测试。g a l l a g h e r 等在文献【1 0 1 中提出了一个基于状态依赖的 集成测试,但是通过使用有限状态机来实现,形式化程度太高,不利于实际应用。上述 方法中的集成测试尚未测试交互类的状态依赖行为。 3 5 测试数据生成方法 对软件进行测试可以采取不同的软件测试策略,不论选取哪一种测试策略,测试数 据生成都是测试阶段最关键的技术问题。 目前,测试人员一般都是根据工程经验,采用向前核查法和逆向回溯法手工为指定 的程序路径生成测试数据。向前核查法是指沿预期的路径向前检查,每到达一个判断点, 确定该点的变量所能提供的最宽数值区间,然后继续前行。在这个过程中,多个变量的 可能取值范围将逐渐缩小,到达程序出口后,就能找到覆盖这条路径所需的输入数据。 逆向回溯法是指从期望执行的程序位置出发,逆向回溯,在每一个判断点逐渐调整各变 量取值。直到退到程序入口,即获得所需的输入数据。向前核查法和逆向回溯法对于某 些条件要求苛刻的路径有时候非常困难,使测试人员难于承受。同时由于软件测试过程 复杂、工作量大、重复性高的特点,需要耗费大量的人力、物力和时间来完成测试数据 的生成工作。致使测试成本高昂,测试效率低下,软件质量难以保证。 测试数据自动生成技术可以为所测程序自动生成测试数据。自动生成测试数据可以 减轻测试人员劳动负担,降低手工测试的高额成本,同时提高测试过程的可信赖程度。 因此测试数据自动生成方法的研究,对实现软件测试过程自动化,有着十分重要的现实 意义。 启发式算法被广泛的用于测试数据生成,其中主要方法有进化测试和逆向数据依赖 链方法。 3 5 1 进化测试 进化测试【3 2 1 使用启发式算法等为软件生成测试数据,根据相应适应度函数值进行测 试数据的调整,但是在很多情况下由于缺少对数据间依赖的信息,进化测试陷入随机查 找状态。这通常是由于适应度函数没有考虑待测程序中数据间的依赖。而且某些程序语 句需要在目标结构前执行,目标结构才是可行的。 定义:一个程序的控制流图( c f g ) 是一个有向图g = 0 v , e j ,p ) ,其中是节点 的集合,e 是边的集合,s 和e 是图的入口和出口,每个节点刀n 对应于程序中的语句, 1 5 第三章u m l 测试技术 而边p = ( 强,n j ) ee 代表从节点嚆到玎,的控制权的转换。对应于判断语句的节点被成为分 支节点。分支
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度广告投放与宣传推广合同
- 《基于DEA的档案类微信公众号传播效果评价研究》
- 《山东钢铁资产剥离的绩效研究》
- 《楚墓出土漆耳杯纹饰研究》
- 2024年度个人融资合同样本
- 《铜离子印迹交联壳聚糖的制备及其吸附性能研究》
- 《新型牙体修复性纳米羟基磷灰石复合树脂的粘结性能研究》
- 《基于HAZOP和过程模拟的化工工艺安全性分析及优化》
- 必刷08 植物生命活动的调节(共50题)
- 白酒批量订货协议规范(2024年)
- 儿童免疫性疾病课件
- 中图版八年级地理上册《世界气候》复习课件
- 无损检测通用作业指导书
- 2023年中考语文复习:150个文言实词-课件(共183张PPT)
- 车辆维修服务方案先进性
- 2020年1月上海春招英语听力(含试题、MP3、答案及录音)
- GB/T 17639-2023土工合成材料长丝纺粘针刺非织造土工布
- 发行企业债法律尽职调查之访谈问题清单
- 拍卖合作协议
- 白改黑施工组织设计
- ICU患者失禁性皮炎的预防及护理新进展
评论
0/150
提交评论