(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf_第1页
(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf_第2页
(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf_第3页
(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf_第4页
(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf_第5页
已阅读5页,还剩62页未读 继续免费阅读

(计算机软件与理论专业论文)软件自动化测试方法的研究与应用.pdf.pdf 免费下载

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

文档简介

武汉理工入学硕士学位论文 摘要 作为软件系统工程旱的一个关键组成部分,软件测试是保证软件质量的重 要途径。同时也对软件测试的技术提出了很高的要求。目前已经有很多有效的 测试方法,其中自动化测试的引入就大大改进了软件测试的效率和质量。因此, 采用何种工具进行测试管理以及如何利用工具实现测试的自动化,已经成为软 件测试领域中研究的新课题。 本论文主要研究在软件测试生命周期中,各测试阶段所采用的自动化测试 方法。基于d o p o d 俱乐部项目,重点研究单元、功能、性能这三个测试阶段中 测试工具的合理选取和应用,并对源码版本管理以及缺陷管理方法做了研究。 在单元测试阶段,选取j i j n i t 框架和e c l e m m a 相结合的方法进行单元测试。 这样一方面可以利用彤n i t 提供的测试框架快件速构造测试代码,另一方面可以 利用e c l e m m a 检查被测代码的覆盖率,从而提高单元测试的执行效率和测试质 量。同时,利用e c l e m m a 还可以计算几城t 进行单元测试的覆盖率。 在功能测试阶段,q t p 作为自动化测试工具并利用测试管理工具t d 进行用 例的管理和自动执行,从而达到功能测试的自动化。另外,利用工具在脚本录 制和调试时选择合适的检查点、数据驱动等有效方法,以提高测试脚本的健壮 性和可靠性。 性能测试阶段,l o a d r u n n e r 可以作为软件性能测试的首选工具。由l o a d g e n e r a t o r 产生负载,c o n t r o l l e r 控制和运行场景,根据a n a l y s i s 生成的性能分析 图表来共同完成系统性能测试的目的。文中对性能测试的过程进行了详细阐述。 作者结合实例对软件自动化测试的方法进行了全面的研究和分析,包括软 件项目丌发中的源代码版本管理( v s s ) 、缺陷管理( b u g z i l l a ) 方法,使得本论文具 有较高的实用价值。源码版本管理工具v s s 提供完善的版本和配置管理功能, 可以保证在不断有新版本产生的情况下,依然对各个测试版本进行维护。b u g z i l l a 为开发与测试人员之间架起了座沟通的桥梁,使得所有的缺陷被全程跟踪和 管理,且加快了缺陷被处理的速度。 关键词:自动化测试,叫n i t ,q t p ,l o a d r u n n e r ,b u g z i l l a 武汉理工人学硕士学位论文 a b s t r a c t s o f t w a r et e s tt a k e sa l li m p o r t a n tp a r ti nt h es o f t - w a r ee n g i n e e r i n g ,a n di ti so n eo f t h ee f f e c t i v et e c h n i q u e st oe n s u r es o f t w a r eq u a l i t y m e a n w h i l e ,i tr a i s e sh i 【曲 r e q u i r m e n tt o t h et e c h n o l o g yo fs o f t w a r et e s t u pt on o w , m o r ea n dm o r et e s t a p p r o a c h e sh a v eb e e na p p l i e d t oi n c r e a s et h eq u a l i t yo fs o f t w a r et e s t ,a n da u t o m a t e d t e s t i n gi sk n o w n a st h em o s te f f i c i e n ta n de f f e c t i v ew a yt oa c h i e v et h eg o a l s oh o w t oa p p l ys o f t w a r et e s t i n gm a n a g e m e n ta n da u t o m a t e dt e s t i n gt e c h n o l o g yt op r a c t i c a l p r o j e c t si san e wt o p i ci nt h ef i e l do fs o f t w a r et e s t t h i sa r t i c l em a i n l ya i m sa tt h er e s e a r c ho fa u t o m a t e dt e s t i n gm e t h o d s t h e a u t h o ri n t r o d u c e dt h ec o r r e c tc h o i c ea n du t i l i z a t i o no ft e s tt o o l sd u r i n gt h et h r e e p h a s e si n c l u d i n gu n i tt e s t ,f u n c t i o n a l t e s ta n dp e r f o r m a n c et e s t ,a n da l s og a v e s u g g e s t i o nt ot h em a n a g e m e n to fs o u c ec o d ev e r s i o na n d d e f e c t sb a s e do nt h ep r o je c t o fd o p o dc l u b t h ef i r s t ,a tt h ep h a s eo fu n i tt e s t ( u t ) ,j u n i tf l a m ea n de c l e m m at o o la r e c h o s e nt o g e t h e rt op e r f o r mu t b yt h i sw a y , n o to n l yt e s tc o d e sc a l lb ed e v e l o p e d q u i c k l yw i t hj u n i tf la m e ,b u ta l s ot h ec o v e r a g er a t eo fs o u r c ec o d e sc a nb ec h e c k e d b ye c l e m m ae a s i l y t h u st h ee f f i c i e n c ya n dq u a l i 够o fu t w i l lb ep r o m o t e dg r e a t l y a tt h es a m et i m e ,e c l e m m ac a nc a l c u l a t et h ec o v e r a g er a t et e s t e db yj u n i t t h es e c o n d ,a tt h ep h a s eo ff u n c t i o n a lt e s t ( f t ) ,t e s t - m a n a g e m e n tt o o l s ( s u c ha s t d ) a l eu s e dt oo r g a n i z ea n dp e r f o r ma l lo ft h et e s tc a s e sa n dq t pt or e c o r da n d e x e c u t et h et e s ts c r i p t s ,s ot h a tw ec a na c h i e v ea u t o m a t e df tc o m p l e t e l y f u r t h e r m o r e , w h e nr e c o r d i n ga n dd e b u g g i n gt h et e s ts c r i p t sw i t ha u t o m a t i ct o o l s ,w es h o u l dc h o o s e t h ea p p r o p r i a t ec h e c k p o i n to rd a t a d r i v e nm e t h o d st oi n c r e a s et h er o b u s t n e s sa n d r e l i a b i l i t yo f t h et e s ts c r i p t s t h el a s t ,a tt h ep h a s eo fp e r f o r m a n c et e s t ( p t ) ,a p p r o p r i a t et o o l ss h o u l db e s e l e c t e dt or e p l a c em a n u a lt e s t t h el o a dg e n e r a t o ri sr e s p o n s i b l ef o rc r e a t i n g p r e s s u r e t h ec o n t r o l l e ri sac e n t r a lc o n s o l ef r o mw h i c h t h el o a dt e s ti sm a n a g e da n d m o n i t o r e d a n dt h ea n a l y s i sc a ng e n e r a t er e p o r t sa n dp e r f o r ma n a l y s i s i na d d i t i o n , i i 武汉理工人学硕t 学位论文 p e r f o r m a n c et e s ts t e p sa r ed e s c r i b e di nd e t a i lw i t h i nt h i sa r t i c l e t h ea u t h o rc o m b i n e ds o m ei n s t a n c e si n t or e s e a r c h i n gt h es o f t w a r ea u t o m a t e d t e s t ,i n c l u d i n gt h em a n a g i n go fs o u r c ec o d ev e r s i o n ( v s s ) a n db u g ( b u g z i l l a ) ,w h i c h i n c r e a s e st h ep r a c t i c a lv a l u eo ft h i sa r t i c l e v s sc a np r o v i d eac o m p r e h e n s i v ev e r s i o n a n dc o n f i g u r a t i o nm a n a g e m e n tc a p a b i l i t i e sa n dm a i n t a i nt h ev e r s i o n se f f e c t i v e l y b u g z i l l as e t su pac o m m u n i c a t i o nb r i d g eb e t w e e ns o f t w a r ed e v e l o p e r sa n dt e s t e r s 。a l l t h ed e f e c t sa leu n d e rt h ec o n t r o l ,a n dr a t eo fd e f e c t sb e i n gd e a l e di sa l s oa c c e l e r a t e d k e yw o r d s :a u t o m a t e dt e s t ,j u n i t ,q t p ,l o a d r u n n e r , b u g z i l l a l 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 武汉理工大学或其它教育机构的学位或证书而使用过的材料。与我一 同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说 明并表示了谢意。 学位论文使用授权书 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即: 学校有权保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权武汉理工大学可以将本学位论文的 全部内容编入有关数据库进行检索,可以采用影印、缩印或其他复制 手段保存或汇编本学位论文。同时授权经武汉理工大学认可的国家有 关机构或论文数据库使用或收录本学位论文,并向社会公众提供信息 服务。 ( 保密的论文在解密后应遵守此规定) 研究生( 签名) :邓雩导师( 签名) :趸堆日期j 节丁。占 武汉理工人学硕士学位论文 1 1 软件测试的发展 第1 章绪论 对软件测试的研究最初可追溯到2 0 世纪5 0 年代。当时对软件测试的定义 基本上等同于程序的调试,这和当时的机器语言程序开发模式是相对应的;到 了6 0 年代,随着编译技术的发展,软件测试开始与调试技术相分离;伴随着7 0 年代软件工程概念的形成,软件测试开始形成相对独立的行为,也开始形成严 密的理论体系作为支撑;到了8 0 年代,些形式化的方法和技术并用于确认和 验证程序的正确性。随着软件行业飞速发展,软件规模越来越大,复杂度越来 越高。人们对软件的质量开始重视,软件测试理论和技术都得到了快速发展。 软件测试被视为软件质量保证的重要手段,用于评价软件的质量;9 0 年代后, 软件工程百花齐放,出现了各种软件开发的新模式,以敏捷开发模式为代表的 新一代开发模式开始步入历史的舞台,并且赢得了众多开发团队的青睐。 尽管软件测试经过几十年的发展,已经取得了长足的进步,但是与软件开 发的发展相比,软件测试的发展还是比较缓慢的。 软件开发摆脱了早期的机器语言编码方式和汇编语言编码方式,跨越了结 构化编程语言,进入面向对象的时代,开发人员的编码能力得到了很大的提高。 开发工具的不断进步,使得开发人员无论是编码速度还是调试速度方面都受益 匪浅。 相比而言,软件测试的发展没有那么乐观。虽然测试工具层出不穷,但也 并没有发生革命性的发展,大部分的测试人员仍然依赖于手工测试。 随着软件开发复杂性的不断提高,对软件工程、信息技术和软件质量等从 业人员的要求也随之增加,并且之间的关联也变得更加紧密。我们希望能够检 查出软件是否按照设计的意图运行,并发现在设计中可能存在的问题。因此必 须设计和运行更多的测试,且更快、更频繁,希望测试组能够对处于开发中的 项目的当前状态给出持续的评估,并且随时准备对测试覆盖率、测试状态、当 前版本的稳定性以及所有尚未解决的错误等细节提供明确的报告【2 j 。软件测试技 术的发展过程表明自动化测试的产生和发展是必然趋势。 武汉理:l 人学硕土学位论文 1 2 软件测试的现状和前景 美国的i e e e 、a c m 等组织制定了一系列的软件测试规范,国外的许多大学 ( 如c a m e g i em e l l o n 、g e o r g em o s o n 等) 、研究机构( 如n a t i o n a l s o f t w a r et e s t i n gl a b 等) 和公司( 如r a t i o n a lc o r p o r a t i o n ,m e r c u r yi n t e r a c t i v e 等) 进行了大量的软件测试 研究和应用工作。其中c a r n e g i em e l l o n 大学侧重于回归测试和c s 测试技术的 研究,g e o r g em o s a n 侧重于基于规范的测试自动生成和面向对象测试技术。比 较流行的软件测试工具集有s o f t w a r er e s e a r c h 的t e s tw o r k s 、r a t i o n a l 的r o b o t i 引、 m e r c u r yi n t e r a c t i v e 4 1 的w i n r u n n e r l o a d r u n n e r 等。 国内的软件测试技术研究起步比较晚,但是前景是光明的。国内专门从事 软件测试技术研究的单位有:中国软件评测中心、中国测试技术研究院、北京 航空航天大学软件工程研究所、上软海市计算机软件评测重点实验室、航天工 业总公司2 0 4 所等。越来越多的人开始关注测试行业,越来越多的人己投身测 试行业,越来越多的人开始喜欢测试行业。 1 2 1 国内测试行业现状 关于国内软件测试行业的现状,国内知名的人才服务机构智联招聘发布了 软件测试行业专项调查报告,其中有几项值得注意的数据: ( 1 ) 对软件测试重要性的调查结果显示:6 2 的受访企业认为软件测试非常 重要,必须设立专门的测试部门,并将其视为与开发环节同等重要的地位。3 1 8 的企业选择了比较重要。而认为软件测试只起到“一定作用或“可有可无” 的比例为0 。可见软件测试得到了大部分人的重视。 ( 2 ) 测试人员所占的比例。调查数据显示:被调查企业中测试人员与开发人 员比例为1 :5 的企业高达3 6 4 ,比例为1 :2 的占3 1 8 ,而比例为1 :l 及以上 的占3 1 7 。可见,部分企业的软件测试人员比例仍然偏低。 ( 3 ) 测试人员能力情况。调查结果显示:用人单位在招聘人才时遇到“很多 计算机专业应届生缺乏实践经验和动手能力 和“以往做过测试的应聘者并为 系统地掌握软件测试流程问题的比例分别占到了7 2 7 和5 9 1 。 1 2 2 软件测试的前景 h a r r yr o b i n s o n 在2 0 0 4 年的时候就曾经对软件测试的未来发展趋势进行过 2 武汉理工人学硕士学位论文 预测【5 j ,他认为软件领域在将来会有以下变化: ( 1 ) 测试的方法同趋完善,b u g 预防和早期检查将成为测试工具的主流; ( 2 ) 需求工程师、开发人员会成为软件测试人员中的一份子,他们与测试人 员之间开始互相帮助; ( 3 ) 机器将替代测试人员做大部分的工作,更少更精的测试人员开始把注意 力集中在更严重的问题上; ( 4 ) 测试人员将运行更多更好的测试代码; ( 5 ) 对测试质量的衡量开始从计算b u g 数量、测试用例数量转到需求覆盖、 代码覆盖等方面; ( 6 ) 新的挑战,如安全测试等新的问题开始出现; ( 7 ) 测试与开发的界限开始模糊; ( 8 ) 顾客反馈与测试合为一体; ( 9 ) 开发人员追求进度,项目开发到最后- - 亥, j a 加入测试的行为仍然会存在; ( 1 0 ) 钡l j 试人员获得尊重、测试变得流行。 在近几年中,上面的一些变化已经开始或者即将开始。软件测试行业的发 展可谓“道路是曲折的,可是前途是光明的”。 1 3 测试自动化 1 9 8 3 年i e e e 提出的软件工程术语中给软件测试下的定义是:“使用人工或 自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规 定的需求或检测出预期结果与实际结果之间的差别 1 6 | 1 7 l 。 在软件开发过程中,许多保证软件质量的方法被采用去分析、设计和实现 软件。但是难免还是会犯错误。软件测试就是为了发现错误而执行程序的过程。 为了保证软件的质量和可靠性,测试应该能够有效地发现软件中的任何缺陷, 同时也应该是高效的,且开销小。其中,自动化测试的引入就大大改进了软件 测试的效率和质量。 1 4 本文研究内容及目的 本论文主要完成三个任务: ( 1 ) 概述软件自动化测试的发展以及研究现状; 武汉理j :人学硕士学位论文 ( 2 ) 进行单元、功能、性能三个阶段的自动化测试方法研究; ( 3 ) 使用v s s 进行源代码版本管理,以及b u g z i l l a 进行缺陷管理方法的研究; ( 4 ) 对自动化测试方法进行实际演练,并对自动化测试方法做出总结; 论文的研究目的是通过学习当前的自动化测试理论和自动化测试工具,研 究如何在企业中利用自动化测试方法,为提高产品测试效率和质量提供参考。 1 5 论文结构 笔者在2 0 0 8 年1 月至2 0 0 8 年9 月期间,参与了d o p o d 俱乐部项目开发, 主要负责了信息采集系统、数据统计、软件测试及项目管理等工作。针对软件 自动化测试的生命周期中的各个测试阶段,本文采用理论分析和实验结果相结 合的方法,提出了各个测试阶段中有效的测试方法。 第1 章,绪论部分。主要介绍软件测试的发展以及研究现状,并说明了本 论文研究目标和主要任务。 第2 章,描述了自动化测试的概念,并对自动化测试的优缺点、适用范围、 工具以及自动化测试生命周期中六个重要的阶段进行了详细的分析和说明,以 便后来的自动化测试方法的研究。 第3 章,先对单元测试阶段自动化测试的概念进行了描述,接着介绍了单 元测试框架。然后对单元测试的过程和方法进行研究。 第4 章,先描述了功能测试的相关概念,对主流测试工具及原理进行了介 绍。接着结合实例对功能测试用例设计方法“直角矩阵法”进行了说明,并提 出测试用例自动生成方法。然后对功能测试中的各个步骤进行了详细的分析, 并在此测试阶段引入t d ,采用q t p + t d 相结合的方式去更好地进行测试并管理。 第5 章,首先描述了性能测试的相关概念,对主流测试工具及原理、性能 测试指标进行了介绍。接着按照性能测试阶段中的5 个主要步骤,结合实例对 整个测试阶段的方法和过程进行了研究。 第6 章,首先简单介绍了d o p o d 项目,接着对源代码版本管理和缺陷管理 方法进行了详细的分析和介绍。然后分析了在项目开发过程中采用的测试方法, 以及引入自动化测试之后对项目丌发作出的贡献,并得出结论。 第7 章,是对全文的总结,分析了全文的主要研究成果,并对未来工作进 行了分析和展望。 4 武汉理:l 人学硕、十:学位论文 第2 章自动化测试技术 2 1 自动化测试的概念 自动化测试是软件测试发展的一个必然的趋势。随着软件技术的不断发展, 测试工具也得到了长足的发展,人们开始利用测试工具来帮助做一些重复性的 工作。软件测试的一个显著特点就是其重复性,大量重复的工作使得工作量倍 增、会很容易让人产生厌倦的心理,因此工具被想到用来解决重复的问题。 自动化测试就是使用自动化测试工具来代替手工进行的一系列测试动作, 从而验证软件系统是否满足规定的需求或检测出预期结果与实际结果之间的差 别【8 1 。自动化测试的目的是减轻手工测试的工作量,以达到节约资源( 包括人力、 物力等) ,保证软件质量,缩短测试周期的目的。通常是使用脚本或者其他代码 驱动应用程序。这一切可以通过可视用户界面完成,也可以通过直接命令( 如从 客户端发向服务器,以模仿浏览器发送的命令) 完成。 提到自动化测试,最容易联想到基于g u i 录制回放的自动化功能测试工具, 如q t p 、r o b o t 、w i n r u n n e r 、s i l k t e s t 等;性能测试工具,如l o a d r u n n e r 、 s i l k p e r f o r m e r 、w e b r u n n e r 等;以及单元测试框架x u n i t 等。实际上自动化测试 技术的含义非常的广泛,任何帮助流程的自动流转,替换手工的动作、解决重 复性问题以及大批量产生内容,从而帮助测试人员进行测试工作的相关技术或 工具都叫做自动化测试技术【1 1 。例如用于辅助测试用例的设计或测试数据生成的 测试用例设计工具,有些测试管理工具能帮助测试人员自动地统计测试结果并 产生测试报告,编写脚本【9 1 让版本编译自动进行,利用多线程技术去模拟并发请 求,利用工具自动记录和监视程序的行为以及产生的数据,利用工具自动执行 界面上的鼠标单击和键盘输入动作掣1 0 l 。 2 2 自动化测试的适用范围 p e e r 给出了对各种测试类型进行自动化的参考【1 ,如表2 1 : 5 武汉理j :人学硕士学位论文 表2 1自动化测试类型参考表 技术描述备注 单元测试该测试上作通常是开发人员的职责,很多不通过使用上e 式的自动化单元测试, 组件测同的方法能够被使用,比如“预测先行”,不仅能够帮助开发人员产出更加 试 它是一个测试框架,开发人员在编写代码前稳定的代码而且能够使软件的整 编写不同的单元测试。当测试通过时,代码体质量更加的好 也就完成了 冒烟测试冒烟测试一般是验证被测系统的功能测试在构建过程能够确保构建已经为 用例的集合,冒烟测试背后的思想是确保系测试准备好时,冒烟测试通常使得 统基本是可以工作的,以便更大的测试工作自动化的运行 能够开始 功能集这里测试的工作关注在验证不同的组件之这些类型的测试通常是复杂测试 成测试间的集成上的基础,大量的边缘测试被合并以 制造出不同的错误处理测试 系统测试这种测试是通过执行用户场景模拟真实用不需要进行自动化的测试、安装测 _ j 例测户使用系统以证明系统具有被期望的功能试、安全性测试通常使由手工完成 试 的测试的,因为系统的环境是恒定不变的 同归测试同门测试实际上是重复已经存在的测试。通这里完全有潜力应用自动化的测 常如果使用手工完成的话,这种测试只在项 试。能够在每次构建完成后执行自 目的结尾执行少数几次动化的回归测试,以验证被测试系 统的改变是否影响了系统的其他 功能 性能测试性能测试包括以下不同测试形式:负载测如果没有自动化的测试工具,将无 试、压力测试、并发测试法执行通过模拟用户的负载实现 的高密集度的性能测试 一般来说,重复性比较高的回归测试以及手工测试难以完成的性能测试是 自动化测试最有潜力应用和最能体现价值的地方,而如果在单元测试时期就引 入自动化,也将大大提高开发出的代码质量1 2 1 。 2 2 1 自动化测试的优点 通常软件测试的工作量很大,而测试中的许多操作是重复性的、非智力性 6 武汉理- l 人学硕士学位论文 和非创造性的,并要求做准确细致的工作,计算机就最适合代替人工去完成这 样的任务。 在过去的数年中,通过使用自动化的测试工具对软件的质量进行保障的例 子已经数不胜数。目前为止自动化测试工具已经比较完善。我们可以通过在软 件测试中应用自动化的测试工具来大幅度的提高软件测试的效率和质量。在决 定采用自动化的测试工具之后,就应该尽早的开始测试的工作,这样可以使得 修改错误变得更加的容易和廉价,并且可以减少更正错误后对软件开发周期的 影响。 表2 2 是国际软件质量保证组织的一个统计测试时间的对比,这个测试案例 中包括1 7 5 0 个测试用例和7 0 0 多个错误: 表2 2 手q - n 试与自动化测试效率的比较 测试步骤手上测试自动化测试通过使用工具的 改善的测试的百分比 测试计划 3 2 h4 0 h2 5 测试用例的开发 2 6 2 h1 1 7 h5 5 测试执行 4 6 6 h2 3 h9 5 测试结果分析 1 l7 i l 5 8 h 5 0 错误状态更止监测1 1 7 h 2 3 h8 0 生成测试报告 9 6 h1 6 h8 3 时间总和 1 0 9 0 h2 7 7 h7 5 通过表2 2 我们可以看出自动化测试与传统手t n 试在各个阶段都有着很 大的不同,自动化测试大约节省了将近3 4 的工时,尤其是在测试执行和生成测 试报告的方面,自动分析并生成测试反馈报告大量的节省了人工去收集结果并 总结分析的过程,并使得测试结果更加标准、准确、一致。 另外,有很多测试是手工测试很难甚至是没办法做到的,不得不借助于工 具的力量。例如:许多与时序、死锁、资源冲突、多线程等有关的错误,通过 手t n 试很难捕捉到;进行系统负载、性能测试时,需要模拟大量数据或大量 并发用户等各种应用场合时,很难通过手工测试来进行;进行系统可靠性测试 时,需要模拟系统运行几年甚至几十年以验证系统能否稳定运行,这也是手工 测试无法模拟的;如果有大量( 如几千) 的测试用例,需要在短时问内( 如1 天) 完 成,手工测试几乎不可能做到。 7 武汉理- l 人学硕上学位论文 测试自动化的优势是明显的。首先测试自动化可以提高测试效率,使测试 人员更加专注于新的测试模块的建立和丌发,从而提高测试覆盖率;其次,测 试自动化使测试资产的管理数字化,并使测试资产得以在整个软件测试生命周 期内得以复用,这个特点在功能测试和回归测试中尤其具有意义;此外,通过 测试流程的自动化管理提高了测试过程的有效性。 2 2 2 自动化测试的局限 测试自动化带来诸多好处的同时,也带来了一些新的问题【1 2 】【1 3 】,主要表现 在以下几个方面: ( 1 ) 不能完全取代手工测试 自动化测试不可能也没必要取代手工测试来完成所有的测试任务。因为有 些测试使用手工测试比自动化测试要简单,这时采用测试自动化的开销就比较 大了。如果测试只是偶尔执行,或者待测系统经常变动、不稳定,测试需要大 量的人工参与时,就不适宜采用自动化测试。 ( 2 ) 自动测试本身不具想象力 自动测试工具本身不具有想象力,只是按运行机制执行。而手工测试时测 试执行者可以在测试中判断测试输出是否正确,以及改进测试,还可以处理意 外事件。如网络连接中断,此时必须重新建立连接。手工测试时可以及时处理 该意外,而自动化测试时该意外事件一般都会导致测试的中止。 ( 3 ) 对测试质量的依赖性较大 进行自动化测试实际上仅仅意味着测试的结果与期望值相同,因此测试的 有效性很大程度上依赖于自动化测试本身的质量。确保测试的质量往往比自动 化测试更为重要,所以要投入精力对测试软件进行必要的检测。 ( 4 ) 自动化测试成本可能高于手工测试 自动化测试的成本大致由以下几个部分组成:自动测试开发成本、运行成 本、测试维护成本、工具成本和其他相关任务成本。 ( 5 ) 自动化测试可能会制约软件开发 应用软件的变化对自动化测试的影响要比手工测试更大一些,软件的部分 改变有可能使自动化测试崩溃。而设计和实施自动化测试要比手工测试开销大, 并需要维护,所以,对自动化测试影响较大的软件修改可能受到限制。 8 武汉理j l 人学硕上学位论文 总的说来,自动化测试的优点和收益是显而易见的,但同时它也并非万能。 只有正确地采用自动化测试并对其进行合理的设计和实施j 。能从中获益。 2 3 自动化测试生命周期 e l f r i e d ed u s t i n 、r a s h k a 和p a u l 合作公布了自动化测试生命周期方法学 ( a u t o m a t e dt e s t i n gl i f e c y c l em e t h o d o l o g y a t l m ) 1 1 2 】【1 3 】【1 4 1 用于指导测试人员如 何进行自动化测试。 a t l m 所述的各个阶段包括:决定自动化测试;选择自动化测试工具;自动 化测试的引入阶段;测试计划、设计和开发阶段;测试执行和管理;测试项目 评审阶段。 2 3 1 决定自动化测试 在这一阶段,对于测试团队而言,重要的是进行测试计划【l5 1 ,知道自动化 测试的预期结果,列出在正确执行自动化测试后的益处。同时,需要列出自动 化测试工具的备选方案。以备对是否采用自动化测试进行准确评估,得出结论。 2 3 2 自动化测试工具 自动化测试工具【l6 】的选择与采购是软件自动化测试生存周期方法学的第二 个阶段,测试人员应该熟悉可用来支持整个生存周期各方面的不同类型的工具, 能够对特定项目上实施的测试类型做出有益的决定。 自动化测试工具可以减少测试工作量,提高测试工作效率,但首先是能够 选择合适的且满足企业系统工程环境的自动化测试工具。因为不同的测试工具, 其面向的测试对象是不一样的,测试工具品种不一,功能性能各异。并且自动 化测试工具的购置涉及到资金、人员和资源等多方面的因素,是一项系统工程。 一般来说,工具的选择首先是根据需求确定候选工具集,然后对工具的各个功 能、价格等特性进行逐一的比较和综合评估,最后从候选工具中找出质量和性 能价格比等方面综合评分最佳的工具。对自动测试工具的适当选择,很大程度 上决定了该工具能否带来相应的投资回报。 按照测试工具的主要用途和应用领域,测试工具分为测试用例设计工具、 白盒测试工具、黑盒测试工具、性能测试工具、测试管理工具几个大类l j l l 8 l 。 9 武汉理工大学硕士学位论文 ( 1 ) 测试用例设计工具 测试用例设计工具一般用于辅助测试用例的设计或测试数据生成。常用的 有c t ex l 、p i c t 等。 ( 2 ) 白盒测试工具 白盒测试工具一般是针对程序内部逻辑流程和结果进行测试,测试中发现 的缺陷可以定位到代码级。 根据测试工具原理的不同,白盒测试工具可以细分为静态测试工具和动态 测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对 代码编译连接和生成可执行文件。静态测试工具一般是对代码进行语法扫描, 找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的 调用关系图等。动态测试工具一般采用“插桩”的方式,在代码生成的可执行 文件中插入一些监测代码,用来统计程序运行时的数据。它与静态测试工具最 大的不同是动态静态工具要求被测系统实际运行。工具主要有开源的x u n i t 【i 引、 p a r a s o f t 公司的j t e s t 、c + + t e s t 等工具。 ( 3 ) 功能测试工具 功能测试工具用于自动化执行功能测试脚本,一般采用录制回放的机制。 通过录制操作过程,产生基本的测试脚本,然后在脚本编辑器中进一步地完善 测试脚本,再通过回放脚本的方式执行脚本的测试步骤,从而实现功能测试的 自动化。 功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版 本的功能进行测试,提高工作质量和效率。其主要目的是监测应用程序是否能 够达到预期的功能并正常运行。工具主要有m e r c u r yi n t e r a c t i v e 公司的 w i n r u n n e r q u i c kt e s tp r o f e s s i o n a l 、i b m 公司1 2 0 】的r a t i o n a lr o b o t f u n c t i o n a l t e s t e r 、c o m p u w a r ec o r p o r a t i o n 公司的q a r u n 等。 ( 4 ) 性能测试工具 性能测试工具的主要目的是度量应用系统的性能和可扩展性,是一种预测 系统行为和性能的自动化测试工具。在实施并发负载过程中,通过实时性能监 测来确认和查找问题,并针对所发现问题对系统进行优化,确保应用部署成功。 性能测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大 限度地缩短测试时间,优化性能和加速应用系统的发布周期。工具主要有 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 、r a d v i e w 公司的w e b l o a d 、s e g u e 公司 i o 武汉理工火学硕士学位论文 的s i l k p e r f o r m e r 。 ( 5 ) 钡t l 试管理工具 测试管理工具一般用于对测试需求、测试计划、测试用例、测试实施进行 管理,测试管理工具还包括对缺陷的跟踪管理。 测试管理工具能让测试人员开发人员或其他的相关人员通过一个中央数据 仓库在不同的地方就能交互信息。工具如毋m 公司的r a t i o n a lt e s t s u i t e 系列中 的t e s t m a n a g e r 、m e r c u r yi n t e r a c t i v e 公司的t e s t d i r e c t o r 、s e a p i n e 公司的 t e s t t r a c k b u g z i l l a 。 ( 6 ) 测试辅助工具 这类工具需要针对不同的软件进行开发,其本身并不执行测试,而只是完 成像生成测试数据为测试提供数据准备这样的工作。 2 3 3 自动化测试的引入 自动化测试引入阶段是自动化测试生存周期方法学的第三个阶段,包括测 试过程分析和测试工具考查。 测试过程分析确保整个测试过程和策略适当,必要时可加以改进,以便成 功地引入自动化测试。测试人员定义和收集测试过程度量以确保过程的改进。 在此阶段,确定使用的技术环境以及自动化工具可支持的各种测试。按照测试 需求和计划中的测试活动,对用户参与计划进行评估并对测试组技能进行分析。 强调测试人员的早期参与,支持将需求规范细化成能被充分测试的条款,并强 化测试人员对应用程序需求与设计的了解。 测试工具【2 l 】的考查主要是综合考虑项目测试需求、可用的测试环境,测试 平台,测试人员,用户环境以及被测应用系统的特性,测试人员应该研究引入 自动化测试工具后是否对项目有益,还应该评审项目进度以确保为测试工具建 立和需求体系留有足够的时间,将潜在的测试工具和实际应用程序映射到测试 需求中,验证测试工具是否与应用和环境兼容,同时还应研究解决方案以解决 兼容性以防止测试期间出现的不兼容问题。 2 3 4 测试计划、设计和开发 测试计划、设计和开发是自动化测试生存周期方法学的第四个阶段,相对 武汉理l 人学硕七学位论文 来说比较重要【2 2 】。 测试计划是对软件测试过程的一个整体上的设计。在此阶段,通过收集项 目和产品相关的信息,对测试范围、测试风险进行评估,对测试用例、工作量、 支持测试环境所需的硬件、软件、网络和时间等进行评估,对测试采用的测试 策略、方法、资源、环境、进度等做出合理的安排。 在任何类型的测试中,测试计划都是必要的步骤。测试计划是进行成功测 试的关键。任何类型测试的第一步都是制定比较详细的测试计划。好的测试计 划能够保证测试工具能够完成测试的目标。 2 3 5 测试执行和管理 系统的需求分析和检查、测试计划以及测试用例的准备都是为了执行测试 而准备的。在此阶段,测试团队必须根据测试的日常安排来执行测试脚本,并 改善这些脚本,同时还必须评审测试的结果。系统的问题应通过系统问题报告 记录在案,并帮助开发人员去理解和重现这些问题。最后,测试团队还需要进 行回归测试来追踪和关闭这些问题。 2 3 6 测试项目评审 测试项目的评审必须贯穿于整个自动化测试生命周期,以利于测试活动的 不断改进,必须有相应的标准来衡量评审的结果。 通过运用a t l m 中所概括的系统的方法,测试团队就能在测试资源受限的 情况下利用这一途径组织和执行测试活动,并且达到使测试覆盖率最大的目的。 2 4 本章小结 本章介绍了自动化测试的概念以及其与手工测试相比的优点与局限。并对 自动化测试生命周期中六个重要的阶段进行了详细的分析和说明。自动化测试 有很强的优势,通过借助计算机的能力,可以重复、快速地运行,对数据进行 精确、大批量的比较,且不易出错。但是手工测试也是不可替代的,很多数据 的正确性、界面的美观性等都离不丌测试人员的人工判断。因此,需要在合适 的地方去使用合适的测试方法,并将其有机地结合,才能充分利用各自的优势。 1 2 武汉理l 入学硕士学位论文 3 1 引言 第3 章自动化单元测试研究 单元测试是针对软件设计中的最小单位程序模块,进行正确性检验的 工作。其目的是发现每个程序模块内部可能存在的错误,即执行单元测试是为 了证明某段代码的行为和开发者所期望的一致【2 3 】。单元测试一旦发现问题,就 必须给予高优先级,并立即给予解决。根据j a v a w o r l d 的规n - 一个项目的单元测试套件应该总是10 0 成功地执行。对有责任心的开发者 来说单元测试中的任何错误都立即具有最高优先级。 单元测试特别是单元回归测试关注于代码方法级功能的验证。如果手工执 行单元级别的回归测试,开发人员所需要的维护工作,特别是测试数据的维护 工作量会非常巨大。引入自动化单元测试不但会使你的工作完成得更轻松,而 且会令软件的设计变得更好,甚至大大减少花在调试程序上面的时间。 单元测试的自动化主要包括:代码规范的自动检查、单元测试代码的自动 产生、单元测试代码的自动运行。 3 2 单元测试工具 j t e s t 是p a r a s o f l 公司推出的一款针对i a v a 语言的自动化白盒测试工具,j t e s t 先分析每个j a v a 类,然后自动生成j u n i t 测试用例并执行用例,从而实现代码的 最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以d b c ( d e s i g nb yc o n t r a c t ) 规范开发的代码的正确性。但其价格昂贵。 u n i t 2 4 】是由e r i c hg a m m a 和k e n tb e c k 编写的基于x u n i t 架构的单元级回归 测试框架。n u n i t 、j u n i t 、c p p u n i t 都是x u n i t 的一员。n u n i t 适合所有的n e t 语言,j u n i t 适合j a v a ,而c p p u n i t 适合c + + 。要根据单元测试代码语言的不 同,选择不同的执行框架。 武汉理1 二大学硕士学位论文 3 2 1 单元测试框架分析 j u n i t 是x u n i t 测试体系架构的一种实现。j u n i t 具有很多的优势:首先它是 完全免费的;其次使用j u n i t 可以快速的撰写测试并检测程序代码并逐步随着程 序代码的成长增加测试;j u n i t 测试检验其结果并提供立即的回馈;j u n i t 测试可 以合成一个测试系列的层级架构,j u n i t 测试的合成行为允许组合多个测试并自 动的回归( r e g r e s s i o n ) 从头到尾测试整个测试系统。j u n i t 框架主

温馨提示

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

评论

0/150

提交评论