(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf_第1页
(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf_第2页
(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf_第3页
(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf_第4页
(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机应用技术专业论文)基于uml活动图生成测试用例的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 独创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取 得的成果。除文中已注明引用的内容以外,本论文不包含任何其他个人或集体已经发表或撰 写过的作品成果,也不包含为获得江苏大学或其他教育机构的学位或证书而使用过的材料。 对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本 声明的法律结果由本人承担。 学位论文作者签名: 旁云耳 l 1 0 1 1 年多月君日 学位论文版权使用授权书 江苏大学、中国科学技术信息研究所、国家图书馆、中国学术期刊( 光盘版) 电子杂 志社有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手 段保存论文。本人电子文档的内容和纸质论文的内容相一致,允许论文被查阅和借阅,同时 授权中国科学技术信息研究所将本论文编入中国学位论文全文数据库并向社会提供查询, 授权中国学术期刊( 光盘版) 电子杂志社将本论文编入中国优秀博硕士学位论文全文数据 库并向社会提供杳询。论文的公布( 包括刊登) 授权江苏大学研究生处办理。 本学位论文属十不保密、。 学位论文作者签名: 旁亥千 指导教师签名: 2 口 1 年月2 i r e l p 饬她 易,f 年月汐日 江苏大学硕士研究生毕业论文 摘要 软件测试是保证软件质量的关键性工作,在软件开发岗期中占有非常重要的 地位。软件测试的工作量随着软件产品规模不断扩大以及软件复杂性越来越高而 迅速增长。为了降低软件测试的成本,提高软件测试效率,软件测试方法的研究 受到业内越来越多的关注。 随着统一建模语言u m l 的广泛应用,基于u m l 的测试用例生成技术已成 为软件测试领域的研究热点。u m l 活动图描述了系统为完成指定功能或任务所 必须执行的活动流程,是复杂的交互式系统功能测试用例牛成的重要依据,本文 着重研究基于u m l 活动图生成测试用例的方法。 本文研究的主要内容如下: 1 讨论了生成测试用例的两种方法,重点分析了基于规格说明的测试用例 生成方法和其中的基于u m l 模型的测试技术。 2 分析了u m l 活动图的特点,u m l 活动图的可测性设计以及测试覆盖准 则,并给出u m l 活动图的形式化定义。 3 研究了从活动图生成测试场景的方法,通过逐层压缩活动图中复合结构, 使生成测试场景的过程得到简化。对通过压缩得到的测试场景,逐层解压各结构 模块得到完整的测试场景集。为了解决并发活动组合爆炸的问题,在解压并发结 构的过程中使用反蚁群算法来解决并发活动实例化问题。 4 研究了活动图的测试剖面,在此基础上依据基本的等价类和边界值思想 生成基本测试数据。 5 实现基于u m l 活动图生成测试用例的原型系统,并结合a t m 自助取款 机活动图生成测试用例的过程,说明了系统的功能。 关键词:u m l 活动图,测试场景,结构压缩,测试数据,测试用例 a b s t r a c t s o f t w a r et e s t i n gi st h ek e yw o r ko fa s s u r a n c es o f t w a r eq u a l i t y ,w h i c hp l a y sa v e r yi m p o r t a n tp o s i t i o ni nt h es o f t w a r ed e v e l o p m e n tc y c l e t h ew o r k l o a do f s o f t w a r e t e s t i n gw o r kg r o w sr a p i dw i t h t h ee x p a n d i n gs o f t w a r es c a l ea n dt h ei n c r e a s i n g s o f i w a r ec o m p l e x i t y t or e d u c et h ec o s to fs o f t w a r et e s t i n ga n di m p r o v et h ee f f i c i e n c y o fs o f t w a r et e s t i n g ,t h er e s e a r c ho fs o f t w a r et e s t i n gm e t h o d sg e t sm o r ea n dm o r e a t t e n t i o ni nt h ef i e l do fs o f t w a r ee n g i n e e r i n g u m la c t i v i t yd i a g r a mi sa ni m p o r t a n tb a s i sf o rg e n e r a t i n gs y s t e mf u n c t i o nt e s t c a s e so fc o m p l e xi n t e r a c t i v es y s t e m ,w h i c hd e s c r i b e st h ea c t i v i t i e sp r o c e s ss y s t e m a s s i g n e d f o rf i n i s h i n gac e r t a i nw o r k ,w h i l et h i sp a p e rf o c u s e so nt h em e t h o do f g e n e r a t i n gt e s tc a s e sb a s e do nu m l a c t i v i t yd i a g r a mg e n e r a t i o nm e t h o d t h em a i nr e s e a r c hi n c l u d e sf ol l o w i n ga s p e c t s : 1 t h es o u r c e so fg e n e r a t i n gt e s tc a s e sa r ed i s c u s s e d ,w i t ha n a l y s i sa r ef o c u s e d o nt h em e t h o do fg e n e r a t i n gt e s t c a s e sb a s e do ns p e c i f i c a t i o na n dt h et e s t i n g t e c h n o l o g yb a s e d o nu m l 2 t h ec h a r a c t e r i s t i c so fu m la c t i v i t yd i a g r a m s a r ed i s c u s s e d t h et e s t c o v e r a g ec r i t e r i aa n dt e s t a b i l i t yo ft h eu m la c t i v i t yd i a g r a m s a r ea n a l y z e d t h e f o r m a ld e f i n i t i o no f u m la c t i v i t yd i a g r a mi sg i v e n 3 t h em e t h o do fg e n e r a t i n gt e s t s c e n a r i o sf r o mu m la c t i v i t yd i a g r a mi s r e s e a r c h e d i nw i t c hc o m p o s i t es t r u c t u r ei sc o m p r e s s e dl a y e rb yl a y e rt os i m p l i f yt h e p r o c e s so fg e n e r a t i n gt e s t s c e n a r i o t h ef i n a lt e s ts c e n a r i o sa r eo b t a i n e dt h r o u g h e x t r a c t i n gt h ec o m p o s i t es t r u c t u r e si nt h es c e n a r i o si n c l u d i n gc o m p o s i t en o d e sl a y e r b vi a y e r i no r d e rt o s o l v et h ec o m b i n a t i o ne x p l o s i o no fc o n c u r r e n t ,d u r i n gt h e d e c o m p r e s s i o np r o c e s s ,t h ea n t i a n tc o l o n ya l g o r i t h mi s u s e d 4 t h et e s td a t ac a nb eg o tb yd e f i n i n gt h et e s tp r o f i l e ,a c c o r d i n gt ot h eb a s i c e q u i v a l e n c ec l a s s i cm e t h o d a n db o u n d a r yv a l u em e t h o d 5 a n df i n a l l y ,as o f t w a r ed e s i g na n dt e s tc a s eg e n e r a t i o na s s i s t e ds y s t e m i s i m p l e m e n t e d ,a n di t i sv e r i f i e db yap r a c t i c a le x a m p l e s 1 1 1 k e y w o r d s u m la c t i v i t yd i a g r a m ,t e s ts c e n a r i o s ,s t r u c t u r ec o m p r e s s i o n ,t e s t d a t a 。 t e s tc a s e s 江苏大学硕上研究生毕业论文 目录 摘要i a b s t l 认c t i i i 目录v 第一章绪论1 1 1 研究背景及意义1 1 2 国内外研究现状1 1 3 本文的主要工作3 1 4 本文的组织结构。4 第二章软件测试和i b i l 技术5 2 1 软件测试的基础理论5 2 1 1 软件测试的定义5 2 1 2 软件测试的口标6 2 1 3 软件测试的原则7 2 1 4 软件测试的流程9 2 2 生成测试用例方法的分类1 0 2 2 1基于代码的测试11 2 2 2 基于规格说明的测试1 l 2 3 基于u m l 模型的测试技术1 3 2 3 1 u m l 技术13 2 3 2 基于u m l 的测试过程1 5 2 3 3 可用于测试的u m l 图1 6 2 4 本章小结17 第三章基于i j m l 活动图的测试技术研究1 9 3 1u m l 活动图19 3 2 活动图的可测性分析与设计2 0 3 3 基于活动图的测试覆盖准则2 2 3 4 活动图的形式化定义2 3 3 5 基于u m l 活动图生成测试用例的总体策略2 6 3 6 本章小结2 7 第四章基于u 儿活动图生成测试用例的方法2 8 4 1 测试用例2 8 4 2 生成测试场景的方法2 8 4 2 1 测试场景技术2 8 4 2 2 逐层压缩活动图3 1 4 2 3 分拆分支结构。3 5 n 江苏大学硕上研究生毕业论文 4 2 4 解压循环结构3 6 4 2 5 反蚁群算法实例化并发结构3 7 4 3 生成测试数据的方法3 9 4 3 1定义测试剖面3 9 4 3 2 测试数据的生成和组合4 0 4 4 本章小结4 2 第五章系统设计与实现4 3 5 1 系统实现框架4 3 5 2 用x m l 表示1 3 m l 4 3 5 3 系统类图设计4 5 5 4 系统主要功能实现。4 7 5 4 1 测试场景生成模块4 7 5 4 2 测试数据生成模块4 9 5 4 3 测试用例生成模块5 1 5 5 本章小结5 1 第六章总结和展望5 2 6 1 总结5 2 6 2 展颦。5 2 墨烤文献5 3 致谢5 6 攻读硕士学位期间发表的学术论文5 7 v i 一。 江苏人学硕上研究生毕业论文 1 1 研究背景及意义 第一章绪论 随着信息技术的飞速发展,软件产品逐渐应用到社会的各个领域,软件产品 的质量自然成为人们的关注焦点。质量不佳的软件产品不仅会使开发商的维护费 用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降。 更严重的是,在一些关键应用如民航订票系统,银行结算系统,证券交易系统, 自动飞行控制系统,军事防御和核电站安全控制系统等中使用质量有问题的软 件,很可能会造成灾难性的后果。软件测试技术是提高软件质量,保证软件可靠 性的关键性工作,存软件开发的整个生命周期中占有非常重要的地位。根据对国 际著名企业的统计,软件测试费用占整个所有研发费用的3 0 - 4 0 以上l l 】。因此, 为了减少软件研发费用、提高软件质量,人们开始投入到软件测试方法与测试工 具的研究上。 统一建模语言u m l ( u n i f i e dm o d e l i n gl a n g u a g e ) 是面向对象软件系统的建 模标准,它可以从不同角度构建软件系统的特征。近年来随着面向对象软件开发 技术的发展,需要一种新的测试技术来完成软件测试工作。由于u m l 有着良 好的规范,易于表达软件需求,功能强大且融入了软件工程领域的新思想、新方 法和新技术,现已在软件工程领域得到了广泛地发展和应用【2 】,也为面向对象的 软件测试提供了一个契机。统一建模语言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 的测试技术是一种新的软件测试技术,国内外多所大学和研究所 都在进行这方面的理论研究。关于基于u m l 模型测试技术的研究,大部分是针 对类图或动态图生成测试用例的相关技术和方法的研究。许多商业的或研究性质 的工具也正在开发当中,这些方法和工具基于不同的功能测试概念,而且这方面 的研究也受到了i b m 等大公司的关注。可以看出,u m l 自动化测试技术将成为 软件测试的发展趋势和主流。 目前,在基于u m l 模型图生成测试用例的相关技术上国内外有以下几项研 究具有较大的影响。 a j o f f u t t 等提出了基于u m l 状态图模型的测试用例生成方法【3 1 。该研究的 主要贡献在于,提出了基于u m l 状态图的四种测试覆盖准则:迁移覆盖、全判定 覆盖、迁移对覆盖、全路径覆盖。a j o f f u t t 开发了一个验证性的测试用例生成 工具u m l t e s t ,这是第一个基于u m l 型自动生成测试用例的实验性的工具。 c h r i sr u d r a m 的论文【4 j 中研究了基于u m l 活动图模型生成测试用例的方法。 c h r i s 通过扩充u m l 活动图的语法和语义,提出了形式化的活动图( f a d ,f o r m a l a c t i v i t yd i a g r a m ) 。在形式化活动图中,图元的划分更细致和具体,其语义也更 丰富,元素语义的细化这一思想对于测试用例的设计与生成非常有用。但由于 c h r i s 的研究基于实时系统,因此他所提出的测试用例生成方法并不完全适用于 交互式系统。此外,c h r i s 的研究仅仅对基于活动图模型的测试用例生成从理论 上做了一个初步探索,没有考虑活动图模型中的复杂元素,包括循环、并发等情 况。另外,我们可以看出,c h r i s r u d r a m 的方法中活动图转化成形式化活动i 虱( f a d ) 需要手工完成。 还有一些对u m l 的形式化及模型验证的研究。u m l 是一个半形式化的语言, 因此在实际应用中可能产生一些问题,包括模型二义性、不完整性等。为此, e v a n s 等人提出使用z 抖来进一步形式化u m l t 5 1 。 袁洁松等在文献【6 】中给出了u m l 活动图的形式化定义和灰盒测试方法,该 方法分析u m l 活动图上的所有执行路径( 每条路径称为一个测试场景) ,然后 根据测试场景中的节点和转换所代表的活动及其输入输出变量、相关约束条件等 生成测试用例,并根据该方法实现了一个实验性的自动生成测试用例的工具 u m l t g f 。但是文中假设的前提和约束太多,将来需要进一步研究的目标是将其 2 汀苏大学硕上研究生毕业论文 实用化。 除了以上列举的研究成果,还有对活动图测试覆盖允分性准则【7 】的研究,及运 用自适应细菌算法及反蚁群算法 8 , 9 , 1 0 】遍历活动图提取测试场景的研究。 本文主要研究系统功能测试用例的生成方法,所以选择活动图作为测试的模 型。以上提到的研究当中主要分为深度回溯遍历法,和人工智能的方法。在使用 深度优先带回溯的遍历法过程中,要处理活动图中的循环结构,和并发结构比较 困难,对并发实例化的过程中往往采用人工定制的方法。另外一个是人工智能的 方法遍历得到测试场景,人工智能的方法对并发没有限制但是对整个活动图进行 遍历存在不确定性,不一定能完全覆盖所有的基本路径。本文为了使遍历活动图 提取测试场景变的更简单,提出了一种压缩活动图结构模块简化活动图的方法, 在层层压缩活动图中的分支、循环、并发结构模块为复合节点后,再遍历包含复 合节点的活动图简单的,对得到的测试场景t i ,的复合压缩节点进行解压,再回带 到测试景中。在对活动图中并发处理时使用拓扑反蚁群算法,避免了对并发活动 实例化过程中使用人工定制的方法。 1 3 本文的主要工作 首先,介绍了软件测试的基本理论和基于模型的测试技术。重点对基于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 活动图生成测试用例的测试覆盖准贝| j ,可测性设计进行分 析和设计,并对u m l 活动图的形式化定义进行研究。 3 研究通过逐层压缩活动图中的复合结构和逐层解压场景中的复合节点来 3 江苏大学硕上研究生毕业论文 生成测试场景集的方法。研究解压分支结构,循环结构和并发结构的方法。 4 分析和研究了活动图的测试剖面,根据测试剖面依据基本的等价类和边 界值分析法设计测试场景中的测试数据。 5 最后,介绍了原型系统的实现并结合实例说明了系统的功能。 1 4 本文的组织结构 本文具体章节安排如下: 第一章介绍课题的研究背景,研究意义,国内外研究现状以及研究内容和论 文的组织结构。 第二章介绍软件测试的基本理论,生成测试用例的方法,着重分析了基于规 格说明的测试,并详细介绍了u m l 模型和软件测试之间的关系。 第三章讨论u m l 活动图的特点,分析其可测性和测试覆盖准则。并给出活 动图的形式化定义和基于u m l 活动图生成测试用例的总体策略。 第四章研究基于活动图生成测试用例的方法,分析和设计生成测试场景的方 法,并给出了基于u m l 活动图生成测试场景的算法。进一步研究了活动图的测 试剖面的定义,在其基础上生成测试数据。 第五章介绍基于u m l 生成测试用例用的原型系统的实现,并结合实例说明 了系统的功能。 第六章总结全文工作,并对下一步工作进行展望。 4 江苏大学硕上研究生毕业论文 第二章软件测试和u m l 技术 本章将简要介绍软件测试的基础理论,生成测试用例的方法和基于u m l 的 测试技术。 2 - 1 软件测试的基础理论 2 1 1 软件测试的定义 从2 0 世纪7 0 年代以来软件领域出现并且形成了软件生命周期的概念,软件 开发过程开始划分成若干阶段进行。在不同阶段中十分自然地具有阶段目标,对 于程序正确性的要求也变得明确和严格。但程序中的错误并不一定是编码所引起 的,很可能是详细设计阶段,概要设计阶段,甚至是需求分析阶段的问题所引起 的。因此必须对每一一个阶段进行详细检查,这种贯穿于整个开发过程中各个阶段 的复查、评估和检测活动,也就是所谓测试的活动。 软件测试先驱d r b i l lh e t z e l 对软件测试的定义是,软件测试是对软件建立 一种信心,认为程序能够按照预期的设想运行】是评估软件或系统的品质或者能 力的一种积极的行为,以确定它是否达到了预期的结果。 g l e n m y e r s 在1 9 7 1 年出版的著作也给出了对软件测试的定义,但是与 d r b i l lh e t z e l 的定义恰恰相反。他的定义中认为软件测试是为了发现错误而执行 程序的过程【1 2 】。他认为一个好的测试是能发现尚未发现的错误的测试,一个成 功的测试是发现了以前未发现的错误的测试。 这两种对软件测试的定义实际上是从软件测试的两个不同角度定义的。从这 两个定义可以看到,测试要以查找错误为中心而不单纯是为了演示软件的正确功 能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试 的唯一目的,查找不出错误的测试是没有价值的,事实并非如此。没有发现错误 的测试也是有价值的,完整的测试是评定测试质量的一种方法,详细而严谨的可 靠性增长模型可以证明这一点,例如b e vl i t t l e w o o d 发现一个经过测试而正常运 行了1 1 个小时的系统有正常运行n 小时的概率。 1 9 9 0 年,i e e e e a n s i 给出了更精确的软件测试的定义:软件测试是由人工 或者自动方法来执行或评估系统或系统某部分功能,来验证软件是否符合软件需 s 江苏人学硕上研究生毕业论文 求;或者发现结果与预期的结果不一样。即评估软件是否达到了需求定义中应达 到的标准和效果,或者是否出现了需求中没有定义的功能。 软件测试定义的发展反映了测试目标的发展,而且也反映了人们对于软件质 量内涵认识的发展。虽然软件测试的定义发生了变化,但是有一点是可以确定的, 软件测试与软件的质量是不可分割的,而且始终与发现软件缺陷的过程是密切相 关。 2 1 2 软件测试的目标 基于不同的立场存在着两种完全不同的测试目的。从用户的角度来看,他们 普遍希望能通过软件测试尽可能多地暴露软件中隐藏的错误和缺陷,以此来考虑 是否可以接受该软件产品。而从软件开发者的角度来看,他们则希望测试能成为 证明他们丌发的软件产品小存在错误的过程,以此来验证该软件正确的实现了用 户的要求,确立人们对软件质量的信心。因此,测试的时候,他们往往会选择那 些导致程序失效概率小的测试用例来运行,并且回避那些易于暴露程序错误的测 试用例。显然,这样的测试对完善和保证软件质量毫无价值。因为在程序中存在 着许多预料不到的问题,可能会被疏漏,许多隐藏的错误只有在特定的环境下才 可能暴露出来。如果不把着眼点放在尽可能查找错误这样一个基础上,这些隐藏 的错误和缺陷就不会被检查出来,将会遗留到运行阶段中去。然而错误发现的越 晚,它带来的损失就会越大,同时修复软件的代价就会越大。如果站在用户的角 度,就应该把测试活动的目标确立在挖掘出软件中潜在的错误,在选取测试用例 时,应尽量考虑那些有利于发现程序错误的测试用例。由此,g r e n f o r d j m y e r s 提出了软件测试的三个目标: ( 1 ) 软件测试是程序的执行过程,目的在于发现错误。 ( 2 ) 一个好的测试用例在于能发现至今未发现的错误。 ( 3 ) 一个成功的测试是发现了至今尚未发现的错误的测试。 因此,软件测试的目标就是以最少的时间和人力找出软件中潜在的各种错误 和缺陷。如果成功的实施了测试,就能够发现软件中的错误。 从测试的目的和任务来看,软件测试工作有以下几个显著的特点: ( 1 )挑剔性 软件测试是对质量的监督和保证。测试工作是在尽可多地发现和挖掘软件中 6 汀苏大学硕- 上研究生毕业论文 的错误。 ( 2 )复杂性 测试工作要求测试人员具有很高的对被测对象的分析、理解和把握能力。特 别是在测试大型系统是,测试工作的难度决不亚于系统设计和开发工作。 ( 3 ) 不彻底性 测试工作证明已经发现的错误,却不能保证系统中已经完伞不存在错误。穷 举测试,耗费相当大的工作量,在实践工作中是不可行的。因此,测试过的软件 也无法保证它不含有错误。 ( 4 )经济性 由于测试无法穷举,故要采用有限的测试发现尽可能多的软件错误。那么如 何平衡测试的成本和系统的可靠性,是测试者必须要考虑的问题。 2 1 3 软件测试的原则 软件与其它产品不同,它完全是脑力劳动的结晶,其质量控制相对于一般产 品要困难和复杂得多。在软件工程思想出现以后,其在一定程度上提高了软件质 量的可控性,和软件的可测性。测试作为提高软件质量的重要手段,在软件质量 涉及诸多因素中,有着至关重要的作用。然而,在测试过程中我们应该以怎样的 原则测试才能达到更好的测试效果,是测试工作中一个重要的问题。 在理想情况下,我们会测试程序的所有可能执行情况。然而,在大多数情况 下,这几乎是不可能的。即使一个非常简单的程序,其所有可能的输入与输出组 合就可达到几百种甚至上千种,对所有的可能情况都设计测试用例是不可能的也 是不切实际的。对一个复杂的应用程序进行完全的测试,将耗费大量的时间和人 力资源,这在经济上是不可行的。在软件测试过程中,应注意的具体原则有以下 几项1 1 3 , 1 4 l 。 ( 1 ) 应尽早和不断地测试 在软件生存周期的每个阶段都可能存在问题。在测试过程中人们发现导致软 件错误或包含缺陷的因素多种多样如,原始j 、口j 题的复杂性,软件算法的复杂性和 抽象性,对需求理解的错误,需求的变更,以及各个阶段工作人员之间工作的配 合关系等。这使得开发的每个环节都可能产生错误。实践证明,缺陷发现的越早, 修改缺陷的成本就会越低。从软件的需求分析阶段到系统上线维护阶段或产品发 7 江苏人学硕上研究生毕业论文 布销售阶段,随着软件阶段活动的过度,修复软件缺陷所消耗的资源将成倍增长。 所以软件测试不仪仅是软件开发的一个独立阶段,而应当把它贯穿到软件开发的 各种阶段中,坚持软件开发各个阶段的技术评审才能尽早发现和预防错误。 ( 2 )软件测试应追溯到用户需求 软件测试活动的依据是软件需求规格说明书,必须确保交付给用户的软件系 统功能符合用户的需求,所有的测试活动都是围绕用户需求来进行的。如果在测 试或测试结果交付后发生争议,所有问题的解决都要依据需求规格说明书中的要 求来判断。 ( 3 )穷尽测试是不可能的 如果期望将软件中所有的错误和缺陷全部找出来,只有对应地将每一个运行 环境、语句、条件分支、路径等进行穷举测试,才能确保测试的彻底性。但是往 往工作量巨大,所片j 的时间过长,实际上是不现实的也是不可能达到的。因次, 穷尽测试也就失去它的实用价值。 ( 4 )程序员应避免检查自己的程序 测试工作需要严格的作风,客观的态度和冷静的情绪,要由别人来测试程序 员编写的程序,可能会更客观,更有效,并更容易取得成功。要注意的是,这点 不能与程序的调试相混淆。调试由程序员自己来做可能更有效。 开发人员测试的最大的弱点在于每个必须测试自己程序的开发人员往往过 于乐观。这就蕴含一种危险:由于开发人员对开发程序比测试更有兴趣,或者测 试进行的非常肤浅而忘记了执行合理的测试用例。如果开发人员引入了一个基础 的设计错误,比如说他们误解了对一个概念公式的描述,那么他们很有可能无法 检测出自己的错误。甚至他们都不会想到合适的测试用例。减少这种“对自己错 误视而不见 问题的一种可能方法是结对工作,由同事来检查自己的程序。 ( 5 ) 要有良好的测试态度 测试人员在测试的过程中应该具备细心、耐心的专业素质,并且还要有信心。 测试人员要严格执行测试计划,排除测试的随意性。 ( 6 ) 缺陷集群性 通常情况下,大多数的缺陷只存在于测试对象的极小的部分中,缺陷并不是 平均而是群集分布的。因此,如果在一个地方发现了很多缺陷,那么通常在附近 8 江苏大学硕士研究生毕业论文 会有更多缺陷。在测试中,应当机动灵活地应用这个原理。 ( 7 ) 杀虫剂悖论 如果同样的测试用例被一再重复地执行,会减少其有效性。先前没有发现的 缺陷也不会被发现。因此,为了维持测试的有效性,战胜这种“抗药性”,应对 测试用例进行不断修改和更新。尽可能多,尽可能全面地设计测试用例。这样软 件中末被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发 现更多的缺陷。 ( 8 )测试依赖于测试内容 测试必须与应用程序的运行环境和使用中同有的风险相适应。因此,没有两 个系统可以以完全相同的方式测试。对于每个测试系统,测试出口准则等等应依 据他们使用的环境分别量体定制。安伞关键系统与电子商务系统应用程序要求的 测试是不同的。 ( 9 )没有失效就是有用系统是一种谬论 找到失效修正缺陷并不能保证整个系统可以满足用户的预期要求和需要。在 开发过程中用户的早期介入和原型系统的使用就是为了避免问题的预防行措施。 2 1 4 软件测试的流程 软件测试过程的规范管理,与软件开发过程的规范管理一样重要。软件测试 活动要依据一定的有计划的步骤进行才能更好地完成测试任务。软件测试工作的 流程如图2 1 所示。 应用需求, 图2 1 软件测试流程 9 江苏人学硕上研究生毕业论文 如上图所示软件测试的完整过程包含以下几个步骤【b 1 : ( 1 ) 测试计划 测试计划是与整个测试过程中所有工作相关的主体的集合,也就是说,测试 计划中应该包括测试过程中方方面面的工作,步骤、人员、测试技术等。定制测 试计划的过程实际上是对整个测试过程进行思考的过程,因此,这个过程是至关 重要的。 ( 2 ) 测试设计 对测试对象进行测试建模以及设计,制定设计测试用例的策略,建立测试用 例集合。测试设计,可以理解为它是对测试工作进行的有目的、有计划的活动。 测试设计是一个过程,不仅仅是解决一个问题的方法,它主要包括测试管理的设 计以及各种测试技术应用的设计。 ( 3 ) 测试执行 启动测试程序,执行测试用例集,在测试数据库中获得相应的测试数据和测 试脚本。测试执行的过程中将执行结果加入到测试数据库内,如此循环直到测试 脚本执行完。 ( 4 ) 测试结果分析 对测试结果所提供的故障,原始数据进行分析。 ( 5 ) 生成测试报告 根据测试结果分析给出测试结论性评价。 在软件测试工作的全过程中,测试用例的设计最复杂和最重要的部分,它是 软件测试中的关键工作,也是本文的研究重点。本文通过研究测试场景和测试数 据的生成以及测试用例的自动生成过程,来提高测试的效率。 2 2 生成测试用例方法的分类 在软件测试的过程中,测试用例和测试数据设计是最为困难和繁重的工作。 软件的开发和测试人员需要一些有效的方法来完成这部分测试工作。测试用例的 生成可以通过两种方法实现 1 6 , 1 7 ,基于代码的测试用例生成与基于规格说明的测 试用例生成。下面分别介绍这两种方法的特点。 江苏大学硕士研究生毕业论文 2 2 1 基于代码的测试 基于源代码的测试 1 8 , 1 9 ,它关注的主要的是程序的源代码,是根据被测程序 的内部结构设计测试用例的一种测试方法。 基于代码的测试用例生成通常用于单元测试,它可以非常容易地保证所有代 码中的语句都被执行。很多方法都是用了基于代码的测试,例如语句覆盖,分支 覆盖,扩展分支覆盖,特定值覆盖等。使用基于代码的测试方法时,测试者必须 对程序源代码的内部结构进行分析,并根据其逻辑结构,设计相关的测试用例。 基于代码生成测试用例的抽象化图形说明如图2 2 所示。 图2 2 基于代码的测试 基于代码测试的主要特点是,可以直接捕获程序的执行情况,并自动记录和 报告测试的覆盖率,容易实现测试用例生成的自动化。而不足之处在于测试是基 于实际代码的,而不是基于需求规格的,对于需求中出现但没有实现的错误,或 者实现不满足需求规格说明的错误,这种方法都无法发现。然而,对于重点考虑 程序是如何编写的而不是如何设计的测试要求,基于代码的测试用例生成还是非 常有效的方法。 2 2 2 基于规格说明的测试 基于规格说明的测试【2 0 2 1 1 ,它关注的丰要是软件规格说明所描述的系统功 能,不考虑程序内部逻辑结构和处理过程,是根据各阶段的需求规格说明进行测 试的方法。 1 1 江苏大学硕士研究生毕业论文 基于规格说明生成测试用例的抽象化图形说明如图2 3 所示。 图2 3 基于规格说明的测试 因为它主要关注软件规格说明所描述的系统功能,这些功能描述不涉及代码 如何编写和实现的,看彳:到代码,是从输入到输出域的映射,所以基- r 规格说明 的生成方法通常用于功能测试和系统测试,通过它可以验证软件是否提供了软件 需求里预先约定好的功能,这恰好弥补了基于代码的测试方法的不足。 从规格说明中生成测试用例具有很多优点: ( 1 ) 在软件开发过程中,测试活动可以尽早进行,这可以更加有效地进行 计划,并可实现资源的合理利用。 ( 2 ) 在规格说明实现以前,可以发现需求中缺少的功能和相互矛盾的错 误。 ( 3 ) 由于它是独立于实现的,因此可以应用于任何实现技术和平台之中。 ( 4 ) 它支持系统级的功能测试。 ( 5 ) 它能够有效地支持测试用例的自动生成。 基于规格说明的测试一般通过基于模型,基于代数和基于有限状态机等技术 加以分类。a j o f f u t t 总结基于规格说明的测试用例生成方法中使用到的规格说 明大致可分为三类:有限状态规格说明2 2 1 ,属性规格说明,模型规格说明。状态 规格说明,侧重于状念和状态的转移,定义了转移的条件以及转移触发的时间。 属性规格说明,描述系统时不用参考模型,而代之以代数公理描述函数关系,典 型的如代数规格说明。模型规格说明2 3 ,2 4 1 就是以描述需求和设计的模型为测试的 规格依据。本文主要研究基于模型规格说明的测试用例生成技术,在接下来的小 】2 江苏人学硕上研究生牛业论文 节当中将对基于u m l 模型的测试技术进行介绍和分析。 2 3 基于u b l 模型的测试技术 基于u m l 模型测试的技术是基于规格说明测试的一个重要分支。u m l 是面 向对象软件系统建模的工业标准,u m l 模型能够构建软件系统分析和设计的相 关文档。在软件开发的整个过程中,u m l 都可以很好地支持软件开发工作。由 于软件u m l 模型规格说明是对软件行为的描述,规范易懂,描述了系统的功能 以及系统可能的行为,对模型进行分析,根据软件模型设计测试用例可以使软件 测试以一种清晰有序的方式进行。随着面向对象开发技术的广泛应用和软件测试 自动化的发展要求,基于u m l 模型的软件测试也逐渐得到了业界的重视。因此, 如何有效地利用建模阶段的u m l 成果辅助测试工作,已经成为科研机构和开发 社区考虑的重要问题。 2 3 1u i l 技术 统一建模语言u m l l 2 5 ,2 6 2 7 1 ( u n i f i e dm o d e l i n gl a n g u a g e ) 是面向对象技术与 可视化建模技术发展的一个重要的里程碑。统一建模语言是由著名的面向对象技 术业界的顶级专家g r a d yb o o c h 、i v a rj a c o b s o n 和j a m e sr u m b a u g h 发起,在b o o c h 表示法、o o s e ( o b j e c t - o r i e n t e ds o f t w a r ee n g i n e e r i n g ) 方法和o m t ( o b j e c t m o d e l i n g t e c h n o l o g y ) 方法的基础上,广泛征求意见,集众家之长,反复修改而完成的。在 软件界,u m l 已经获得工业界和学术界的广泛支持。1 9 9 7 年1 1 月1 7 日,u m l 被o m g ( o b j e c tm a n a g e m e n tg r o u p ) 批准为统一建模语言的标准。这标志着面向 对象技术领域中关于建模语言的争论也暂且告一段落。使用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 模型图在指导测试方面有如下优点【2 8 , 2 9 1 : ( 1 ) 通用性,u m l 作为标准建模语言,具有广泛的适用性,目前己被软 件开发界广泛采用,支持从软件需求分析到设计实现部署的各阶段,并有大量商 业工具支持。 ( 2 ) u m l 模型具有严格规范的o c l 表示形式,使得测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论