(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf_第1页
(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf_第2页
(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf_第3页
(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf_第4页
(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)web应用程序测试技术及灰盒测试方法的研究与实现.pdf.pdf 免费下载

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

文档简介

中文摘要 随着计算机网络技术的迅速发展,w e b 技术正以其广泛性、交互性、快捷性 和易用性等特点迅速风靡全球,并且已经渗入到社会的各个应用领域。在市场需 求的推动下,应用软件的规模不断扩大,软件系统的复杂性不断增加。目前r r 系统已经成为各个企业运转业务时最重要的系统之一。系统性能的好坏严重影响 了企业对外提供服务的质量。因此对r r 系统的性能进行测试和调优引起人们越 来越多的重视。 对w e b 应用系统的测试包括系统功能测试,性能测试,安全性测试等。其 中,性能测试尤为重要,因为性能直接反映了w e b 所提供服务的质量水平,同 时由于w e b 具有动态特性,它的用户数目和数据传输速率在不断变化,所以性 能问题成为困扰w e b 的最大问题。 国外对性能测试的研究已经取得了许多成果,提出了一些的模型、方法和策 略,并相应开发了测试工具。m e r c u r y 公司的l o a d r u n n e r 以及i b m 的r a t i o n a l 都是功能全面的测试工具软件。国内在w e b 性能测试方面的研究和开发才刚刚 起步。 本文首先对w e b 性能测试进行了初步研究,按应用端、中间网络和服务端 三个方面对性能测试内容进行总结。通过对性能测试的学习归纳了三层结构的 w e b 应用性能测试模型,并给出了性能测试的策略和方法,特别是将灰盒测试的 方法运用于w e b 性能测试的过程中。结合性能测试工具m m or a t i o n a ls u i t e o t e s t s t u d i o 雪2 0 0 3 中的t e s t m a n a g e r & r o b o t ,给出了具体的设计与实现方法。本 文一方面对w e b 性能测试进行理论上的基础学术性研究,同时也在具体的实用 性方面作出了进一步探索。 关键词:软件测试w e b 测试灰盒测试性能测试 a b s t r a c t t h er a p i dd i f f u s i o no fi n t e r n e ta n do p e ns t a n d a r dt e c h n o l o g i c , i sp r o d u c i n ga s i g n i f i c a n tg r o w t ho ft h ew e b s i t c , a n dw e ba p p l i c a t i o n sb e c a u s eo ft h eu n i v e r s a l i t y , i n t e r o p e r a b i l i t y , s p e e d i n e s s ,a n dc o n v e n i e n c e ,w h i c hh a sp e n e t r a t e de v e r y f i e l do ft h e s o c i e t y p r o m o t e db yt h em a r k e t i n gr e q u i r e m e n t s ,t h es c a l eo ft h ew e ba p p l i c a t i o u s k e e p so ne x t e n d i n g , a n di t sc o m p l e x i t yi n c r e a s i n g , a tp r e s e n ti ts y s t e mh a sa l r e a d y b e e nt h em o s ti m p o r t a n ta p p r o a c hb e i n gu s e dt od ob u s i n e s st r a n s a c t i o n s i n c r e a s i n g t r a n s a c t i o n sb r i n gh e a v yl o a dt ot h es y s t e m s ot h ep e r f o r m a n c eo ft h es y s t e m i n f l u e n c et h eq u a l i t yo ft h es e r v i c ep r o d d e d ab i ge m p h a s i sh a sb e e nl a i do nt h e t e s t i n ga n do p t i m i z a t i o no f t h ep e r f o r m a n c eo f t h ew e ba p p l i c a t i o a s t e s t i n go nt h ew e ba p p l i c a t i o mi n c l u d e sf u n c t i o n a lt e s t i n g , p e r f o r m a n c et e s t i n g , s e c u r i t yt e s t i n g , e t e b e c a u s eo f i t si m m e d i a t er e f l e e c t i o no f t h eq u a l i t yo f t h es e r v i c e o ft h ew e ba p p l i c a t i o np e r f o r m a n c et e s t i n gi sc r u c i a l d u et ot h ed y n a m i cn a t u r eo f t h ew e b ,t h en u m b e ro fu s e r sa n dd a t a t r a n s m i s s i o nr a t ec h a n g ec o n t i n u o u s l y p e r f o r m a n c et e s t i n gh a sr a p i d l yb e c o m eo n eo f t h et o pq ap r i o r i t i e s o u t b o a r dt h e r ea r em a n ya c h i e v e m e n t si nt h es t u d yo ft h ep e r f o r m a n c et e s t i n g , 3 0 m em o d u l e s , m e t h o d sa n ds t r a t e g i e sh a v eb e e np r e s e n t e d ,a c c o r d i n g l yt e s t i n gt o o l s d e v e l o p e d m e r c u r yl o a d r u n n e ra n d 珏i mr a t i o n a l b o t ha p o w e r f u lt e s t i n g s o f t w a r e i n b o a r dw ea r ej u s to nt h eb e g i n n i n go ft h i sf i e l d , s ow eh a v eal o n gw a yt o g o i nt h i sp a p e rw em a k et h ei n i t i a ls t u d yo fw e bp e r f o r m a n c et e s t i n g , s u m m a r i z i n g t h ec o n t e n to f p e r f o r m a n c et e s t i n gi nt e r m so f t h r e ep a r t s :a p p l i c a d o n - e n d , s e r v e r - e n d , m i d d l en e t w o r kp r o p o s i n gat h r e - l a y e rt e s tm o d e lt h o u g ht h eh a r ds t u d y , g i v i i l g 8 0 m et e s tm e t h o d sa n ds t r a t e g i e s ,e s p e c i a l l yp u t t i n gt h eg r a y - b o xt e s t i n gm e t h o di n t o p r a c t i c eo fw e bp e r f o r m a n c et e s t i n g c o m b i n i n gw i t ht h ep o w e r f u lt e s t i n gt o o lm m * t e s t m a n a g e r r o b o to fr a t i o n a ls u i t c 西t e s t s t u d i o 。2 0 0 3 t h ep a p e rp r o v i d e st h e c o n c r e t ed c * i g na n di m p l e m e n t st h ep r o j c c t t h ep a p e ri sp a r ta c a d e m i cs t u d ya n dp a r t c a s es t u d y k e yw o r d s :s o f t w a r et e s t i n g , w e bt e s t i n g , g r e yb o xt e s t i n g , p e r f o r m a n c e t e s t i n g 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得墨洼盘茎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:酃彳鸯 签字日期:如f 年衣月日 学位论文版权使用授权书 本学位论文作者完全了解盘鲞盘堂有关保留、使用学位论文的规定。 特授权鑫生盘茎可以将学位论文的全部或部分内容编入有关数据库进行检 索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校 向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:重9 绎鸯 签字日期:如年更月f 日 导师签名:金乞内j 签字日期:z 年厶月g 日 天津大学硕士学位论文第一章绪论 1 1 课题的提出 第一章绪论 信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量 自然成为人们共同关注的焦点。软件危机曾经是软件界甚至整个计算机界最热门 的话题,它实际上是指软件中有错误,正是这些错误导致了软件开发在成本、进 度和质量上的失控。同时使用质量不佳的软件产品不仅会使开发商的维护费用和 用户的使用成本大幅增加,在一些关键应用中( 如民航订票系统、银行结算系统、 证券交易系统、自动飞行控制软件、军事防御和核电站安全控制系统等) 还可能 造成灾难性的后果。为了更好地解决这些问题,必须借助于软件测试技术。 软件测试是为了发现错误而执行程序的过程,它是发现软件中错误和缺陷的 主要手段。软件开发的目的是开发出实现用户需求的赢质量、高性能的软件产品, 软件测试以检查软件产品内容和功能特性为核心,是软件质量保证的关键步骤, 也是成功实现软件开发目标的重要保障。统计表明,在典型的软件开发项目中, 软件测试工作量往往占软件开发总工作量的4 0 以上。而在软件开发的总成本 中,用在测试上的开销要占3 0 到5 0 t 7 】。 近年来,w e b 正以其广泛性、交互性、快捷性和易用性等特点越来越受到企 业和个人的青昧,w e b 应用系统也变得越来越庞大和复杂,但激烈的商业竞争使 软件开发周期缩短,如何保证w e b 应用的正确性和可靠性成为开发过程中一个 重要的课题。由于w e b 应用具有分布、并发、多用户、异构和平台无关等特性, 因此传统的测试方法己不能够胜任对w e b 应用的测试,它的新特性对软件测试 提出了新的要求,而且要比普通程序的测试复杂得多。、 在基于w e b 的系统开发中,如果缺乏严格的过程,我们在开发、发布、实 施和维护w e b 的过程中,可能就会碰到一些严重的问题,失败的可能性很大。 而且,随着基于w 曲的系统变得越来越复杂,一个项目的失败将可能导致很多 问题。当这种情况发生时,我们对w e b 和t n t e m e t 的信心可能会无法挽救地动摇, 从而引起w e b 危机,并且,w e b 危机可能会比软件开发人员所面对的软件危机 更加严重、更加广泛。y o g e s hd e s h r a n d e 和s t e v eh a a s e n 在1 9 9 8 年就提出了w e b 工程的概念t r l 。w e b 工程作为- - i - j 新兴的学科,提倡使用一个过程和系统的方法 来开发高质量的基于w e b 的系统。在w e b 工程中,基于w e b 系统的测试、确认 天津大学硕士学位论文第一章绪论 和验收是一项非常重要而富有挑战性的工作。基于w e b 的系统测试与传统的软 件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系 统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进 行安全性和可用性测试。然而,i n t e m e t 和w e b 媒体的不可预见性使测试基于 w e b 的系统交得困难,因此,我们必须为测试和评估复杂的基于w e b 的系统研 究新的方法和技术。w e b 系统的性能测试正是研究内容中最重要的一个方面。 1 2 相关工作的研究现状及主流性能测试工具介绍 1 2 1 相关工作的研究现状 性能测试包含很多内容,例如负载测试、压力测试,强度测试都属于性能测 试的范畴。2 0 0 0 年在l o sa l t o sw o r k s h o po ns o f t w a r et e s t i n gi x 上有一些关于 灰盒测试的非正式定义。灰盒测试方法非常适用于w e b 应用测试。 灰盒测试使用推断的或者不完整的结构或者设计信息来进行黑盒测试 i c kb e n d e r 灰盒测试在算法内部状态体系结构或其它程序行为等高级描述知识基础 上设计的测试d 0 u gh o f f m a n 灰盒测试测试涉及输入和输出,但是测试人员无法看到的有关代码或程序 操作的信息影响着测试涉及c c mk a n e r 在目前,国外对w e b 性能测试的研究已经取得了许多成果,提出了一些的 模型、方法和策略,并相应开发了测试工具。其中比较有名的有i n f o s y s t e c h n o l o g i 船公司提出的对象驱动性能测试模型,m e r c u r yi n t e r a c t i v e 的 l o a d r u n n e r ,微软公司的w a s 测试工具等等。国内在软件测试方面还没引起高 度重视,多数测试理论研究和工具的开发仍然停留在传统软件的测试方面,因此 在w e b 性能测试方面,我们还有很长的路要走。 在跟踪国内外性能测试最新理论和技术,研究国内外已有测试工具的基础 上,我们根据w e b 应用的特点,抽象出了三层结构的性能测试模型,并给出了 w e b 系统的性能测试策略和方法;总结出了w e b 性能测试中的过程活动,规范 了测试流程;将适合于w 曲应用程序测试的灰盒测试方法应用于实际的测试过 程中,灰盒测试非常适用于w e b 应用测试,因为它涉及高层设计环境和互操作 条件。它能发现容易被黑盒分析和白盒分析忽略的问题,特别是端对端的信息流 问题。 天津大学硕士学位论文第一章绪论 1 2 2 主流性能测试工具介绍 现在有很多种性能测试工具,从功能简单单一的开放源码的软件到昂贵的商 业性能测试工具。一套功能全面的性能测试工具的开发工作量是非常大的,这也 是为什么商业性能测试软件价格昂贵的主要因素之一。由于互联网和开放源码运 动的发展,性能测试工具的各种功能都以各种形式的开源软件存在了。如果我们 设计出一套合理的架构,在统一的架构下整合各种缺乏系统性的开源工具软件, 使之能够彼此配套,搭配出一套功能全面、质量可靠,而且是开放源码的性能测 试工具是完全有可能的。目前国内外比较流行的w e b 性能测试工具主要有:在 商业性能测试软件中,m e r c u r y 公司出品的l o a d r u n n e r 是一套功能全面的测试 工具软件,口碑非常好,但是其价格非常昂贵。由于l o a d r u n n e r 是按照并发用 户数收取费用,因此要获得大的并发量的价格是很高的。开源工具有:o r a d v i e w 公司开发的t e s t v i e w 系列w e b 性能测试工具和w e b l o a da n a l y z e r 性能分析工具 旨在测试w e b 应用和w e b 服务的功能、性能、程序漏洞、兼容性、稳定性和抗攻 击性;并且能够在测试的同时分析问题原因和定位故障点。从而为测试工作者提 供有力的帮助,加速“开发一测试”循环,提高劳动生产率。m i c r o s o f tw e b a p p l i c a t i o ns t r e s s t o o l 是由微软的网站测试人员所开发,专门用来进行实际网站 压力测试的一套工具。使用起来比较简单,但是由于不能显示和编辑所录制的测 试脚本,其可控性和图形化测试结果都较弱,故造成一定的局限性。o p c n s t a 是专用于b s 结构的、免费的性能测试工具。它的优点除了免费、源代码开放的 优点外,还能对录制的测试脚本进行,按指定的语法进行编辑。测试工程师在录 制完测试脚本后,只需要了解该脚本语言的特定语法知识,就可以对测试脚本进 行编辑,以便于再次执行性能钡0 试时获得所需要的参数,之后进行特定的性能指 标分析。o p e n s t a 以最简单的方式让大家对性能测试的原理有较深的了解,其 较为丰富的图形化测试结果大大提高了测试报告的可阅读性。m m or a t i o n a l s u i t e * 中的r a t i o n a lr o b o t 和t e s tm a n a g e r 。r a t i o n a lr o b o t 可以对使用各种集成 开发环境o d e ) 和语言建立的软件应用程序,创建、修改并执行自动化的功能 测试、分布式功能测试、回归测试和w e b 性能测试。m mr a t i o n a lr o b o t 是业界 最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进 行成功的测试。它集成在测试人员的桌面i b mr a t i o n a lt e s t m a n a g e r 上,在这里 测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。 这种测试和管理的双重功能是自动化测试的理想开始。本文将使用该工具进行实 例测试。 天津大学硕士学位论文 第一章绪论 1 3 研究意义 追求更高的质量和更高的性能是人类的天性。“更高,更快,更强”的奥运 会是对人类自身运动能力的测试。同样,人类也在追求我们工作生活中不可或缺 的r r 系统能够提供更快更强的服务。目前i t 系统已经称为各个企业运转业务时 最重要的系统之一。对r r 历史稍微有所了解的人都知道,r r 系统经过早年的一 个人使用的单机系统时代,几十个人使用的局域网中的客户机服务器系统时代, 到现在服务成千上万用户的跨广域网的庞大系统时代。r r 系统发展中的最明显 的特征之一就是所谓的“数据大集中”,即数据越来越集中到后台的服务器中, 系统同时为成百上千,乃至上万的用户提供服务。这样的例子在银行、保险、电 信公司中随处可见。随着企业业务量的加大,其i t 系统承载的负荷越来越重, 系统性能的好坏严重影响了企业对外提供服务的质量。对r r 系统的性能进行测 试和调优越来越引起企业的重视。 目前,典型的企业n 系统的架构如图1 - 1 所示: 痢户 i n t e r n e t i n t r i v e t 譬爹k鬟雾墨蓉雾譬服务嚣艇务器瓣务嚣 图1 1 这样的系统由客户端,网络、防火墙、负载均衡器、w e b 服务器、应用服务 器( 中间件) 、数据库等等环节组成,根据木桶原理,即木桶所能装的水的量取决 于最短的那块木板,整个系统的性能要得到提高,每个环节的性能都需要优化。 在这样的1 1 r 系统中,每个环节的都是一个很复杂的子系统,对其调优都是一门 专门的技能。o r a c l e 数据库的调优就需要专门的技能和多年的经验。对于整个r r 系统的调优,其复杂程度更是急剧增加。因此r r 系统性能测试调优是一个复杂 的项目,需要拥有各种专门技能的专家组成小组来完成。这些专家包括操作系统 专家、网络专家、数据库专家、应用服务器专家、应用软件和业务专家等等。 虽然性能测试是一项很复杂和专业的工作,但是由于企业r r 系统的重要性, 保证其性能的稳定对于企业对外提供优质服务越来越得到企业的重视。性能测试 服务的市场正在快速发育中。研究系统性能测试越来越有意义。 要保证性能测试项目的高质量,弘需依赖两个重要的因素:人和工具。具有 天津大学硕士学位论文 第一章绪论 多年经验的高素质的专家小组是保证性能测试的最重要的因素。另一方面,功能 全面、使用灵活的性能测试工具对于加速性能测试,提高测试质量和效果也是必 不可少的。1 。 1 4 论文的结构 本文第二章简要介绍了传统软件测试的基本内容、模型、方法及国内外研究 现状。第三章讨论了w e b 性能测试的重要性和必要性,介绍了w e b 性能测试的 发展现状,总结了性能测试的基本内容。第四章从抽象到具体提出了三层结构的 w e b 性能测试模型,安排流程,并给出了相应的测试策略和方法。第五章给出了 具体的性能测试实例,得出测试结果。第六章整个测试过程进行了总结,结合测 试过程中的经验教训谈了一下作者的体会。 天津大学硕士学位论文第二章软件测试概述 2 1 软件测试的必要性 第二章软件测试概述 随着社会的不断进步和计算机科学技术的飞速发展,计算机及软件在国民经 济和社会生活等方面的应用越来越广泛和深入。作为计算机的灵魂,软件在其中 起着举足轻重的作用,软件的失效有可能造成巨大的经济损失,甚至危及人的生 命安全。例如,1 9 9 6 年a r i a n e 5 运载火箭的发射失败等都是由软件故障引起的 1 2 1 。 软件开发的各个阶段都需要人的参与,因为人的工作和通信都不可能完美无 缺,出现错误是难免的。与此同时,随着计算机所控制的对象的复杂程度不断提 高和软件功能的不断增强,软件的规模也在不断增大。例如,w i n d o w sn t 操作 系统的代码大约有3 2 0 0 万行【3 】,这使得错误更可能发生。人们在软件的设计阶 段所犯的错误是导致软件失效的主要原因,软件复杂性是产生软件缺陷的极其重 要的根源【4 1 。软件测试是保证软件质量和可靠性的重要手段。目前许多项目的软 件工程实践以结构化分析和设计为核心,在开发阶段的前期,包括需求分析和设 计都是以技术评审和工程管理作为质量保证的手段,而技术评审和工程管理主观 因素很大,很可能又引入错误并扩展到后续开发阶段闭。另一方面,软件测试确 实能够发现软件中隐藏的许多缺陷。例如,在英国约克大学为英国海军开发的 s h o l i s 项目中,尽管采用形式化方法描述和证明软件规约,并且采用程序正确 性证明方法排除了软件开发前期的许多缺陷,单元测试仍然发现了整个软件开发 过程1 5 7 5 的缺陷例。 随着人们对软件测试重要性的认识越来越深刻,软件测试阶段在整个软件开 发周期中所占的比重日益增大。现在有些软件开发机构将研制力量的4 0 以上投 入到软件测试之中;对于某些性命攸关的软件,其测试费用甚至高达所有其他软 件工程阶段费用总和的3 到5 倍【1 1 。尽管人们在软件开发过程中也采用形式化方 法描述和证明软件规约阎,并采用程序正确性证明昀、模型检验【刀等方法保证软 件质量,但是这些方法都存在一定的局限性i s ,尚未达到广泛实用阶段。因此, 程序代码最终体现了软件的质量,无论是从软件开发方法学还是软件测试自身的 效益看,软件测试在今后较长时间内仍将是保证软件质量的重要手段。 在谈到软件测试时,业界还是都引用g r e n f o r dj m y e r s 在( t h ea r to f s o f t w a r e t e s t i n g ) 一书中表述的观点: 天津大学硕士学位论文第二章软件测试概述 1 程序测试是为了发现错误而执行程序的过程; 2 测试是为了证明程序有错,而不是证明程序无错误; 3 一个好的测试用例是在于它能发现至今未发现的错误; 4 一个威功的测试是发现了至今未发现的错误的测试。 但是软件测试决不等同于找b u g 。 作为软件开发的重要环节,软件测试越来越受到人们的重视。随着软件开发 规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更 加困难。为了尽可能多地找出程序中的错误,生产出高质量的软件产品,很有必 要研究软件测试技术。 软件测试可以分为若干个小的阶段,阶段的划分标准有多种,我们按软件开 发的生命周期模型将其分为以下四个阶段:( 1 ) 单元测试:由项目人员( 程序 员) 完成;( 2 ) 集成测试:由项目开发小组完成;( 3 ) 系统测试:由专业测试 小组完成;( 4 ) 验收测试:用户和开发商共同完成。 2 2 软件测试的目的 软件测试( s o f t w a r e t e s t i n g ) 是软件生命周期( s o f t w a r el i f ec y c l e ) 中的一个 重要阶段,是软件质量保证的关键步骤。 软件测试是一个破坏性的过程,其目的是为了尽可能多地发现软件中的错误 或缺陷,在产品发布以前将尽可能多的问题提前暴露出来并且得到修正。而不是 为了演示软件的正确功能。软件测试不能保证软件中不再存在错误。而且发现错 误也不是软件测试的唯一目的,查找不出错误的测试不等于没有价值。 首先,测试并不仅仅是为了要找出错误,通过分析错误产生的原因和错误的 分布特征,可以帮助项目管理人员发现当前所采用的软件开发过程的缺陷,以便 改进。同时,也有利于设计出有针对性的检测方法,改善测试的有效性。其次, 没有发现错误的测试也是有价值的,完整的测试是评定软件性能和质量的一个重 要手段,可以用来检查软件是否满足设计和项目合同书所规定的技术要求,检验 软件对误操作的处理能力,并为软件可靠性与安全性的评估提供依据。因此软件 测试的目的决定了如何去组织测试如果测试的目的是为了尽可能多地找出错误, 那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置;如果 测试的目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该 直接针对在实际应用中会经常用到的商业假设。测试是为了让用户对产品产生信 心,让项目经理对团队产生信任,让程序员彼此产生信赖。 天津大学硕士学位论文第二章软件溟4 试概述 2 3 软件测试模型 2 3 1v 模型 软件开发的几十年历程业已证明,在开发生命周期中划分阶段的做法是很有 好处的。在经典的瀑布模型( 如图2 1 所示) 基础上,还有螺旋模型和过程迭代 方法,快速软件开发( r a p i dd e v e l o p m e n t ) 以及较新的r a t i o n a l 统一过程( r a t i o n a l u n i f i e dp r o g r e s s ) 。但在这些过程方法中,并没有充分强调测试的价值,也没有 给测试以足够的重视。 图2 - 1 软件生存期的瀑布模型 正如开发有开发模型一样,测试也有测试模型,尽管这些方法鲜为人知。部 分原因是因为很多测试人员已经在他们的工作中积累了大量的经验,利用这些经 验就可以做好他们的工作。总的来说,测试往往要占据整个开发周期的时间,但 即使在很多正规的大学中,也没有为那些即将开始软件生涯的学生们设置软件测 试课程。 在软件测试方面,v 模型是最广为人知的模型,尽管很多富有实际经验的测 试人员还是不太熟悉v 模型,或者其它的模型。v 模型是最具有代表意义的测 试模型。v 模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的 关系。从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过 程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的 v 模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布 模型一样地受到了批评和质疑。v 模型只得到软件业内比较模糊的认可。v 模型 宣称测试并不是一个事后弥补行为,而是一个同开发过程同样重要的过程。v 模 天津大学硕士学位论文第二章软件测试概述 型如下图所示: 图2 - 2 软件测试v 模型 v 模型最早由p a u lr o o k 在8 0 年代后期提出,v 模型被包含在英国国家计 算中心文献中发布,旨在改进软件开发的效率和效果。v 模型在欧洲尤其是英国 被接受,并被认为是瀑布模型的替代品,而在美国则被误解为是又一种瀑布模型。 在传统开发过程中,仅仅把测试过程作为在需求分析、概要设计、详细设计 及编码之后的一个阶段,事实上,v 模型的推出也是对此所进行的改进。在瀑布 模型中,确实给人们造成了这样的不良影响,即在很多重要开发活动完成后,测 试只是收尾工作,而不是主要的过程,尽管有时测试会占据项目周期一半的时间。 v 模型描述了不同的测试级别,并说明了这些级别所对应的生命周期中不同 的阶段。如模型图中所示,左边下降的是开发过程各阶段,与此相对应的是右边 上升的部分,即各测试过程的各个阶段。在不同的组织中,对测试阶段的命名可 能有所不同。 在模型图中的开发阶段一侧,先从定义业务需求开始,然后要把这些需求不 断地转换到概要设计和详细设计中去,最后开发为程序代码。在测试执行阶段一 侧,执行先从单元测试开始,然后是集成测试、系统测试和验收测试。 v 模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清 楚地描述了这些测试阶段和开发过程期间各阶段的对应关系: 1 ) 单元测试的主要目的是针对编码过程中可能存在的各种错误,例如用户 输入验证过程中的边界值的错误。 2 ) 集成测试主要目的是针对详细设计中可能存在的问题,尤其是检查各单 元与其它程序部分之间的接口上可能存在的错误。 3 ) 系统测试主要针对概要设计,检查了系统作为一个整体是否有效地得到 天津大学硕士学位论文第二章软件测试概述 运行,例如在产品设置中是否达到了预期的高性能。 4 ) 验收测试通常由业务专家或用户进行,以确认产品能真正符合用户业务 上的需要。 在不同的开发阶段,会出现不同类型的缺陷和错误,所以需要不同的测试技 术和方法来发现这些缺陷。测试是发现缺陷的艺术。涣0 试不仅仅是测试。测试过 程还包括确定要测试什么( 测试范围和条件) 以及产品如何被测试( 制作测试用 例) ,建立测试环境,执行测试,最后再评估测试结果,检查是否达到已完成测 试的标准,并报告进展情况。测试设计可以发现缺陷和错误。而且,如果你把测 试设计放在最后阶段,就错过了发现构架设计和业务逻辑设计中存在的严重问题 的时机,到那时,要修复这些缺陷将很不方便,因为缺陷已经扩散到系统中去了, 所以这样的错误将很难寻找和修复,并且代价更高。 虽然v 模型没有明确说明早期的测试设计,而g r a h a m 则认为它体现在了处 理过程中,并认为这是v 模型的强大力量所在。不管v 模型是否明确说踢了早 期的测试设计行为,测试设计确实是值得强调的。 根据v 模型的要求,一旦有文档提供,就要及时确定测试条件,以及编写 测试用例,这些工作对测试的各级别都有意义。当需求被提交后,就需要确定高 级别的测试用例来测试这些需求。当概要设计编写完成后,就需要确定测试条件 来查找该阶段的设计缺陷。如果测试文档能尽早提交。那么就有了更多的检查和 检阅的时间,这些文档还可用于评估开发文档。另外还有一个很大的益处是,测 试者可以在项目中尽可能早地面对规格说明书的挑战。 对于传统的瀑布生命周期模型来说,v 模型常被错误地认为是要求开发和测 试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可正 式开始下一个阶段。这样就无法支持迭代,自发性以及变更调整。例如,b r i a n m a r i e k a r i e k 曾提到,“v 模型的问题在于一定要将系统开发过程分为具有严格边 界的阶段,这使人们无法在这些边界之间交接和交换测试信息。”严格规定不是 有效的开发人员和测试人员在应用各种模型过程中所采用的方式。实际上,各种 模型只是提醒我们,有必要定义一些必须要做什么( 需求) ,然后描述如何傲( 设 计) ,然后花很多力气来实现( 编码) 。v 模型所做的是强调每一个开发级别都有一 个与之相关联的测试级别,并且建议测试应该在各级别测试之前进行设计。 v 模型并不是万能的。v 模型适用于所有类型的开发过程,但并不一定适用 于开发和测试过程的所有方面。不管是g u i 还是批处理、大型机还是w e b 、j a v a 还是c o b o l ,都需要单元测试、集成测试、系统测试和验收测试。但是,v 模型 本身并不会告诉如何定义单元测试或集成测试的内容、以如何顺利工作、如何进 行具体的测试设计,以及该输入怎样的数据,输出怎样的输出结果才是正确的。 天津大学硕士学位论文第二章软件测试概述 有些测试者认为:“是否使用v 模型要看该所应用的项目。有些项目需要应 用v 模型,而有些项目不需要。可以只在需要v 模型的项目中采用。”这样的做 法实际上对任何模型都是有害的。我们应该尽可能地去应用模型中对项目有实用 价值的方面,但不强行地为使用模型而使用模型,否则也没有实际意义。 例如,v 模型的反对者经常声称v 模型只有对需求非常明确,已经文档化 了的项目才有用,因为所有的开发人员和测试人员都需要严格定义好的需求和设 计来开展工作。对于当前很多文档需要事后补充,或者根本没有文档的做法下( 这 已成为一种开发的文化) ,开发人员和测试人员都面临同样的困惑。在这种情况 下,v 模型的概念仍然是有用的,但在需求不明确的情况下更难应用,因为不管 要开展什么工作,要测试什么,首先需要明确知道开发了什么。 v 模型不适用于极限编程( ) 口) ,在,中提倡快速开发,结对编程,在编码 之前就已完成测试用例。首先,我们提倡同时应用这两种方法,另外,也需要指 出的是x p 方法也强调在编程之前尽可能发现需求。 v 模型没有明确说明需求和设计文档应如何定义,要定义多少文档,同时v 模型也没有说明在各测试阶段如何进行测试设计。在采用x p 策略的开发过程中, v 模型的支持者认为,可以将单元测试应用于所划分的各个代码片段上,但v 模型没有定义各单元测试之间应如何匹配。只在必要的时候,才需要进行集成测 试,而最终意义上的集成测试也就是系统测试。尽管一些) 口工作者将这些测试 看作为“验收测试”,其实际目的只是希望降低让用户进行测试的必要性,同时 又希望能确保系统在功能上满足用户业务的需要。 2 3 2w 模型 w 模型由e v o l u t i f 公司提出,相对于v 模型,w 模型增加了软件各个开发 阶段中应同步进行的验证和确认活动。如图2 - 3 所示,w 模型由两个v 字型模 型组成,分别代表测试与开发过程,图中明确地表示了测试与开发的并行关系。 相比于v 模型,w 模型更科学。w 模型是前者自然而然的发展,它强调: 测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设 计同样要测试。 w 模型强调:钡4 试伴随着整个软件开发周期,而且测试的对象不仅仅是程 序,需求、设计同样要测试,测试与开发是同步进行的。w 模型有利于尽早地 全面地发现问题。例如,需求分析完成后,测试人员进行对需求的验证和确认, 以尽早的找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试 风险,及早制定应对措施,将显著减少总体测试时间,加快项目进度。 天津大学硕士学位论文 第二章软件测试概述 丽嗣l 赫娑 软件交付if 验收测试 翻f 品徽i圃睁 掣l 燃 编码 软件集成i i 组装测试 单元测试 图2 3 软件测试w 模型,图中“v & v ”代表“确认和验证” 但w 模型也存在局限性。在w 模型中,需求、设计、编码等活动被视为串 行的,测试和开发活动也保持着一种线形的前后关系,上一个阶段完全结束,才 可以开始下一个阶段的工作,这样就无法支持迭代的开发模型。对于当前软件开 发复杂多变的情况,w 模型不能够满足要求。 2 3 3h 模型 v 模型和w 模型均存在一些不妥之处。如前所述,它们都把软件的开发视 为需求、设计、编码等一系列串行的活动,而事实上,这些活动在大部分时间内 是可以交叉进行的,所以相应的测试之间不存在严格的次序关系。同时,各层次 的测试,单元测试、集成测试、系统测试等也存在反复触发、迭代的关系。 为了解决这一问题,提出了h 模型。它将测试活动完全独立出来,形成了 一个完全独立的流程,将测试准备活动和测试执行活动清晰的体现出来,如图 2 4 所示。 测试就绪点 塑型塑鎏l 丫、一测试流程 其他流程( 如设计流程) 图2 - 4 软件测试h 模型 这个示意图仅仅演示了整个生产周期中某个层次上的一次测试“微循环”。 图中标注的其他流程可以是任意的开发流程,如设计流程或编码流程。该图表明 了,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行。 天津大学硕士学位论文第二章软件测试概述 h 模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周 期,与其他流程并发进行。h 模型指出软件测试要尽早准备,尽早执行。不同的 测试活动可以是按照某个次序先后进行,但也可能是反复的,只要该测试达到准 备就绪点,测试执行活动就可以开展,并且应该开展。 2 3 4 其他模型 除了上述三种常见模型外,还有其他几种模型,如x 模型、前置测试模型 等。x 模型提出针对单独的程序片段进行相互分离的编码和测试,然后通过频繁 的交接,通过集成最终合称为可执行的程序。前置测试模型体现了开发与测试的 结合,要求对每个交付的内容进行测试。这些模型都针对其他模型的缺点进行了 一些修正,但本身也存在一些不足的地方。所以在软件测试过程中正确选取模型 是一个很关键的问题。 2 4 软件测试方法 软件测试的方法原则上可以分为两大类,即静态测试和动态测试。静态测试 是对被测软件进行特性分析的方法的总称,主要特点是不利用计算机运行被测试 的软件,而针对需求说明、设计文件等文档和源程序进行人工检查和静态分析, 以保证软件质量。静态测试能够有效地发现软件中的逻辑设计错误和编码错误。 动态测试是在计算机上实际运行被测试的软件,通过选择适当的测试用例,判定 执行结果是否符合要求,从而测试软件的正确性、可靠性和有效性。动态测试的 主要方法是黑盒测试、白盒测试以及灰盒测试。下面分别介绍这三种方法。 2 4 1 黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能, 通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打 开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接 口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序 是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息( 如数据 库或文件) 的完整性。 黑盒测试方法主要有等价类划分、边值分析、错误推测、因果图等,主要用 于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对 软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的 天津大学硕士学位论文第二章软件测试概述 输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试 情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是 可能的输入进行测试。 1 ) 等价类划分 等价类划分是一种典型的黑盒测试方法。它是把程序的输入域划分成若干等 价类,然后从每个部分中选取少数代表性数据当做测试用例。这样就可以使少数 测试用例检验程序在该类情况下的反应。 2 ) 边界值分析 边界值分析是对等价类划分方法的补充。使用边界值分析方法设计测试用 例,首先应确定边界情况。通常输入等价类与输出等价类的边界,就是应着重测 试的边界情况,应当选取等于、大于等于或小于等于边界值的值做为测试数据, 而不是选取等价类中的典型值或者任意值做为测试数据。 3 ) 错误推测法 这种方法就是人们靠经验和知觉推测程序中可能存在的各种错误,从而有针 对性地编写测试用例。错误推测法充分发挥人的经验,在一个测试小组中集思广 益,方便实用,特别是在软件测试基础较差的情况下,很好的组织测试小组进行 错误推测,是有效的测试方法。 4 ) 因果图 等价类划分和边界值分析并没有考虑到输入情况的各种组台,这样虽然各个 输入条件单独可能出错的情况看到了,但是多个输入情况组合起来可能出错的情 况就被忽略了。因果图是设计测试用例的一种工具,它着重检查各种输入条件的 组合。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定 表,最后为判断表的每一项设计测试用例。 5 ) 功能图 功能图模型由状态迁移图和逻辑功能图模型构成,状态迁移图用于表示输入 数据序列以及相应的输出数据,在状态迁移图中,由输入数据和当前状态决定输 出数据和后续状态。逻辑功能图模型用于表示在状态中输入条件和输出条件之间 的对应关系。测试用例则由测试中经过的一系列状态和在每个状态中必须依靠的 输入输出数据满足的条件组成。 2 4 2 白盒测试 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通 过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部 的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不 天律大学硕士学位论文 第二章软件

温馨提示

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

最新文档

评论

0/150

提交评论