(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf_第1页
(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf_第2页
(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf_第3页
(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf_第4页
(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机应用技术专业论文)面向对象软件和ersm规范测试覆盖准则比较.pdf.pdf 免费下载

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

文档简介

学位论文数据集 l y 18 7 7 i l i l l 0 m 洲1 中图分类号 t p 3 1 1 5 学科分类号 5 2 0 4 0 论文编号 1 0 0 1 0 2 0 l 1 0 7 7 8 密级公开 学位授予单位代码 1 0 0 l o 学位授予单位名称北京化工大学 作者姓名王晓峰学号 2 0 0 7 0 0 0 7 7 8 获学位专业名称计算机应用技术获学位专业代码 0 8 1 2 0 3 课题来源自然科学基金项目研究方向软件测试与软件可靠性 论文题目面向对象软件和e f s m 规范测试覆盖准则比较 关键词 测试覆盖准则;测试质量:面向对象程序代码;e f s m 规范;包含关系 论文答辩日期 2 0 1 1 5 2 6论文类型 基础研究 学位论文评阅及答辩委员会情况 姓名职称工作单位学科专长 指导教师赵瑞莲教授北京化工大学软件测试与软件可靠性 过程工业监测、编译技 评阅人1彭四伟副教授北京化工大学 术应用、并行计算 评阅人2 赵会群教授 北方工业大学 软件测试 评阅人3 评阅人4 评阅人5 分布式系统、网格计算、 撇员蝴赵英教授北京化工大学 计算机网络 答辩委员1山岚教授北京化工大学网络信息获取技术研究 过程工业监测、编译技 答辩委员2 彭四伟 副教授 北京化工大学 术应用、并行计算 答辩委员3张杰副教授北京化工大学智能信息处理 答辩委员4聂伟副教授北京化工大学移动通信技术 答辩委员5 注:一论文类型:1 基础研究2 应用研究3 开发研究4 其它 二中图分类号在中国图书资料分类法查询。 三学科分类号在中华人民共和国国家标准( g b t1 3 7 4 5 9 ) 学科分类与代码中 查询。 四论文编号由单位代码和年份及学号的后四位组成。 吣23 产品的质,日口h 、j 以及 在整个开 发周期中所占的比重也越来越大。随着软件测试技术的广泛应用,各种测 试覆盖准则层出不穷。如何选取一个合适的覆盖准则,达到有限测试资源 和测试质量之间的折衷,是一个迫切需要解决的问题。 目前已有的软件测试覆盖准则研究,大多是针对程序代码或者软件规 范的,很少将两者结合起来进行考虑。此外,面向对象技术在软件开发中 应用越来越广,正逐步取代传统的面向过程的软件开发技术。同时,随着 形式化规范说明的推广和应用,基于规范的软件测试在学术界和工业界得 到了广泛的关注。扩展有限状态机( e x t e n d e df i n i t es t a t em a c h i n e ,e f s m ) 作为一种常用的软件描述规范,能够更加精确地刻画软件系统的动态行 为,这也使得它有了广阔的应用前景。 因此,本文从面向对象程序代码和e f s m 规范两方面出发,对现有 测试覆盖准则进行了分析比较,给出了两个新的测试覆盖准则:针对面向 对象程序代码的基本m m ( 方法消息) 路径覆盖准则和针对e f s m 规范的 基本迁移路径覆盖准则,对现有的测试覆盖准则进行了扩充,并对基于面 向对象程序和e f s m 规范的测试覆盖准则进行了公理化评估,通过实验 得出了一组包含关系,验证了公理评估的结论,给出了基于e f s m 规范 北京化工大学硕士学位论文 的和面向对象程序的测试覆盖准则之间的一些对应关系,为测试人员在测 试准则的选取上提供了一定的指导。 关键字:测试覆盖准则,测试质量,面向对象程序代码,e f s m 规范,包 含关系 i i a b s t r a c t c o m p a r i s o no fo b j e c l l - o r i e n t e ds o f t w a r ea n d e f s ms p e c i f i c a t i o nt e s t i n gc o v e r a g ec r i t e r j a a b s t r a c t s o r w a r ep r o d u c t sh a v eb e e na p p l i e dt oe v e r yd o m a i no fs o c i a ll i v e s ,a n d p e o p l eh a v ea t t a c h e dm o r ea n dm o r ei m p o r t a n c e t o q u a l i t yo fs o r w a r e p r o d u c t s s o m a r et e s t i n gi st a 妯n gm o r ea n dm o r es h a r e st h r o u g ht h ee n t i r e d e v e l o p m e n tc y c l ea sap d m a 巧m e a n st o a s s u r et h eq u a l i t yo fs o r w a r e p r o d u c t s ,t o o w i t ht h es o r w a r et e s t i n gt e c h n o l o g yw i d e l yu s e d ,t h en u m b e r o f t e s t i n gc o v e r a g ec r i t e r i ai si n c r e a s i n ga l lt h et i m e i t sa nu 玛e n tp r o b l e mt o b es o l v e dm a th o wt oc h o o s ea n 印p r o p r i a t ec o v e r a g ec r i t e r i o na n dg e ta t r a d e o f fb e t w e e nl i m i t e dt e s t i n gr e s o u r c e sa n d t e s t i n gq u a l i 够 n o w ;e x i s t i n gr e s e a r c ho ns o r w a r et e s t i n gc o v e r a g ec r i t e r i ah a v em o s t l y s t a r t e df 幻mp r o g r a mc o d eo rs o r w a r es p e c i f i c a t i o n ,a n dr a r e l yc o n s i d e r e dm e t w os i d e st o g e t h e r m o r e o v e r ,m eo b je c t - o r i e n t e dt e c h n o l o g yi sb e i n gw i d e l y u s e di nt h es o r w a r e d e v e l o p m e n t a n d r 印l a c i n g m et r a d i t i o n a l p r o c e d u r e o r i e n t e ds o r w a r ed e v e l o p m e n tt e c l l i l o l o g ys t 印b ys t 印m e a n w h i l e , a l o n gw i t hp r o m o t i o na n da p p l i c a t i o no ff o r m a ls p e c i f i c a t i o n ,s o r w a r et e s t i n g b a s e do ns p e c i f i c a t i o ni sg a i n i n gm o r ea 1 1 dm o r ea t t e n t i o ni nt h es c i e n c ef i e l d a n dt h ei n d u s 时f i e l d e f s m ( e x t e n d e df i l l i t es t a t em a c h i n e ) i sas o 脚a r e d 印i c t i o ns p e c i f i c a t i o ni nc o m m o nu s e ,a i l dc a nm o r ea c c u r a t e l yd e s c r i b et h e i 北京化丁大学硕:学位论文 d y n a m i cb e h a v i o ro fs o r w a r es y s t e m s ,s oi th a sa ne x p a n s i v e 印p l i c a t i o n f i o r e g r o u n d v t h u s ,t h i sp 印e rs t a n s舶mo b je c t o r i e n t e dp r o g 姗c o d ea n de f s m s p e c i f i c a t i o n ,a n a l y s e sa n dc o m p a r e st h ee x i s t i n gt e s t i n gc o v e r a g ec r i t e r i a , g i v e st 、) l ,on e wt e s t i n gc o v e m g ec r i t e r i a :o b je c t o r i e n t e dp r o g r a mc o d e b a s e d b a s i c m m ( m e t h o d m e s s a g e )p a t h c o v e r a g e c r i t e r i o na n de f s m s p e c i f i c a t i o n - b a s e db a s i ct r a n s i t i o np a t hc o v e r a g ec r i t e f i o n ,a n de x t e n d st h e e x i s t i n gt e s t i n gc o v e r a g ec r i t e r i a t h e nt h i sp a p e rd o e sa x i o m a t i ca s s e s s m e n t o fo b j e c t 。o r i e n t e d p r o g r :l i n b a s e da n de f s ms p e c i f i c a t i o n b a s e d t e s t i n g c o v e r a g ec r i t 耐a f i n a l l y ,t h r o l l 曲e x p 耐m e n t st h i sp 印e rg e t sag r o u po f s u b s u m p t i o n s ,v a l i d a t e st l l ec o n c l u s i o n so fa x i o m a t i ca s s e s s m e n t ,g i v e ss o m e c o r r e s p o n d i n gr e l a t i o n s锄o n gt e s t i n gc o v e r a g ec r i t 嘶ab a s e do ne f s m s p e c i f i c a t i o na n dt e s t i n gc o v e r a g ec r i t e r i ab a s e do no b j e c t - o d e n t e dp r o g r a m , a n dg i v e ss o m ei n s t m c t i o n so ns e l e c t i o no f t e s t i n gc r i t e r i at os o r w a r et e s t e r s k e yw o r d s : t e s t i n gc o v e r a g ec r i t e r i a ,t e s t i n gq u a l i t mo b je c t o r i e n t e d p r o g r u nc o d e ,e f s ms p e c i f i c a t i o n ,s u b s u n l p t i o n i v 第二章面向对象软件和形式化规范测试覆盖准则概述7 2 1 传统的软件测试覆盖准则7 2 2 面向对象软件测试覆盖准则9 2 2 1 面向对象特性对软件测试的影响9 2 2 2 面向对象软件测试层次的划分和常见的测试覆盖准则1 1 2 3 基于形式化规范的测试覆盖准则1 4 2 3 1 常用的形式化规范1 4 2 3 2e f s m 简介1 4 2 3 3 基于e f s m 规范的测试覆盖准则1 7 2 4 本章小结1 9 第三章现有测试覆盖准则评估方法2 1 3 1 测试覆盖准则的有效性比较2 l 3 2 测试覆盖准则的公理系统2 5 3 3 本章小结2 8 第四章面向对象软件和e f s m 规范测试覆盖准则综合比较2 9 4 1 面向对象软件的基本洲路径覆盖定义2 9 4 2 基于e f s m 规范的基本迁移路径覆盖定义3 1 4 3 测试覆盖准则的公理评估3 2 4 4 本章小结3 6 第五章面向对象软件和e f s m 规范测试覆盖准则实验比较3 7 5 1 实验设计3 7 5 2 实验实现3 8 5 3 实验结果分析4 0 v 1 1 3 4 5 北京化工大学硕:l 学位论文 5 4 本章小结4 4 第六章结束语4 5 6 1 本文的主要贡献4 5 6 2 进一步的工作4 5 参考文献4 7 致谢5 1 攻读学位期间发表的学术论文5 3 作者和导师简介5 5 1 4c o n f i 删o no f t h ep 印e r 5 c h a p t e r2o v e r v i e wo fo b j e c t - o r i e n t e ds o f t w a r ea n df i o r m a ls p e c i f i c a t i o n t e s t i n gc o v e r a g ec r i t e r i a 7 2 1t | a d i t i o n a ls o r w a r ct e s t i n gc o v e f a g ec r i t e f i a 7 2 2o b j e c t 耐e i l t c ds o r w a r et e s t i n gc o v e r a g ec r i t 甜a 9 2 2 1h i l p a c to fo b j e c t o r i e i l t e df e a t u r e so ns o 脚a r ct e s t i n g 9 2 2 2h i e r a r c h yd i v i s i o no fo b j e c t o r i e i l t e ds o r w a r et e s t i n ga i l dm ef a m i l i a rt e s t i n g c o v e r a g ec 打t 耐a 1 l 2 3t e s t i n gc o v e r a g e 嘶t 甜ab a s e do nf o m a ls p e c i f i c a t i o n 1 4 2 3 1f o n n a ls p e c i f i c a t i o n si i lc o m l o nu s e 1 4 2 3 2e f s mb d e fi n t r o d u c t i o n 1 4 2 3 3t e s t i n gc o v e r a g e 嘶t 耐ab a s e d0 ne f s ms p e c i f i c a t i o n 1 7 2 4s 埘n m a 珂o f t h i sc h a p t e f 1 9 c h a p t e r3e x i s t i n ga s s e s s m e n t m e t h o d so ft e s t i n gc o v e r a g e c r i t e r i a 2 1 3 1e 仃e c t i v e l l e s sc o m p a r i s o no f t e s t i n gc o v e r a g e 嘶t 耐a 2 1 3 2a x i o m a t i cs y s t 锨so ft e s t i n gc o v e r a g ec r i t 耐a 2 5 3 3s l 姗i i i l a r yo f l i sc h a p t e r 2 8 c h a p t e r4i n t e g r a t e dc o m p a r i s o no fo b j e c t o r i e n t e ds o f t w a r ea n de f s t 垤 s p e c i f i c a t i o nt e s t i n gc o v e r a g ec r i t e r i a 2 9 v i i 一一 北京化工大学硕上学位论文 二_ _ = = = _ = - 一 一一 4 1b a s i cm m p a mc o v e m g ed e f i i l i t i o nb a s e do n0 b j e c t o r i 铋t e ds o 胁a r e 2 9 4 2b 弱i c 仃a i l s i t i o np a t hc 0 v e r a g ed e f i n i t i o nb a s e do ne f s m s p e c i f i c a t i o n 3l 4 3a x i o m a t i c 嬲s e s s m e mo f t e s t i n gc o v e r a g e 嘶t 丽a 3 2 4 4s u m m a 巧o fn l i sc h a p t e r 3 6 c h a p t e r5e x p e r i m e n t a lc o m p a r i s o no fo b je c t o r i e n t e ds o f h v a r ea n d e f s m s p e c i f i c a t i o nt e s t i n gc o v e r a g ec r i t e r i a 3 7 5 1e x p e r i m 咖a l d e s i 印3 7 5 2e x p 舐m e l l t a l i m p l e i i l t a t i o n 3 8 5 2a n a l y s i so f e x p 矗m e n t a lr e s u l t s 4 0 5 3s u 舢n 哪o f t h i sc h 印t c r 4 4 c h a p t e r6c o n c i u s i o n 4 5 6 1p r i m a 巧c o n t r i b u t i o n so f t l l i sp a p e r 4 5 6 2f u t u r e 、o r k 4 5 r e f e r e n c e s 4 7 a c k n o w l e d g e m e n t 5 1 s c i e n c ep a p e rp u b u s h e d 5 3 b r i e fi n t l o d u c t i o nt oa u t h o r 5 5 v i i i 第一章绪论 第一章绪论 近年来,计算机软件技术和硬件技术得到了长足的发展,特别是编程开发技术日 新月异,软件产品的开发也变得越来越方便越来越快捷。小到超市购物、多媒体教学, 大到银行证券交易、航空航天控制,到处都可以发现软件产品的应用,软件产品已经 与我们的日常生活息息相关。随着人们对软件产品依赖性的增强,软件产品一旦发生 故障,所带来的损失也越来越大。自然,人们对软件产品质量和可靠性的期望也越来 越高。由于软件产品的开发和维护过程都是由人参与完成的,同时考虑到软件产品规 模的扩大和复杂程度的增加,所以软件产品中存在一些错误有时是不可避免的。为了 保证软件产品的质量和可靠性,需要开发人员查找到软件中的这些错误并修复它们。 软件测试是查找软件产品中的错误以保证软件质量和可靠性的主要手段,因此开 发人员投入到软件测试中的人力和物力资源正在不断增加。据统计,在整个软件开发 过程中,不少于4 0 的工作量会用在软件测试上,在一些高精尖的关键领域中,测试 那种软件质量要求极高的系统软件所需要的成本,是软件开发过程中其余阶段所需总 成本的3 倍5 倍【l 】。软件测试的理论和应用技术在生产实践中得到了不断的完善和发 展。 1 1 课题研究的背景与意义 1 9 8 3 年i e e e 定义的软件测试为:软件测试是测试人员执行待测系统的过程,这 个过程既可以人工完成,也可以自动完成,这个过程的目的是验证系统是否符合规格 说明,或是查明实际输出或响应和预期输出或响应有无不同【2 】。 不管如何看重测试的重要性以及它对程序可靠性的影响都不为过,在整个开发过 程中,由于开发人员和客户之间的理解偏差、开发人员之间的沟通不畅、开发人员的 编码疏忽等,都可能给软件引入错误,尽早地发现这些错误并加以修正,可以避免不 必要的资源浪费和大量的经济损失。软件测试作为保证软件质量和可靠性的重要手 段,必须得到足够的重视。 测试覆盖准则是软件测试的一个重要组成部分。简单地说,测试覆盖准则就是一 组规则,这组规则可以用来判断程序是否已经被充分测试。测试充分性可以用测试覆 盖准则来度量。测试覆盖准则主要有两个作用:一是可以作为选取测试用例的标准, 最终得到满足这个测试覆盖准则的测试用例集;一是在软件测试过程中,当测试已经 满足这个测试覆盖准则,或者这个测试覆盖准则对应的覆盖率已经达到要求,就可以 认为软件得到了充分的测试,即该测试覆盖准则作为测试的停止准则。不难发现,测 试覆盖准则在整个测试过程中占有举足轻重的地位,是保证软件质量的一个十分重要 北京化工大学硕士学位论文 的因素。 软件的开发规模越来越大,新的开发技术也随之出现,比较有代表性的是面向对 象开发语言的应用,比如c 什、j a v a 、p y t h o n 等语言。面向对象开发技术认为现实世 界中的各种实体之间存在着联系,把具有相同属性的对象抽象成类,类是面向对象编 程中的基本单位,一个对象就是类的一个实例,这个对象具有这个类的所有属性,不 同对象之间通过交互,来模拟不同事物之间的联系,这也符合人们的思维习惯。面向 对象技术的引入掀起了软件工程领域的一次革命,它大大提高了软件开发的效率,节 约了开发成本,缩短了软件开发的周期,并且保证了软件的可维护性和可重用性,因 此面向对象技术越来越受到开发人员的青睐,正逐步地取代广泛使用的面向过程的开 发方法,比如c 语言开发方法,开发人员把它当作解决软件危机的重要方法。面向对 象技术具有继承、封装、多态、动态绑定等多种特性【3 卅,这些特性在给开发过程带来 便捷的同时,也导致了传统的面向过程的软件测试已经不能满足当前软件测试的要 求,给软件测试提出了新的挑战【7 1 。 传统的面向过程的软件测试技术已经得到了迅速的发展,形成了一套较完善的理 论体系,相关的测试覆盖准则研究也已经趋于完善,传统的测试覆盖准则仍然适用于 面向对象软件测试,只是已经不能充分满足当前面向对象软件测试的需要。随着面向 对象软件测试技术的广泛应用,各种新的测试覆盖准则层出不穷。 另外,在软件测试的规范方面,随着形式化规范说明的推广和应用,基于规范的 软件测试在学术界和工业界得到了越来越多的关注。u m l 状态图、有限状态机( f i n i t e s t a t em a c | i l i n e ,f s m ) 和扩展有限状态机( e x t 锄d e df i n i t es t a t em a c h i n e ,e f s m ) 等是 应用较多的形式化规范。由于e f s m 规范考虑了f s m 规范的不足,加入了规范中含 有变量的情况、加入了状态迁移时需要满足的前置条件、加入了状态迁移后需要对变 量进行的操作等,使得对软件系统动态交互行为的描述更加准确,并且没有u m l ( 统 一建模语言) 状态图的层次和并发结构,目前已被标准化组织用作通信协议形式化描述 技术的底层模型,在嵌入式系统领域、面向对象系统领域等都有广泛的应用,它有十 分广阔的应用前景。与之相对应,软件规范方面的测试覆盖准则研究也在不断发展和 深入。 在人们不断追求经济效益最大化的今天,人们希望花费最少的人力物力,获得最 大的经济回报。一个软件产品要获得客户的认可,首先要保证它的质量,质量是所有 产品的灵魂。但是在实际的开发测试过程中,开发人员会受到工程进度、硬件环境、 软件环境等多方面因素的限制,面对目前如此繁多的测试覆盖准则,如何在测试过程 中选取一个合适的测试覆盖准则,以达到有限的测试资源和测试质量之间的折衷,是 一个迫切需要解决的问题。 因此,对现有基于面向对象软件和基于规范的测试覆盖准则做综合比较,分析它 们之间有效性的高低( 即测试覆盖准则之间的强弱关系) 以及基于规范和基于面向对象 2 目前,已有一些针对代码的测试覆盖准则比较研究。 例如,s r a p p s 和e j w b y u k e r 发现测试覆盖准则只考虑程序的控制流是不充分 的,在分析程序中变量的定义点和使用点的基础上,提出了一组新的数据流测试覆盖 准则,并给出了这组数据流测试覆盖准则的包含关系【s l 。 s c n t a f o s 给定了一组结构化测试覆盖准则,根据各个测试覆盖准则的定义,推 导出了这组测试覆盖准则的包含关系和在最坏情况下满足各个测试覆盖准则所需测 试用例的数量级,但是这两个结果都没有在实际程序中验证【9 】。 l a c l 破e 等对已有的一些数据流测试覆盖准则进行了分析整理,并对其中的一 些测试覆盖准则做了适当的修改,对前人的研究做了有效的扩充,然后根据这些数据 流测试覆盖准则的定义,借助一些合理的控制流图模型,给出了这些测试覆盖准则之 间新的包含关系,但是这些包含关系未进行实验验证【l o 】。 p gf 砌n k l 和s n w 萌s s 在9 个带有敏感错误的程序上对全使用测试覆盖准则和 分支测试覆盖准则的有效性进行了实验研究【l 。实验中,考察了两种测试覆盖准则的 充分测试集的检错能力和类似大小的两种测试覆盖准则的充分测试集的检错能力,另 外,实验中还首次引入了统计学上的逻辑回归模型来分析检错概率和覆盖率大小的关 系。m h u t c l l i n s 等对分支覆盖准则和全定义使用对覆盖准则进行了比较,通过在7 个中等大小的基准程序中植入实际错误,得到了1 3 0 个错误程序,为每个错误程序生 成了几千个测试用例集,考察了错误检测能力和覆盖率之间的关系,发现能够达到 9 0 以上覆盖率的测试用例集比随机选中的同等大小的测试用例集有更好的检错能 力;当覆盖率从9 0 增长到1 0 0 的过程中,测试覆盖准则的效率有明显的提高;单 纯的1 0 0 的代码覆盖并不是一个可靠的衡量测试集有效性的指标,控制流测试覆盖 准则和数据流测试覆盖准则在它们的有效性上常常是互补的【忆】。p gf 麟l l 【l 和o i a k o u n e n k o 在欧洲宇航局编写的天线配置程序的8 个版本上,进一步研究了分支覆盖 准则和全使用覆盖准则的检错能力以及覆盖率和检错能力之间的关系,证实当覆盖率 达到较高水平时,发现错误的可能性会明显增加,这两种测试覆盖技术都比随机测试 有效的多【1 3 】。 e j 啡e r 针对一组数据流测试覆盖准则,通过实验给出了使用这些测试覆盖 准则所需要的实际花销,实验结果可以帮助软件测试人员了解这些测试覆盖准则在实 3 北京化工大学硕士学位论文 际应用中的有效性,同时可以作为估计对于一个给定的程序所需要的测试用例数量的 基础【1 4 1 。 n l i 等对单元测试级别上的变异覆盖、主要路径覆盖、边对覆盖和全使用覆盖 进行了实验比较【l5 1 。实验主要基于两个基准:满足不同测试覆盖准则的用例集查找到 的植入错误的数量和满足不同测试覆盖准则所需测试用例的数目。实验结果表明变异 测试能够找到更多的植入错误,其它三个覆盖准则查找到的错误数量比较接近。另外, 实验还比较了四种测试覆盖准则的花销效率比,即查找一个错误所需的测试用例的数 目,结果显示变异覆盖所需的测试用例的数目是最少的,同时文章还讨论了实验中未 发现的错误及其原因。 同时,现在也有一些针对规范的测试覆盖准则比较。 a s i m a 0 等针对f s m ( 有限状态机) 规格说明,进行了状态覆盖、迁移覆盖、初始 化错误覆盖和迁移错误覆盖的比较,详细描述了一个比较方法,其中包括f s m 的随 机产生、充分测试集的构造和针对每个测试覆盖准则以统一的方法对前面生成的充分 测试集做测试用例集的最小化,并给出了一个测试用例集的贪心最小化算法。最后, 通过实验结果分别给出了满足这几种测试覆盖准则所需测试用例的数量级,并和所需 测试用例数量级的理论上限做了比较,同时讨论了f s m 中不同参数对测试用例数量 的影唰1 6 】。 刘玲和缪淮扣在总结前人研究的基础上,给出了逻辑覆盖软件测试充分性准则的 公理系统【1 7 】,其中包括公理化的描述和形式化的分析,并对谓词覆盖、子句覆盖、组 合覆盖、一般主动子旬覆盖、相关活动子旬覆盖和受限活动子旬覆盖f 1 8 1 9 】进行了公理 化评估,根据评估结果推出相关活动子旬覆盖是其中最实用的,但未在实际程序中验 证。 缪淮扣和费立志描述了u m l 状态图上的状态覆盖、迁移覆盖和全谓词覆盖【2 0 ,2 1 1 , 并给出了两个新的测试覆盖准则:一个是n 迁移覆盖,另一个是循环分类覆盖,接着 给出了u m l 状态图测试充分性准则的公理系统,并对上述u m l 状态图上的测试覆 盖准则进行了公理化评估,根据评估结果推出全谓词覆盖和n 迁移覆盖是最实用的, 但未在实际程序中验证【2 2 】。 综上可知,目前已有的软件测试覆盖准则研究,要么从程序代码出发,要么从规 范出发,很少有研究将二者结合起来考虑。 1 3 本文的主要工作 随着软件测试技术的不断发展,各种测试覆盖准则层出不穷,需要对现有测试覆 盖准则进行比较,给测试人员提供一定的指导。针对现有研究现状,本文对基于面向 4 第一章绪论 对象软件和基于e f s m 规范的测试覆盖准则进行了深入地综合地分析和比较,主要完 成了以下工作: 分析了软件测试的背景和现状,介绍了面向对象技术特点对软件测试的影响、 面向对象软件测试的层次划分以及e f s m 模型,得出了常见的基于面向对象 软件和e f s m 规范的测试覆盖准则。 详细讨论了两种已有的测试覆盖准则评估方法:一是通过各种“关系进行 测试覆盖准则的有效性比较,并给出了各种“关系 存在的不足;一是通过 测试覆盖准则的公理系统对测试覆盖准则进行公理评估,进而对测试覆盖准 则进行分析评估。 针对现有测试覆盖准则的不足,提出了针对面向对象软件的基本m m 路径覆 盖准则和针对e f s m 规范的基本迁移路径覆盖准则,对现有测试覆盖准则进 行了扩充,并给出了基本m m 路径覆盖和基本迁移路径覆盖分别对应的基本 m m 路径集和基本迁移路径集的定义和生成算法,讨论了基本m m 路径覆盖 准则和基本迁移路径覆盖准则的有效性。 对面向对象软件和e f s m 规范的测试覆盖准则,分别用公理系统进行了公理,穹 化评估,在此基础上,结合各个覆盖准则的定义及它们在实际中的应用,得 出了一组结论。 对面向对象软件和e f s m 规范的测试覆盖准则,在7 个j a v a 被测软件上,以 墼 状态覆盖、迁移覆盖、基本迁移路径覆盖、基本m m 路径覆盖为基准进行了 实验研究,给出了一组包含关系,基本符合公理评估的结论,进一步证实了 , 基本m m 路径覆盖和基本迁移路径覆盖的实用性;同时,也分析得出了一些 基于规范和面向对象程序测试覆盖准则之间的对应关系,为测试人员在测试 覆盖准则的选取上提供了定的指导。 1 4 本文的组织结构 本文组织结构安排如下: 第一章介绍了课题研究的背景与意义、国内外研究现状、本文的主要工作及组织 结构。 第二章介绍了面向对象软件测试和常用的形式化规范说明,对基于面向对象软件 和e f s m 规范的常用测试覆盖准则进行了概述。 第三章介绍了现有的测试覆盖准则评估方法,主要分为两种:一种是通过各种“关 系”对测试覆盖准则进行比较;另一种是通过测试覆盖准则的公理系统对测试覆盖准 则进行比较。 5 第四章提出了针对面向对象软件的基本m m 路径覆盖准则和针对e f s m 规范的基 本迁移路径覆盖准则,并对基于面向对象软件和e f s m 规范的测试覆盖准则进行了公 理化评估。 第五章通过实验比较了基于面向对象软件和e f s m 规范的测试覆盖准则,得到了 一组包含关系以及基于规范的和基于面向对象程序的测试覆盖准则之间的一些对应 关系。 第六章给出了课题研究的主要贡献,提出了进一步的工作计划。 6 第二章面向对象软件和形式化规范测试覆盖准则概述 第二章面向对象软件和形式化规范测试覆盖准则概述 毋庸置疑,软件测试是软件开发过程中一个十分重要的部分,可以用于软件产品 的质量保证、可靠性评估、验证和确认【2 3 】。软件测试是一个宽泛的术语,它包含了一 系列的活动,这些活动伴随在整个软件开发周期中,并且有不同的目标【2 4 1 。软件测试是 查找软件产品中的错误以保证软件质量和可靠性的主要手段,人们对于软件测试的关 注程度越来越高。随着软件代码量的不断扩大和软件复杂程度的增加,无形中软件测 试的难度也在不断增加。深入研究软件测试技术以满足当前软件开发的需要,是十分 必要的。 软件测试的目的不是为了验证软件的正确性,是通过执行被测程序进而查找错误 的过程,或者说软件测试是在软件开发各阶段的规格说明和程序的内部控制结构的基 础上,精心设计一批测试用例,利用这些测试用例去执行程序,通过比较预期输出和 实际输出是否一致,而发现错误的过程【2 5 1 。 测试覆盖准则在软件测试中扮演着非常重要的角色,它既可以作为选取测试用例 的准则,也可以作为测试停止的基准,并且不同测试覆盖准则之间有“强弱”之分。 不同规模的软件产品,不同领域的软件产品,对软件质量的要求不一样,进而对测试 覆盖准则的要求也不尽相同。在实际的软件测试过程中,对软件质量要求比较高的, 要选取功能较强的测试覆盖准则;对软件质量要求比较低的,可以选取功能较弱的测 试覆盖准则。 本章将主要描述传统的面向过程的软件测试中的常见测试覆盖准则、面向对象技 术给软件测试带来的挑战、常用面向对象软件测试覆盖准则及基于e f s m 规范的常见 测试覆盖准则。 2 1 传统的软件测试覆盖准则 在实际测试过程中,测试人员所采用的技术是多种多样的。对于软件测试技术, 已经有了比较通用的分类。图2 1 给出了传统软件测试技术的划分。 7 北京化工大学硕士学位论文 图2 1 软件测试技术划分 f i g 2 一lp a r t i t i o no fs o f h a r et 懿t i i l gt e c h n o l o 舀懿 测试覆盖准则和各种各样的软件测试技术是紧密相关的。测试覆盖准则中最常见 的是白盒测试中的逻辑覆盖,也称为代码覆盖或者结构化覆盖。在实际的测试过程中, 我们经常接触到的逻辑覆盖包括:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、 条件组合覆盖、路径覆盖等。下面简单介绍一下这几种覆盖: ( 1 ) 语句覆盖 语句覆盖,又叫做行覆盖,它的定义为,选择充足的测试用例,保证待测软件中 的每一行代码至少被执行一遍。注意这里的“充足 指的是要满足定义的要求,不是 指片面的追求测试用例数量的意思。它的覆盖率计算公式如下: 语句覆盖率= 已经执行的语句数程序中总的可执行语句数1 0 0 虽然语句覆盖是一个很弱的逻辑覆盖标准,但是语句覆盖最直观,且已经有大量 的自动化测试工具可以统计它。另外,测试人员发现对所有可执行代码达到lo o 的 语句覆盖是可行的。 ( 2 ) 判定覆盖 判定覆盖,又称为分支覆盖,它的定义为,选择充足的测试用例,保证待测软件 中的每个分支的t m e 和f a l s e 两种结果都应该至少被执行一遍。显然,判定覆盖的覆 盖强度高于语句覆盖。它的覆盖率计算公式如下: 判定覆盖率= 已经执行的判定分支数程序中总的判定分支数1 0 0 类似于语句覆盖,在实际测试过程中,测试人员发现达到完全的分支覆盖也是可 以实现的。 分支覆盖有一个缺陷,当一个判定式由多个条件项构成时,满足分支覆盖只需要 这些条件项取值组合中的两个就可以,每个条件项本身有可能并没有得到彻底的测 试。 ( 3 ) 条件覆盖 第二章面向对象软件和形式化规范测试覆盖准则概述 条件覆盖,它的定义为,选择充足的测试用例,保证可以取到待测软件中组成分 支表达式的所有条件的全部可行结果。它的覆盖率计算公式如下: 条件覆盖率= 已经执行的条件可取值的个数程序中总的条件可取值的个数 1 0 0 条件覆盖关注的是每个条件的取值,分支覆盖关注的是整个条件式的值,一般情 况下,条件覆盖的强度高一点。但是也有例外的情况,测试用例满足了条件覆盖,却 没有满足分支覆盖。 ( 4 ) 判定条件覆盖 判定条件覆盖,它的定义为,选择充足的测试用例,保证可以取到待测软件中所 有判定式和组成判定式的所有条件的全部可行结果。判定条件覆盖既包含了判定覆 盖,也包含了条件覆盖。 ( 5 ) 条件组合覆盖 条件组合覆盖,它的定义为,选择充足的测试用例,保证待测软件中组成每个条 件式的条件的所有取值组合都被覆盖到。它的覆盖率计算公式如下: 条件组合覆盖率= 已经执行的条件组合的个数程序中总的条件组合的个数 1 0 0 不难发现,条件组合覆盖包含判定条件覆盖,条件组合覆盖的覆盖强度比前面几 种都高。 ( 6 ) 路径覆盖 路径覆盖,它的定义为,选择充足的测试用例,保证待测软件中的所有可能路径 都被执行到。它的覆盖率计算公式如下: 路径覆盖率= 已经执行的路径数程序中总的路径数幸1 0 0 路径覆盖的覆盖强度是很高的。但在实际测试过程中,待测软件包含的路径数可 能“非常多 ,满足路径覆盖要花费大量的人力和物力,这是不现实的。另外,实现 自动统计路径覆盖也存在相当大的阻力。 测试人员还发现,满足了完全的结构化覆盖,仍然不能认为程序已经没有错误。 前面已经提到,软件测试的目的在于尽可能地查找程序中存在的缺陷和错误,而不是 验证软件的正确性。测试人员在测试过程中未查找到错误,不能完全保证程序的可靠 性,有可能错误仍然隐藏在程序中。 2 2 面向对象软件测试覆盖准则 2 2 1 面向对象特性对软件测试的影响 面向对象技术具有的封装性、继承性、多态性和动态绑定等特性,提高了软件的 9 北京化工大学硕士学位论文 可重用性和可维护性,但也引入了传统开发过程中不存在的错误,给软件测试带

温馨提示

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

评论

0/150

提交评论