已阅读5页,还剩84页未读, 继续免费阅读
(计算机应用技术专业论文)测试用例利用技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哈尔滨工程大学硕士学位论文 摘要 软件测试作为保证软件质量的重要手段,测试用例的设计对软 件测试的成败起着至关重要的作用。然而由于软件测试用例的设计 在很大程度上依赖于测试人员的个人经验,测试用例的编写格式也 随着编写人员的变化而不同,给测试带来了很大的盲目性,导致软 件质量得不到保证。 针对以上问题,论文对软件测试用例的复用进行了研究,描述 了面向复用的测试用例建立的一般流程,提出了面向复用的测试用 例模型。对x m l 语言进行研究分析,采用x m ls c h e m a 描述面向复 用的测试用例模型为面向复用的测试用例提供了统一的描述框架规 范。最后,分析面向复用的测试用例模型中的各种可复用资源及其 相互关系,根据可复用资源之间复用的不同粒度,提出了包含、组 合、继承和扩展四种复用方式。 可复用性是面向复用的测试用例的一个重要特征。因此,论文 提出了复用度概念;定义了静态复用度公式,用于计算面向复用的 测试用例及其可复用资源的复用度;分析了面向复用的测试用例的 复用过程;提出了动态复用度算法。 为了衡量面向复用的测试用例的可复用性,建立了面向复用的 测试用例评价体系。在该评价体系的基础上,构建了面向复用的测 试用例的可复用性量化的评价模型。最后,设计了一个面向复用的 测试用例的复用案例。结果证明,面向复用的测试用例的复用缩短 了测试用例的设计时间,减少了溅试用例的设计错误,提高了测试 效率。 关键词:软件;软件测试;测试用例;复用;测试用例模型;评价 模型 哈尔滨丁程大学硕十学位论文 a b s tr a c t s o f t w a r et e s t i n gi sav e r yi m p o r t a n tm e a n st oa s s u r et h eq u a l i t yo f s o f t w a r e c h o o s i n gap r o p e rt e s t c a s ep l a y sav i t a lr o l ei nt h e t e s t h o w e v e r t h ep e r s o n a le x p e r i e n c eo ft h et e s t e ri sd e p e n d e dm u c ho n d u r i n gt h ed e s i g n i n go fat e s t c a s ea n dd i f f e r e n tt e s tc a s ec o m p i l i n g f o r m a t sa r ec o m p i l e do u tb yd i f f e r e n t t e s t e r s s ob i gb l i n d n e s si s b r o u g h ti nt h et e s ta n ds o f t w a r eq u a l i t yi sn o tc o n s e q u e n t l ya s s u r e d t h es o f t w a r et e s tc a s er e u s ei ss t u d i e d t or e s o l v et h ea b o v e p r o b l e m s 。t h eg e n e r a l c o u r s eo fe s t a b l i s h i n gr e u s a b l et e s t c a s e sl s d e s c r i b e d r e u s eo r i e n t e dt e s tc a s em o d e l ,am o d e l o ft e s tc a s e d e s i g ni sp r o p o s e d x m l i sa n a l y z e da n ds t u d i e d x m ls c h e m ai su s e d t od e s c r i b et h e m o d e lo fr e u s eo r i e n t e dt e s tc a s e t h e u n i f i e d d e s c r i p t i o nf r a m e w o r ks t a n d a r di sp r o v i d e d f i n a l l y ,i n t h em o d e lo f r e u s eo r i e n t e dt e s tc a s e ! r e u s a b l er e s o u r c e sa n dt h e i rr e l a t i o n s a r e a n a l y z e d f o u rr e u s i n g m e c h a n i s m sa r ed e f i n e di n c l u d i n gi n c l u s i o n , c o m b i n a t i o n ,i n h e r i t a n c ea n de x p a n s i o n ,a c c o r d i n gt ot h er e u s a b i l i t yo f r e u s a b l er e s o u r c e sw i t hd i f f e r e n tg r a n u l a r i t i e s r e u s a b i l i t y i sa ni m p o r t a n tf e a t u r eo f t h er e u s eo r i e n t e dt e s t c a s e t h e r e f o r e ,r e u s a b l ed e g r e ei sp r o p o s e d ;s t a t i cr e u s a b l ed e g r e e f 6 r m u l a sa r ed e f i n e d ,w h i c ha r eu s e dt oc a l c u l a t et h er e u s a b l ed e g r e e o ft h er e u s eo r i e n t e dt e s tc a s ea n dr e u s a b l er e s o u r c e s ;p r o c e s so ft h e r e u s eo r i e n t e dt e s tc a s er e u s ei sa n a l y z e d ;d y n a m i cr e u s a b l ed e g r e e a r i t h m e t i ci sp r o p o s e d i no r d e rt om e a s u r et h er e u s a b i l i t yo ft h e r e u s eo r i e n t e dt e s t c a s e e v a l u a t i o ns y s t e mo ft h er e u s eo r i e n t e dt e s tc a s ei s e s t a b l i s h e d b a s e do nt h ee v a l u a t i o ns y s t e m ,a ne v a l u a t i o nm o d e lo fm e a s u r e m e n t f o rr e u s eo r i e n t e dt e s t c a s er e u s a b i l i t yi sf o u n d f i n a l l y ,a n e x p e r i m e n t o f t h er e u s eo r i e n t e d t e s tc a s er e u s e i s d e s i g n e d 哈尔滨t 稗大学硕十学位论文 e x p e r i m e n tr e s u l t ss h o wt h a t t h er e u s eo r i e n t e dt e s tc a s er e u s e r e d u c e st h ed e s i g nt i m ea n dd e s i g np r o b l e m so ft e s tc a s e s ,i m p r o v et h e t e s te f f i c i e n c y k e y w o r d s : s o f t w a r e ;s o f t w a r et e s t ;t e s tc a s e ;r e u s e ;t e s tc a s em o d e l ; e v a l u a t i o nm o d e l 哈尔滨工程大学 学位论文原创性声明 本人郑重声明:本论文的所有工作,是在导师的指导下,由 作者本人独立完成的。有关观点、方法、数据和文献的引用已在 文中指出,并与参考文献相对应。除文中已注明引用的内容外, 本论文不包含任何其他个人或集体己经公开发表的作品成果。对 本文的研究做出重要贡献的个人和集体,均已在文中以明确方式 标明。本人完全意识到本声明的法律结果由本人承担。 作者( 签字) :毫月正艿 日期: 匀年弓月胁日 哈尔滨工程大学 学位论文授权使用声明 本人完全了解学校保护知识产权的有关规定,即研究生在校 攻读学位期间论文工作的知识产权属于哈尔滨工程大学。哈尔滨 工程大学有权保留并向国家有关部门或机构送交论文的复印件。 本人允许哈尔滨工程大学将论文的部分或全部内容编入有关数据 库进行检索,可采用影印、缩印或扫描等复制手段保存和汇编本 学位论文,可以公布论文的全部内容。同时本人保证毕业后结合 学位论文研究课题再撰写的论文一律注明作者第一署名单位为哈 尔滨工程大学。涉密学位论文待解密后适用本声明。 本论文( 留在授予学位后即可口在授予学位1 2 个月后 口 解密后) 由哈尔滨工程大学送交有关部f 作者( 签字) :吉日正隽 日期:卯7 年;月f 日 2 哈尔滨t 稃人学硕十学位论文 第1 章绪论 本章首先对论文选题的理由和背景进行总结和归纳,然后对目 前国内外在相关领域的研究动态进行描述,主要包括软件测试和测 试复用两个方面。最后介绍了本论文的研究内容和结构安排。 1 1研究背景和意义 信息技术的飞速发展,使软件产品更广泛地应用到各个领域, 软件产品的质量自然成为人们关注的焦点。质量不佳的软件产品不 仅会使开发商的维护费用和用户的使用成本大幅增加,在一些关键 应用中还可能造成灾难性后果。因此软件产品的质量和可靠性需要 得到保障。 软件测试是指使用人工或者自动的手段来运行或检验某个软件 产品系统的过程,其目的是在于检验软件是否满足规定的需求或者 弄清预期的结果与实际结果的区别。软件开发的目的是开发出实现 用户需求的高质量、高性能的软件产品,软件测试以检查软件产品 内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实 现软件开发目标的重要保障。 然而软件测试是一项繁琐而复杂的工作,近年来虽然软件测试 有了较大的发展,但仍无法满足当今软件开发的实际需要。因此, 满足软件开发的实际需要是提高软件测试的有效性,以确保软件系 统的质量,也是软件测试研究人员所追求的目标。 在软件测试过程中,测试用例( t e s tc a s e ) 的选择对软件测试 的成败起着至关重要的作用,测试用例设计的基本目的是确定一组 最有可能发现某个错误或某类错误的测试数据,实现系统对某个功 能的测试。测试用例设计过程约占整个测试过程的6 0 ,其结果直 接影响测试的质量和效果。由于时间和费用的问题不可能进行穷举 测试。所以,测试用例的设计人员必须用最少量的测试用例,来发 1 哈尔滨t 程大学硕十学何论文 现最大量的可能性错误。提高测试效率、降低测试成本,是测试用 例的设计者的目标或努力的方向。 然而,软件测试技术的发展还不是很成熟,软件测试用例的设 计在很大程度上依赖于测试人员的个人经验,给测试带来很大的盲 目性,从而导致软件测试结果的重现性差,不同的测试人员对同一 个软件的测试结果有时是不同的,使软件测试的质量得不到保证。 针对当前软件测试存在的困难,可以从测试用例的复用方面进 行考虑。简单来讲,测试用例复用就是把一个已有的软件测试用例 在新的软件测试中使用,或在软件做出修改后再在修改后的软件测 试时使用,也包括在相似软件间进行一定的选择后使用。这里的复 用主要包括测试用例的设计思想、具体内容、执行步骤,以及测试 过程中产生的信息在新的软件测试中的使用。通过测试用例的复用 不仅解决了新测试人员经验不足的问题,又能节省用于测试用例开 发的时间、精力和财力,从而能够最大限度的提高测试用例的使用 效率,缩短测试时间,提高测试效率。 当然,实现测试用例的复用尚有许多困难,尚需要解决一系列 的技术问题,需要有一个系统化的方法和实现的途径,这正是本论 文要研究和解决的问题。 1 2国内外研究现状 1 2 1软件测试的研究现状 在整个软件生存期的各个阶段都贯穿着人的直接和间接的干 预,然而人的工作和交流都不可能完美无缺,出现错误是难免的。 同时,随着计算机所控制的对象的复杂程度不断提高和软件功能的 不断增强,软件的规模也在不断增大。例如w i n d o w s n t 操作系统的 代码大约有3 2 0 0 万行【2 】。因此,人们在软件的设计阶段所犯的错误 是导致软件失效的主要原因,软件复杂性是产生软件缺陷的重要的 根源【3 】。 软件测试作为软件质量保证活动的关键步骤,是软件工程产品 2 哈尔滨t 程大学硕十学位论文 的一个重要阶段,是在软件投入使用前,对软件需求分析、设计和 编码以及各阶段产品的最终检查,是为了检测软件错误,修正软件 错误,从而保证软件产品的正确性、完全性和一致性的过程。软件 开发的目的是开发出实现用户需求的高质量、高性能的软件产品, 软件测试以检查软件产品的内容和功能特性为核心,是成功实现软 件开发目标的重要保障【4 1 。 目前软件测试的现状主要呈以下几个特点【s 】。 ( 1 ) 测试与开发相融合。软件测试与开发过程的其他阶段不再 是串行工作方式,而是与整个开发过程并行进行。全过程测试不仅 可以有效降低产品的质量风险,而且还可以提前对软件产品缺陷进 行规避,这不仅缩短了对缺陷的反馈周期和整个项目的开发周期, 而且也大大降低了对软件产品的维修和维护费用,对于软件产品的 整个生命周期都有很重大的意义。例如:s y s t e m i ce v o l u t i f 公司在 9 0 年代提出了w 模型,该模型很好解决了错误发现的越早,发现和 解决错误的代价越小,风险越小。前置测试模型是由r o h mf g o l d s m i t h 等人提出的,是一个将测试和开发紧密结合的模型,它包括两 项测试计划技术【引,其中的第一项技术是开发基于需求的测试用例, 第二项技术是定义验收标准。 ( 2 ) 软件进行易测试性设计。软件易测试性设计是在软件的设 计和编码中考虑测试问题,它借鉴了硬件易测试性设计的思想,帮 助软件开发者在软件中嵌入测试信息,开发具有自测试能力且能够向 外界提供相应测试信息的软件。软件易测试性设计的目的是在不增 加或者少增加软件复杂性的基础上将易于测试的原则融合到设计和 编码之中1 7 。软件的易测试性设计方法包括d b c ( d e s i g nb y c o n t r a c t ) 、内建式测试和内建式自测试等几种方法。例如:提供断 言检查支持的j a v a 程序包,如s u nj d k l l4 ;嵌入合约的j a v a 源 程序进行预处理,将其转换为含有合约检查的程序,如i c o n t r a c t t s 】和 j a s s ;利用与j a v a 虚拟机的低级通信将合约在执行时刻快速插入的 系统,如j m s a s s e r t t7 9 1 0 】。 ( 3 ) 更充分、更频繁的利用自动化测试工具。软件测试逐步发 1 哈尔滨: 释入学硕十学位论文 展成为软件开发每一阶段都有进行而且需要反复进行测试,例如: 版本更新后一些模块可能要重新测试:单元测试、集成测试和确认 测试之间的测试用例的复用问题;在性能测试中,创建多用户并发 执行问题和场景设置问题。所以软件测试中需要大量的机械地、重 复地、非智力地工作,自动化测试的引人和推广是不可避免的趋势。 目前比较流行的软件测试工具软件有w e b 测试工具:m e r c u r y i n t e r a c t i v e 的w i n r u n n e r ,q t p 和l o a d r u n n e r ,i b mr a t i o n a l 的r o b o t , c o m p u w a r ec o m p a n y的q a r u n 等;嵌入式测试工具有 a t t o l t e s t w a r e 公司的a t t o l t e s t w a r e ,m e t r o w e r k s 公司的 c o d e t e s t 等;数据库测试工具有l o g i c w o r k s 公司的t e s t b y t e s 等: 内存泄漏测试工具有i b mr a t i o n a l 的p u r i f y ,华唐公司的i n s u r e + + 等;协议测试工具有s p i r e n t 公司的a b a c u s 系列等;网络路由测试 工具有s p i r e n t 公司的s m a r t b i t 等。 ( 4 ) 软件测试技术与不断出现的新技术相适应。软件开发技术 日新月异,从最初的面向过程到面向对象,到现在的组件式开发, 网络的应用把单纯的单机应用扩展到分布式计算,开发方式也从传 统的瀑布模式到现在的x p ( e x t r e m ep r o g r a m m i n g ) 、r u p ( r a t i o n a l u n i f i e dp r o c e s s ) 。各种新的开发技术层出不穷,相应的对每一个新 的开发技术必然要求有新的测试技术与之相适应。例如:m j h a r r o l d t ,】和b yt s a i z2 1 提出了在面向对象程序中实施数据流测试 的方法;d k u n g 等人 13 1 运用对象状态图对类程序进行建模表示,并 通过构造测试树生成测试用例;r k d o o n g t l 4 1 和t h t s e 1 5 1 从基于 公理的形式推理的角度来生成类测试用例,判断类程序是否按照预 期的规格说明进行实现等;w uy e 等用组件交互图束表示接口和事 件的直接关系,把c i g 图作为输入,用深度优先算法得到需求测试 路径集合1 ;b e y d e d a 和g r u h n 利用组件软件流图来测试组件软件 d t ,该方法根据软件需求和源代码信息生成流图,借助已有的结构 测试技术生成测试用例等。 4 哈尔滨 :程人学硕十学位论文 q t 1 2 2 测试复用的研究现状 目前国内外对测试复用的研究主要从可复用测试资源的生成、 管理和使用三个方面展开。 ( 1 ) 可复用测试资源( 原文中是资产,以下相同) 的生成。可 复用测试资源的生成方面研究最深入的是面向复用的测试用例的生 成。徐仁佐等从测试用例的分类着手,针对其具有的共性以及面向 对象语言的特点,构造了一个面向对象系统测试用例生成模型,在 理论上讨论了通过使用统一的调用模式,以达到测试用例复用的目 的f 1 8 l 。邵正隆等提出了一种面向复用的软件测试设计模型r o t d m , 该方法可以有效地提高测试资源的复用,从而达到提高测试效率的 目的【- 们。 ( 2 ) 可复用测试资源的管理。当软件生产趋于自动化时,测试 也需要自动化,而使得测试能够自动化的一个可行方法就是在测试 中溶入复用思想。张海飞提出了在测试流程模型中引入测试构件库 的思想【2 0 】。该测试构件库依据构造软件构件库的思路,结合了软件 测试的特点,以测试对象、测试功能、测试策略、表示方法和测试 环境为刻面刻画测试构件。 ( 3 ) 可复用测试资源的使用。不同的测试资源具有不同的复用 方式,对复用机制的研究针对不同的情况提出了多种复用方法。 j o n g s e o kk i m t 2 1 1 提出了复用测试结果的方法,该方法提出了一种重用 软构件的全新方式,使用该方法,可以自动判断软件构件在被重用 前是否需要重新测试:j e h a da id a l l a la n dp a u ls o r e n s o n 提出基于面 向对象框架接口类的测试用例复用,在配置框架时,不需要每次都 产生测试用例集,提高了软件产品的可维护性 2 2 1 ;l o n n g r e n 描述了 一个测试复用工具的实现 2 3 1 ;g u e r r i e r i e 提出了基于x m l 的软件文 档复用【2 4 】。 软件测试的复用可以提高软件测试效率,缩短软件测试周期、 降低软件测试费用,提高软件测试的可靠性。同时还能解决测试人 员经验不足的问题,使得他们在测试过程中通过复用原有的测试资 哈尔滨t 程人学硕十学位论文 源,迅速提高自己的测试经验。但是,测试复用也存在一些问题【2 5j 。 ( 1 ) 每个人的设计测试用例不同,没有统一的规范; ( 2 ) 被测系统之间的差异,怎样做到测试用例在其它系统中适 用或做很少的修改就能适用; ( 3 ) 测试用例达到定的数量,怎样才能支持有效复用; ( 4 ) 如何有效的检索复用的测试用例。 1 3 论文主要工作 论文主要是围绕实现有效的测试用例复用展开,主要的研究工 作包括以下几个方面。 ( 1 ) 在研究软件测试和测试复用的基础上,给出设计面向复用 的测试用例的一般流程。分析设计过程中的可复用资源及其相互关 系,构建面向复用的测试用例模型。 ( 2 ) 在面向复用的测试用例模型的基础上,讨论了面向复用的 测试用例模型及其可复用资源的复用问题,分析并解决复用度的计 算等问题。 ( 3 ) 在研究面向复用的测试用例的可复用性问题上,给出一个 面向复用的测试用例评价指标体系,为了对面向复用的测试用例的 可复用性进行量化,提出了面向复用的测试用例的评价模型。 1 4 论文组织结构 论文的结构安排如下: 第l 章阐述了软件测试复用的研究背景和意义,总结了软件测 试和测试复用的国内外研究现状并提出了本课题的研究内容,最后 阐述了论文的主要工作和内容安排。 第2 章阐述了软件测试和测试复用的相关理论和技术,分析了 软件测试的不确定性问题及解决方案,讨论了软件测试复用的优点 与难点。 第3 章给出了设计面向复用的测试用例的一般流程,提出了面 6 哈尔滨丁稃大学硕十学何论文 向复用的测试用例模型,并用x m ls c h e m a 描述面向复用的测试用 例模型,讨论了面向复用的测试用例模型中的可复用资源的复用机 制。 第4 章定义了面向复用的测试用例的复用度的计算公式和算法, 提出了面向复用的测试用例的评价指标体系和评价模型。 第5 章针对具体的软件设计面向复用的测试用例案例,说明采 用基于面向复用的测试用例模型的设计方法和结果,并对结果进行 了简要分析。 最后,在结论中对论文的研究工作进行了总结,指出了目前研 究中还存在的一些问题,给出了下一步工作的研究方向。 哈尔滨r 程大学硕士学位论文 第2 章相关理论和技术 2 1 软件测试技术 软件测试是软件开发过程中的一个重要的环节,是保证软件质 量和可靠性的重要手段。在软件开发的过程中,软件开发的每个阶 段都有可能产生误解或差错。因此,要求通过每个阶段的技术审查、 走查、测试实施等能够尽早、尽量地发现软件中存在的错误并将其 排除。软件测试就是在软件投入运行使用之前,对软件需求分析、 设计规格说明、编码实现的最终复审,贯穿于软件定义与开发的整 个期间。 2 1 1软件测试的目的 早期的软件定义指出软件测试的目的是为了寻找错误,并且尽 最大的可能找出最多的错误,例如:g l e nm y e r s 对测试的定义“程 序测试是为了发现错误而执行程序的过程”。 g l e n f o r dj m y e r s 就软件测试的目的提出了以下观点。 ( 1 ) 测试是程序的执行过程,目的在于发现错误; ( 2 ) 一个好的测试用例在于能发现至今为止尚未发现的错误的 用例; ( 3 ) 一个成功的测试是指揭示了至今为止尚未发现的错误的测 试。 b i l lh e t z e l 提出了测试的目的不仅仅是为了发现软件缺陷与错 误,而且也是对软件质量进行度量和评估,以提高软件的质量1 2 6 1 。 总之,软件测试的目的是设计这样的测试,以最少的人力、物 力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和 缺陷提高软件质量回避软件发布后由于潜在的软件缺陷和错误造成 的隐患所带来的风险。 哈尔滨:l :稗人学硕十学位论文 2 1 2软件测试的原则 软件测试是为了寻找软件的错误与缺陷,评估与提高软件的质 量,因此软件测试应该遵循一定的原则。 ( 1 ) 所有的软件测试应该追溯到用户的需求。这是因为软件测 试的目的是完成用户预定的任务,而软件测试揭示的错误和缺陷使 软件达不到用户的目标,满足不了用户需求1 2 7 。 ( 2 ) 应当把“尽早和不断地测试”作为开发者的座右铭1 2 7 。由 于软件的复杂性和抽象性,在软件的整个生命周期中都可能产生错 误;同时,测试是需要成本的,越是测试后期,为发现错误和缺陷 所付出的代价就越大。 ( 3 ) 程序员应该避免检查自己的程序。基于心理因素,人们认 为揭露自己程序中的问题是一件不愉快的事情,不愿意否认自己的 工作;由于思维定势,编程者难于发现自己的错误【z ,l 。因此,应由 客观、公正、严格的独立部门或者机构来完成测试工作。 ( 4 ) 完全测试是不可能的,测试需要终止。在有限的时间和资 源的条件下,找出所有的错误和缺陷是不可能的,主要有三个原因 1 2 7 1 。输入量太大;输出结果太多;路径组合太多。 ( 5 ) 测试无法证明软件没有错误。进行测试是可以查找并报告 发现错误和缺陷,但是不能保证软件的错误和缺陷全部能找到,继 续迸一步测试可能还会发现一些,也只能证明软件存在错误而不能 证明软件没有错误。 ( 6 ) 注意测试中的错误群集现象。根据p a r e t o 原则【1 ,即测试 发现的错误中的8 0 很可能起源于程序模块中的2 0 ,找出容易出 错的2 0 的程序段进行集中测试,从而合理的分配有限的时间和资 源,最大限度的提高测试的效率。 ( 7 ) 设计测试用例时,应该考虑到合法的输入和不合法的输入, 以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如 网络异常中断、电源断电等情况。 ( 8 ) 软件错误的跟踪管理。在实际的软件测试过程中,每个错 9 哈尔滨t 程大学硕十学位论文 误都要经过测试、确认、修复、验证等管理流程,这是软件测试的 重要环节。 ( 9 ) 注意回归测试的关联性。修改一个模块的错误可能引起其 它模块的错误。 ( 1o ) 妥善保存一切测试过程文档。测试的重现性需要靠测试 文档。 2 1 3软件测试的策略 软件测试的策略是指在一定的软件测试标准、测试规范的指导 下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、 方法的集合。测试策略为测试提供全局分析,并确定和参考所需的 测试文档与检查方法,贯穿于软件定义和开发的整个周期。 1 软件测试的测试过程 软件是由文档、数据以及程序组成的,那么软件的测试不仅 仅是程序进行的测试,而应贯穿于软件定义与开发的整个期间。 软件开发过程是一个自顶向下,逐步细化的过程。测试过程 则是按照相反的顺序自底向上,逐步集成的过程。下一级的测试 为上一级的测试准备条件。图2 1 表示了软件测试的四个步骤, 即单元测试、集成测试、确认测试和系统测试 2 6 1 。 图2 1 软件的测试过程 1 0 哈尔滨工程大学硕士学位论文 如图2 1 所示,首先是对模块进行单元测试,对源代码实现 的每一个程序单元进行测试,检查各个程序模块是否正确地实 现了规定的功能。然后,把已经测试过的模块组装起来,进行集 成测试,主要对于设计相关的软件体系结构的构造进行测试。确 认测试则是要检查已实现的软件是否满足了需求规格说明中确 定了的各种需求,以及软件配置是否完全、正确。最后是系统测 试,把已经经过确认的软件纳入实际运行环境中,与其他系统成 分组合在一起进行测试。 不同的软件开发过程对应的测试过程基本相同,只是针对不 同的开发语言的特点采用的测试方法不同。下面是对面向对象开 发的软件过程和基于组件开发过程的测试过程进行概述。 在面向对象软件测试中,最小的可测试单元是类和类的实 例,最小的可测试单位是封装的类或对象。因此,面向对象的软 件测试过程主要是类测试、集成测试和系统测试。其中类测试类 似于过程测试的单元测试。 由于组件的开发和一般的软件开发不同,主要是组件开发和 组件集成两个方面。因此,测试应该从组件开发者和组件用户两 个不同的角度考虑。组件开发者的测试主要就是单元测试和集成 测试;组件用户测试主要是验收测试。 2 基于结构的功能测试一一白盒测试 白盒测试是通过对程序的内部结构的分析、监测来寻找问 题。白盒测试可以把程序看成装在一个透明的白盒子里,也就是 清楚了解程序的内部结构和处理的过程,检查是否所有的结构及 路径都是正确的,检查软件的内部动作是否按照设计说明的规定 正常进行。 结构测试要求对程序的结构特性做到一定程度的覆盖,是一 种基于覆盖的测试,常用逻辑覆盖率来衡量测试的充分性。从覆 盖源程序语句的详尽程度分析,逻辑覆盖通常包括以下不同的覆 盖标准。 哈尔滨:l 程大学硕十学何论文 语句覆盖:设计足够多的测试数据,使被测程序的每个语句 都至少执行一次。语句覆盖是最弱的逻辑覆盖准则。 判定覆盖:设计足够多的测试数据,使被测程序的每个判定 的取真分支和取假分支都至少执行一次。判定覆盖又称分支覆 u n no 条件覆盖:设计足够多的测试数据,使被测程序的每个判定 的每个条件的可能取值都至少执行一次。 条件判定组合覆盖:设计足够多的测试用例,使得判断中的 每个条件的所有可能的真假值至少出现一次,并且每个判定本身 的判定结果也至少出现一次。 多条件覆盖:设计足够多的测试用例,使得每个判断中的各 种条件可能组合都至少出现一次。 路径覆盖:选择足够多的测试数据,使被测程序的每条可能 路径都至少执行一次。路径覆盖是最强的逻辑覆盖准则,但一般 是不可行的,因为一个具有多重选择和循环的程序,不同的路径 数目可能是一个天文数字。有选择地执行程序中某些具有代表性 的路径是比较可行的办法。 其它的白盒测试方法有控制流分析、数据流分析、逻辑覆盖、 域测试、符号测试、路径分析、程序变异等。 3 基于规范的功能测试一一黑盒测试 黑盒测试是通过软件的外部表现来发现其缺陷和错误。黑盒 测试是把测试对象看成一个黑盒子,完全不考虑程序的内部结构 和处理过程。黑盒测试是在程序界面处进行的测试,它只是检查 功能是否按照需求规格说明书的规定正常实现。 常用的黑盒测试法有等价类划分、边界值分析、故障推测法、 因果图、判断表驱动、正交实验法、场景法和功能图法等。 2 1 4软件测试用例 测试用例是为某个特殊目标而编制的一组测试输入、执行条 件以及预期结果,以便测试某个程序路径或核实是否满足某个特 1 2 哈尔滨r 程大学硕十学位论文 定需求,是整个软件测试工作的核心。测试用例体现了一定的测 试方案、方法、技术和策略,内容包括测试标识、测试项、测试 环境、测试功能、输入数据、测试步骤、预期结果等,并形成测 试用例文档。测试用例文档属于软件测试工作的指导性文件,测 试用例的优劣直接影响软件测试的质量。测试用例对测试工作的 控制和指导作用相当于设计文档对编码的指导作用,尤其在大系 统中表现出对系统测试的权威性 2 8 1 。 软件测试的目的是暴露软件的错误和缺陷,但是对软件进行 穷举测试是不可能的,为了节省时间和资源,提高测试效率,所 以在设计测试用例时要考虑易于发现错误的测试用例和数据。在 设计测试用例时应该注意以下几点。 ( 1 ) 测试用例设计的目标是尽可能地发现错误和缺陷,但 并不是测试用例设计的越多越好,要对其进行取舍,挑选在项目 允许的时间和人力、物力条件下,最有可能找出错误的测试用例。 ( 2 ) 设计测试用例时要避免不同的测试用例测试同一个功 能点的现象。 ( 3 ) 要充分考虑测试用例的复用性,设计测试用例时要尽 量独立、通用。 ( 4 ) 设计测试用例要完整,测试计划中要求测试的内容要 有相应的测试用例与其对应。 测试用例在软件测试中的作用主要有以下几种。 ( 1 ) 测试用例是进行软件测试的基础,在开始实施测试之 前设计好测试用例,可以避免盲目测试,并且提高测试效率。 ( 2 ) 测试用例的存在,使得软件测试的执行目的明确、重 点突出。 ( 3 ) 软件版本更新后,只需对设计好的测试用例进行少部 分的修改,便可被更新后的项目使用,降低工作强度,缩短项目 周期。 哈尔滨i :稃大学硕十学位论文 ( 4 ) 功能模块的通用性和复用性使得软件易于开发,而测 试用例的通用性和复用性则会使软件测试易于开展,并随着侧试 用例的不断规范化测试效率也不断提高。 ( 5 ) 测试用例可以作为评估测试结果度量标准。通过对测 试结果分析整理可以修正软件的开发规则,为软件的可靠性提供 分析依据。 ( 6 ) 测试用例还可以作为分析缺陷的依据。通过分析错误 产生的原因可以发现当前开发工作所采用的软件过程的缺陷,利 于进行软件过程改进。 因此,设计好的测试用例是做好测试工作的关键。一个好的 软件测试用例不仅能够体现软件测试思想、技巧,而且要包含有 效的测试数据。结果以及测试过程纪录等。如果能有效地复用测 试用例的这些资源,将极大地提高软件测试的效率,降低测试成 本。 2 1 5 软件测试的不确定性及其解决途径 1 软件测试的不确定性 软件测试不确定性,。主要是指由于软件测试人员的能力达不 到规定的要求,软件测试的过程失去控制,从而导致软件测试结 果的重现性差,不同的测试人员对同一个软件的测试结果经常是 不同的【2 9 ,。导致软件测试不确定性的主要有四个方面的原因。 ( 1 ) 软件测试的立场。软件测试的目的是最大限度地发现 软件中存在的错误和缺陷,而不是为了证明软件没有错误和缺 陷。软件测试应该站在客户立场去测试软件,但是有些企业往往 为了争取进入市场的时间而站在开发者的立场去表明软件没有 错误【25 】。 ( 2 ) 软件测试人员的经验。软件测试在很大程度上依赖测 试人员的个人经验,有经验的测试人员知道测试步骤不同产生的 结果是不同的。目前普遍存在的“做不了开发,就去做测试”的 错误观点,使测试人员的素质不高,测试质量降低】。 1 4 哈尔滨一i :稗大学硕+ 学位论文 ( 3 ) 软件测试的过程与管理。测试过程的质量决定了软件 测试的质量和有效性,软件测试过程的管理是保证测试过程的质 量、控制测试风险的重要活动。在实际情况中,往往是软件测试 没有一定的流程,例如:测试没有计划,随机进行:测试用例即 时构想,没有事先设计,更谈不上对软件测试过程进行监督了, 由此引发的结果是测试过程失控。 ( 4 ) 软件测试的结果。执行测试用例所得的实际测试结果, 特别是软件测试中发现的缺陷应该能够重现,为软件的维护和修 改提供依据。一个软件的功能是否正确和性能是否符合要求,是 在该软件采用的开发技术、运行环境和应用场景的三维坐标中显 现出来的,软件测试的结果应该对照软件的需求和软件测试的记 录而产生的。由于在软件测试过程中缺少详细的记录,往往使软 件测试报告缺乏充分的依据。 2 解决途径 软件测试的不确定性的解决途径有两方面,一方面从软件测 试工程化的研究着手,对软件测试过程进行建模。另一方面,从 软件测试的复用和测试知识的共享上解决测试人员经验不足的 问题,从而比较全面地解决了软件测试的不确定性问题。 ( 1 ) 软件测试工程化。软件测试是软件生命周期中的一个 子过程,对软件测试过程的规范化问题,越来越受到软件测试领 域专家的重视。软件测试工程化的研究始于19 9 6 年,从测试过 程的改进、测试组织测试度、测试评估程序到测试成熟度模型, 进行了一系列的研究。t h o m a sc s t a a b 在使用软件测试成熟度模 型改进软件测试过程的文章中,将软件测试成熟度模型( sw t m m ) 分为5 级,分别为t m m1 初始级、t m m 2 阶段定义级、 t m m 3 集成级、t m m 4 管理与度量级、t m m 5 优化缺陷预防和 质量控制级,为软件测试成熟度的评估提供了依据 3 0 ,。 哈尔滨t 程大学硕十学位论文 i i i i i 软件测试工程化的主要思想是要求建立正式的测试组织,明 确测试的目标和测试流程,确定测试活动,对测试的过程和活动 进行监控,从而保证软件测试的质量。 ( 2 ) 软件测试的复用。针对当前软件测试过程和管理方面 存在的问题,在促进软件测试工程化的同时,将软件复用的思想 应用到软件测试过程中是一个有益的尝试。通过软件测试复用, 可以解决测试人员经验不足的问题,提高软件测试的效率,从而 比较全面地解决了软件测试的不确定性问题。本文正是基于这样 的背景,对软件测试用例的复用进行了研究。 2 2软件测试复用技术 在c o p p e rj o n e s 定义的可复用的十种软件制品中,测试信息的 复用是十分重要的一类,实现测试信息的复用对于改进软件测试质 量和效率将起到重要的作用。 2 2 1 软件测试中可复用资源 软件测试过程中存在丰富的可复用资源,表2 1 列出了可能的资 源并作了简要的说明,其中所罗列的可复用资源不是完整的,需要 一定的补充 ”】。表中的测试资源具有不同的抽象程度,抽象程度越 低,越易于规范化说明;抽象程度高的则只能采用文本描述。 表2 1 软件测试过程中的可复用资源 资源名称说明抽象程度 测试策略对于软件采取的整体测试设计,包括测试方高 法、测试流程、测试计划、测试验收方法等。 测试工具不一定包括t 具本身,但是必须有关于工具低 的简要说明,包括获取途径、适用范围、测 试能力、适用能力等 1 6 哈尔滨工程大学硕十学何论文 表2 1 软件测试过程中的可复用资源( 续) 资源名称说明抽象程度 测试指南用于指导测试者有步骤地进行测试工作,测低 试指南的复用意义在于指南模板的应用。 测试数据某些用于测试的数据是非常宝贵的,不仅要低 保留这些数据,还要说明数据的选取原因、 条件、数据结构等。 测试结果测试结果的复用意义在于测试评价的利用。一般 很多情况下,测试结果不是布尔量,而是一 个模糊函数。满意程度是经验性的,而经验 性最适合复用 测试用例为验证软件功能而设计的一系列操作,测试低 用例的复用意义在于通过复用测试用例验 证功能相同或者近似的功能模块,减少测试 用例的设计时间,提高测试效率。 2 2 2面向复用测试构件的软件测试模型 面向复用软件测试构件的软件测试模型比传统的软件测试模型 多了测试构件的生成和入库过程。采用面向复用软件测试构件的软 件测试模型见图2 2 1 3 :, 3 ,】。 面向复用测试构件的软件测试模型描述了可复用测试构件 的生成过程和基于复用的测试构件生成过程。首先,对被测软件 进行分析,挖掘测试复用的机会,然后在测试构件库中查找可以 复用的测试构件,复用软件测试构件库中的测试构件生成对该软 件的测试方法,根据该测试方法对软件进行测试,生成测试结果。 对一个项目测试产生的测试资源要作为可复用的测试构件,必须 哈尔滨1 = 稃大学硕十学1 7 :论文 对其进行抽象,使其与被测项目的相关度降到最低,在这个模型 中对测试过程中生成的测试方法和测试结果进行抽象,产生新的 可复用的构件存入测试构件库中。 图2 2 采用面向复用测试构件的软件测试模型 2 2 3软件测试复用的优点与难点 软件测试复用有以下几个优点。 ( 1 ) 解决测试人员的经验的不足; ( 2 ) 提高软件测试效率; ( 3 ) 缩短软件测试周期; ( 4 ) 降低软件测试费用; ( 5 ) 提高软件测试的可靠性。 实现软件测试复用的困难是不可忽视的,如果不能很好的意 识并解决以下这些问题,会使得软件测试工作事倍功半。 ( 1 ) 被测系统之间的差异; ( 2 ) 测试用例的遵循的标准: ( 3 ) 测试用例库的维护问题; ( 4 ) 测试用例可复用度量问题; 哈尔滨:j i 程大学硕十学位论文 ( 5 ) 测试用例版本管理问题: ( 6 ) 人的因素、管理因素、教育因素和法律因素等。 2 3 本章小结 本章描述了测试用例复用需要用到的相关理论和技术。首先 描述了软件测试的基本技术,主要从软件测试的目的、原则、策 略、用例和软件测试的不确定性几个方面进行描述。讨论了软件 测试用例在软件测试中的重要性;分析了软件测试中的不确定问 题,主要从软件工程化思想和软件测试的复用两个方面讨论了不 确定性问题的解决方法。然后,分析了软件测试中的可复用资源, 引出了面向复用的软件测试模型,总结了软件测试复用的优点与 难点。 1 9 哈尔滨t 程大学硕士学何论文 第3 章面向复用的测试用例模型 随着软件产业化发展,人们对软件的质量要求越来越高,软件 测试是保证软件质量的一个重要环节。统计表明,在典型的软件开 发项目中,软件测试工作量和成本往往占软件开发总工作量和成本 的一半 3 4 1 。测试用例是测试工作的指导,是软件测试必须遵守的准 则,更是软件测试质量稳定的根本保障。测试用例的优劣直接影响 到软件测试工作的效率,选择合适的测试用例是做好测试工作的关 键。然而,测试用例的设计是与测试人员对被测试软件的理解以及 经验的积累密切相关的。如果将大量的测试用例收集到测试用例库 中,经过合理的分类,供测试人员复用,将解决测试人员经验不足 的问题并能极大地提高软件中问题的发现率。 对测试用例的复用是目前发展的一个趋势,要成功的实施软件 测试用例的复用,和软件复用一样,也要解决以下三个基本问题i ,s ,引。 ( 1 ) 必须存在可以复用的测试用例; ( 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜矿选矿技术改造项目申请报告
- 导尿患者的出院指导与家庭护理
- 幼儿园户外主题活动方案1
- 内科护理中的实习职业规划
- 护理伦理的决策过程
- 2026-2030化工包装产品入市调查研究报告
- 2026年高职造型设计实践(造型实践)试题及答案
- 2026年大学音乐教育(音乐教学基础)试题及答案
- 泰职招聘考试题及答案
- 高职医疗设备应用技术专业《医疗设备搬迁项目管理》教学设计-基于宜宾三江医院项目的任务驱动
- 2026北京市大兴区瀛海镇人民政府面向社会公开招聘劳务派遣2人笔试参考试题及答案详解
- 2026广东揭阳市惠来县卫生健康事业单位招聘综合类18人笔试题库附参考答案详解【A卷】
- 优化门诊护理流程提升患者满意度
- 2026年四川省机关事业单位考调、选调工作人员考试(综合知识、综合应用能力测试)测试题及答案
- 职业院校数字化转型建设方案
- 国防科技工业固定资产投资项目工程建设其他费用和预备费编制规定(科工法〔2005〕496号)
- 2026南方凯能(广东)电力集团校园招聘考试备考试题及答案解析
- 塑胶配色外包合同
- 2025年一级建造师民航机场工程实务真题及答案解析
- 脉诊-教学讲解课件
- 2.PaleoScan详细操作流程
评论
0/150
提交评论