




已阅读5页,还剩48页未读, 继续免费阅读
(物理电子学专业论文)基于qtp自动化测试框架的开发与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕士学位论文 摘要 随着软件测试技术的快速更新以及软件开发周期的大大缩短,使传统的手工 测试遭遇了很大的挑战,因此随着第三方自动化测试工具的开发和不断成熟使得 自动化测试的兴起和发展成了测试行业发展的一个新兴阶段,但是仅仅依靠第三 方自动化测试工具作为自动化测试的主要解决方案,这远远是不够的,因此必须 要提出一个完整而适用性比较高的自动化测试解决方法,即自动化测试框架。自 动化测试框架的开发和研究逐渐成为软件测试行业未来的一个发展趋势,目的是 为了实现高效的自动化测试。 本文中首先介绍了自动化测试的研究背景以及目前国内外的发展现状,通过 对现在常用的第三方自动化测试工具以及自动化测试框架发展的介绍,设计出了 基于q 1 1 p ( q u i c kt e s tp r o f e s s i o n a l ) 自动化测试的框架。本文的自动化测试框架 是在第三方测试工具q t p 的基础上进行了二次开发。结合q t p 自身的特点以及 被测软件的特点,将整个框架分为了驱动模块、配置文件、函数库、测试用例、 测试数据、测试脚本以及日志和测试报告等几个模块,并对这几个模块进行了详 细的设计和开发,最终实现了基于q t p 自动化测试的框架。并且将该框架应用 于实际的预付卡行业中的n t i s 交易项目中。结合m i s 项目的实际条件,分别对 框架中的各个模块进行相应的设计与实现,最终启动自动化测试,并产生相应的 测试报告和日志。最后通过将本文设计的基于q t p 自动化测试框架的测试结果 与其他测试框架进行了比较,得出该框架的实施缩短了大量的测试时间,大大的 提高了测试人员的工作效率,并节约了成本,成功的达到了预期研究目标。最后 本文总结了课题的主要工作内容,并根据该框架中存在的不足进行了后续工作的 展望。 关键宇:自动化测试,q t p ,自动化测试框架,数据驱动 武汉理工大学硕士学位论文 a b s t r a c t r e c e n t l y , w i t l lt h ei m p r o v e m e n to fs o f t w a r et e s t i n gt e c h n o l o g y t r a d i t i o n a l m a n u a lt e s t i n gm e e t st h eh u g ec h a l l e n g e 、j ,i t ht h ei n n o v a t i o no fs o f t w a r et e c h n o l o g y , t h el a r g e rs o f t w a r es c a l ea n ds h o r t e nt h ed e v e l o p m e n tp e r i o d s ot h ed e v e l o p m e n to f a u t o m a t i o nt e s t i n gt e c h n o l o g yh a sc o n t r i b u t e dt ot h ef u r t h e rd e v e l o p m e n to ft e s t i n g i n d u s t r y a l t h o u g h 、析mt h er c s e a r c h m e n to ft h i r d - p a r t yt e s t i n gt o o l sw h i c hh a v em a d e t h e d e v e l o p m e n ta u t o m a t i o nt e s t i n g ,i t i sn o te n o u g hf o r t h em a i nr e s o l u t i o no f a u t o m a t i o nt e s t i n gb yr e l a y i n go nt h et h i r d - p a r t y t e s t i n gt o o l s i nt h ep r a c t i c eo f e n t e r p r i s ep r o j e c t s s ot h ea u t o m a t i o nt e s t i n gf r a m e w o r ki sp u tf o r w a r di no r d e rt o a c h i e v eh i g h - e f f i c i e n c y , h i g h - q u a l i t ys o f t w a r ea u t o m a t i o nt e s t i n g i nt h i sp a p e rw ei n t r o d u c et h er e s e a r c hb a c k g r o u n do fa u t o m a t i o nt e s t i n g ,a n dp u t f o r w a r dt h ea u t o m a t i o nt e s t i n gf l a l t l e w o r kb a s e do nq t pb yi n t r o d u c i n gt h ec o m m o n t h i r d p a r ta u t o m a t i o nt e s t i n gt o o l sa n dt h ed e v e l o p m e n to fa u t o m a t i o nf r a m e w o r k t h ef r a m e w o r ki sa g a i nd e v e l o p e do nt h eb a s i so ft h ea u t o m a t i o nt e s t i n gt o o lq u i c k t e s tp r o f e s s i o n a l 晰mt h ec o m b i n a t i o no fq t pc h a r a c t e r sa n dt h es o f t w a r e c h a r a c t e r s ,t h ef r a m e w o r ki sd i v i d e di n t om a n ym o d u l a r ss u c ha sc o n f i g u r a t i o n f i l e ,f a c t i o nl i b r u a r y , t e s tc a s e ,t e s td a t a , t e s ts c r i p t , l o ga n dt e s tr e p o r t t h e s e m o d u l a r sa r ea l ld e v e l o p e da n dr e s e a r c h e di nd e t a i l m o r e o v e r , w ep u tt h ef r a m e w o r k i n t ot h ea p p l i c a t i o no fm i sp r o j e c t f r o mt h et e s tr e s u l t s ,i tc o m e st ot h ec o n c l u s i o n t h a tt h ef r a m e w o r kc a ns a v e4 3 o ft h et i m et oi m p r o v ew o r ke f f i c i e n c ya n da c h i e v e c o s t s a v i n g s a tt h ee n d ,t h ep a p e rs u m m a r i z e st h e m a i nr e s e a r c h e dt a s k sa n d p r o s p e c t st h ef o l l o w i n gw o r k k e y w o r d s :a u t o m a t i o nt e s t i n g ,q t p , a u t o m a t i o nt e s t i n gf r a m e w o r k , d a t ad r i v e 武汉理工大学硕士学位论文 1 1 概述 第一章绪论 在软件生命的周期中每一个阶段中,只要软件的某些部分发生了变化,就很 会给该软件带来一系列不可预知的问题。软件之所以发生改变,一方面可能是在 测试中发现的缺陷( b u g ) 并做了修改,另外一方面也有可能是因为用户需求发 生了改变,从而在软件中根据用户需求重新加入了新的元素。当软件中隐藏的错 误被发现时,如果软件测试和管理不够完善,那么就很有可能会遗漏掉软件中的 错误,有的时候这些错误可能对软件来说是致命的;同样如果是开发者对软件中 错误代码理解的不够深刻,那么很有可能在修改代码的时候只修改了软件外部界 面上的的错误,而没有真正的修复错误本身,那么程序很有可能因为不当的修改 而出现隐藏更深的错误,从而会导致修改的部分会产生新的问题,甚至影响程序 中原有的功能。同样,在程序员为了增加某个模块的功能时加入了新的代码的时 候,除了新的代码本身有错误之外,它还很有可能因为新的代码的加入而对原来 的代码带来一系列的影响。因此,不管是什么原因导致软件发生改变时,我们就 必须重新测试软件之前的功能,以确保程序修改除了是否达到了用户需求的功能 之外,同时也没有影响到程序原有的基本功能。与此同时我们还需要增加新的测 试用例用来测试新的或被修改了的功能,使测试用例尽可能多的覆盖到程序的各 个部分,因此为了验证修改后的程序是否正确,我们必须对其进行回归测试。 现实生活中因为忽视回归测试的重要性而导致严重后果的例子数不胜数, 如:德国的阿里亚娜5 型“1 0 吨 运力火箭在发射不久熄火并自动销毁的原因 就是因为软件缺陷导致复用的代码没有进行充分详细的回归测试而造成的。同样 有软件测试不充分而发生事故的例子也有诸如在2 0 0 7 年,奥运订票网站开通的 第一天就出现网站不能登录进而导致数百万人无法网上购票;以及两名大学生在 中国工商银行黄金交易系统出现纰漏的情况下,通过低买高卖的方式导致工商银 行损失了三千多万等。 在软件的整个生命周期中的每个阶段,为了确保软件的可用性,我们都需要 进行多次的回归测试。尤其是在渐进和快速迭代开发的模式下,不同的新版本的 发布必须要求测试人员更加频繁的进行软件回归测试。在现在的企业中,为了提 高软件的开发效率,往往采用极端编程的方法,即每天都要进行很多次的回归测 试。所以在这些情况下,如何正确的来选择测试策略进而提高测试的工作效率是 武汉理工大学硕士学位论文 有待于解决的。 然而在现实的工作中,回归测试需要反反复复的进行,这使得回归测试变的 尤其的繁琐和令人厌烦。尤其是大多数的回归测试都是需要手工测试来完成的。 因此通过引用自动化测试工具来帮助测试人员来进行一系列繁琐的自动化回归 测试可以有效的提高回归测试效率,而且自动化测试工具本身具有很强的灵活 性,因此通过自动化测试可以达到不同的测试需求。 本文旨在研究和实现一套适合于软件回归测试特点的基于自动化测试工具 q t p 的自动化测试框架,并且将该测试框架实施到具体的项目中,通过实施该 框架,提高了自动化测试的效率,并且节约了回归测试的成本。 1 2 软件测试的发展历程及国内外研究现状及方向 1 2 1 软件测试的发展历程 软件测试的发展并不是随着计算机的产生而产生的,而是与软件行业的发展 息息相关。 2 0 世纪6 0 年代以前的软件规模都比较小,而且复杂对相对较低,这个阶段 属于程序设计阶段,软件开发的过程相对比较随意,因此那时并没有专门的软件 测试理论,测试流程规范以及专门的测试人员,软件开发人员在结束编写代码的 过程后的调试阶段可以被成为测试活动。但是事实上这并不是现在我们经常提起 的软件测试。 2 0 世纪6 0 到7 0 年代,这个阶段的软件开发工作虽然依旧没那么复杂,但 是人们已经提出了关于软件开发流程问题的“软件工程的概念,这个阶段属于 程序系统阶段。在软件工程中,软件生命周期被分为了需求分析,程序设计,编 码,软件测试以及程序维护等几个阶段。但是在这个阶段中,人们对于软件测试 的理解仅仅局限于软件基本功能的验证和找功能b u g ,而且这个时期的测试也只 是出现在软件开发整个流程的后期阶段。虽然这时已经有专门的测试人员,但这 些测试人员都是刚刚入门的新手,因此并没有过多的测试理论。1 9 7 2 年,由b i l l h e t z e l 在n o r t hc a r o l i n a 第一次主持以软件测试理论为主要对象的国际学术会 议,这次学术会议成为软件测试行业的发展历史中一个最重要的指导性会议,它 标志着软件测试技术和相关理论已经渐渐成为了软件行业的一个研究对象【l j 。这 次会议以后,各种关于软件测试方面的理论逐渐在有关软件测试的学术会议上被 提出来。1 9 7 9 年,在g l e n f o r dm y e r s 的新书 t h e a r to f s o r w a r et e s t i n g ) ) 2 1 中, 它除了总结众多经典的软件测试方法之外,更为重要的是它第一次提出了软件测 试的目的是证伪而非证真,这次对测试目的概念的明确性对于测试的发展是一个 2 武汉理工大学硕士学位论文 很重要的里程碑。 2 0 世纪8 0 年代至9 0 年代,计算机的发展进入了p c 时代,软件的品种和规 模的大幅度增长对软件测试有了更加严格的限制要求。为了满足和适应这个要 求,软件公司开始成立专门的测试部门来对软件进行测试。 2 0 世纪9 0 年代中期,在这个阶段中计算机已经开始逐渐进入网络时代,基 于i n t e r n e t 的计算技术开始被应用到各种软件中,这使得软件越来越复杂,这就 使软件测试需要解决更多的技术难题,此时随着软件自动化测试工具的出现,以 及测试支持度,成熟度等新的概念也被相继提出,这表明软件测试已经不在是单 纯的技术环节,它已经演变成为一个需要完整的理论体系的系统工程1 3 】。 1 2 2 国内外研究现状 相比较而言,软件测试技术在国外的起步比国内的起步要早一些,因此也比 国内发展的更加成熟和完善些。在2 0 0 2 年,国外开始对软件自动化测试进行一 系列相关的研究,并且逐渐形成了一套相当成熟的测试理论,并随之产生了一批 较好的自动化测试工具,紧接着在近两年里又提出了自动化测试框架的概念。 在美国,i e e e 、a c m 等相关组织已经制定了大量的关于软件测试的规范标 准,美国国内的很多大学如c a r n e g i em e l l o n 和华盛顿大学;研究机构如m a f i o n a l s o f t w a r et e s t i n g l a b :以及一些公司如s o f t w a r ef e s e a r c h 等都在进行大量的关于 软件测试方面的研究和运用工作| 4 j 。现在被普遍应用的工具有:m e r c u r y i n t e r a c t i v e 公司开发的w m r u r m e r 、q t p 、l o a d r u r m e r ,i b mr a t i o n a l 公司开发 的r o b o t ,以及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 等1 5 j 。 在我国,由于软件测试技术起步相对比较晚,所以中国的软件企业在软件测 试方面和国际水平仍存在着很大的差距,相对而言,专门对软件测试技术进行研 究的机构和企业也很少,目前比较有代表性的有:北京航天航空大学和北京大学 研制出的程序测试工具如s a f e p r o c c + + ,s a f e p r o j a v a , 南京大学对嵌入式系统测 试方面进行了较深入的研究,并开发出了能够对程序进行静态分析的工具,已经 能够自动生成测试用例的自动化测试工具1 6 1 。 1 2 3 软件测试发展的方向 随着软件测试技术的进一步的研究,它现在主要向大型化,自动化和网络化 方面发展,其中以后研究的主要研究热点有: ( 1 ) 针对软件自身的特点来开展的软件测试技术和方法的进一步研究,如针 对嵌入式系统和实时系统等不同属性软件的特点进行的软件测试技术的迸一步 细化的研究。 武汉理工大学硕士学位论文 ( 2 ) 针对新型软件开发技术来开展的软件测试技术的研究,如面向对象技 术,j a 、,a 语言,i n t e m e t 结构等软件测试技术的探索性研究。 ( 3 ) 针对软件自动化测试的研究,即以提高软件测试各个阶段中进行自动化 测试的程度,从而减少人工测试为目的的相关研究等,并且开发研究新的自动化 测试框架, ( 4 ) 针对软件测试工具和测试环境的研究,根据软件测试的相关技术开发出 与之对应的测试工具和测试环境,如:测试设计工具,测试管理工具,静态分析 工具,性能以及负载压力测试工具等,同时并进一步研究能够对各种测试工具有 最大限度的兼容的测试环境的开发等。 1 3 本文主要研究内容 研究适合于软件回归的自动化测试框架,关键是要把测试过程中涉及到的所 有问题规整出一个统一整体来总体考虑,如测试用例的设计,如何实现自动化以 及如何自动生成测试报告,这些都是研究的内容,所以本文设计的自动化测试框 架的目的是要解决以下问题: l 如何真正的实现在无人管理的情况下实现自动化测试的自动执行? 2 测试结果如何自动报告出来? 因此本文研究的主要内容如下: l 设计驱动器,以及配置环境变量使框架能够实现自动化。 2 提出q t p 中管理测试数据的方法。 3 设计并编写中函数库,对象库的具体实现。 4 设计产生测试脚本的流程,并实现具体的测试脚本。 二 5 使q t p 能够自动生成测试报告。 6 将该框架运用到具体的实际项目中。 1 4 论文的内容组织和安排 本文在研究和分析了当前软件自动化测试发展的背景以及现状之后,基于目 前自动化测试存在的问题,我们设计并实现了基于q t p 的自动化测试框架,并 将该框架应用于实际的m i s 项目中。本文一共分为5 个部分,其各部分内容安 排如下: 第一章介绍了软件测试的重要性,进而引入了自动化测试,概述了自动化 测试的背景以及发展方向,进而列举出了论文的组织结构。 第二章首先详细的介绍了自动化测试的概念,同时与传统的手工测试进行 4 武汉理工大学硕士学位论文 了对比,通过对比得出自动化测试的突出优势。其次引入自动化测试工具,通过 列举出当前流行的自动化测试工具的特点,结合本文测试项目的特点,以及q t p 特有的优势,最终选择了q t p 作为本次自动化测试的测试工具。 第三章这一章是本文最核心的部分,先通过介绍自动化测试框架的发展, 进而设计了基于q t p 自动化测试框架的整体结构,然后详细的介绍了框架中各 个模块的详细设计以及具体实现,包括配置文件;执行驱动器;函数库;对象库; 测试脚本的设计和开发,测试数据的管理以及自动生成日志和测试报告的详细设 计。 第四章通过分析和介绍m i s 项目的特点和测试需求,进而将本文设计的自 动化测试框架应用于m i s 项目中,在m i s 与框架结合的过程中,详细的介绍了 框架中各个模块的具体设计,并最终得出了测试结果。 第五章对全文的工作做了总结,并指出本文设计的基于q t p 自动化测试框 架在实施过程中的不足之处,最后确定了下一步对框架改进的研究方向和目标。 5 武汉理工大学硕士学位论文 第二章软件自动化测试理论及自动化测试工具 2 1 自动化测试概述 2 1 1 自动化测试的概念 自动化测试可以简单描述为一种用机器来代替人工测试的一种过程。通过机 器执行测试,从而达到在没有人监管的情况下,可以自动产生测试报告 7 1 。通过 自动化测试,可以缩短软件测试的周期,节省了人力、时间或硬件资源,从而提 高了软件测试的效率。 另外自动化测试也是- n 技术,它通过充分的利用测试用例,可以达到多次 反复的测试来尽可能多的覆盖测试用例,从而使软件测试的更加全面。自动化测 试同样也是一种机制,它不仅可以利用自动化工具进行测试,而且可以管理测试 的自动化,并且自动化测试的方法以及如何组织测试。 一般说来软件的自动化测试,可以分为两种:半自动测试和全自动测试。半 自动测试是指在自动化测试的过程中,需要有测试人员进行数据输入并指定相关 的路径,再按照测试人员指定的要求来执行自动化测试。而全自动测试指的是在 没有完全人工参与的情况下,由程序自动完成整个测试的过程1 8 j 。从上述看来, 全自动测试是比较符合大家想要的,然而要想实现全自动化测试,那么在自动化 实施的起步阶段实际上是很需要耗费人力,物力而且收效甚微的过程。因为起步 阶段往往要花费大量的精力去组织架构,写脚本等。然而一旦自动化测试的整个 架构成熟之后,那么在软件测试中将会达到事半功倍的效果。此时自动化测试的 优越性就很显著了。 2 1 2 自动化测试的原理 自动化测试的实现基础是通过设计相关程序来模拟测试人员手工对软件的 具体操作过程。一般而言,自动化测试实现的方法主要有:直接对测试的代码进 行静态和动态分析、测试过程的捕获和回放、测试脚本技术【w 。 1 代码分析技术 代码分析与高级语言编译系统类似,一般是根据不同的编程语言来构建分析 工具,并在工具中定义类、对象、函数、控件和变量等各个方面的规则。 在分析时,通过对代码进行扫描和解析,进而将不符合编码规则的地方查找 出来,从而给出错误信息和警告信息。还可以根据某些质量模型来评价程序代码 6 武汉理工大学硕士学位论文 的质量,生成程序的调用关系图,评估代码的复杂度等。 2 捕获和回放技术 捕获和回放技术都属于黑盒测试。捕获是指在测试人员的每一个操作过程中 都通过该技术记录下来。其具体记录过程为:当被测的程序用户界面的像素坐标 或者程序显示的对象的位置,以及对象属性发生变化时,这些变化都会被捕捉到。 然后将捕获到的所有的记录转换为一种脚本语言来进行描述。回放时,将之前记 录测试人员操作步骤的脚本语言转换为计算机屏幕上的操作,然后将回放时系统 自动输出的记录与标准输出进行对比。目前在自动化压力测试的过程中大部分都 采用“录制一回放 技术。即先由测试人员手工操作一遍整个测试,此时计算机 会自动记录测试人员的整个操作流程。同时它也会记录整个过程中客户端和服务 器之间所有通讯信息,并形成测试脚本程序。进而在系统的管理下同时生成较多 的虚拟用户,并运行之前生成的脚本,同时监控各个不同系统平台的性能,最终 产生出分析报告和结果。这样,通过就可以通过若干台机器来模拟出成千上万的 用户对该被测系统进行负载以及压力的测试。 3 脚本技术 脚本是一组指令的集合,这些指令是测试工具在执行操作时产生的,也是计 算机程序的另外一种形式【l o 】。脚本的产生方式与两种,一种是在测试人员录制 测试程序时根据手工操作流程自动产生的,这样产生的脚本可以大大减少测试人 员编写脚本代码的工作量。另一种是有自动化测试测试人员直接利用脚本语言进 行编程,用来描述整个测试过程。脚本技术可以分为线性脚本、结构化脚本、共 享脚本、数据驱动脚本和关键字驱动脚本: 线性脚本是最简单的脚本,如同流水账那样描述测试过程,一般由自动录制 得来;结构化脚本是对线性脚本的加工,类似于结构化设计的程序,是脚本优化 的必然途径之一。而数据驱动脚本和关键字驱动脚本可以进一步提高脚本编写的 效率,极大地降低脚本维护的工作量。 2 2 软件自动化测试的优缺点 2 2 1 软件自动化测试的优点 与手工测试相比,自动化测试确实有无可比拟的优越性。因为软件测试都有 一定的重复性,用自动化测试可以代替手工重复性的劳动。自动化测试的优点具 体有: l 由于计算机具有高速的计算能力这一特点,因此相对于手工测试,自动化 测试最明显的优势就是能够在相对较少的时间内完成较多的测试任务,从而能够 7 武汉理工大学硕士学位论文 缩短软件测试周期的时间,提高软件测试的效率 2 对于软件回归测试更加有利。自动化测试最常用的用途就是用于软件回归 测试,因此当程序被修改的很频繁的时候,自动化测试的效果就体现的尤其明显。 况且在回归测试过程中,其测试动作和测试用例都是一开始设计好的,其测试结 果是在预料之内的,因此运行自动化测试,可以在很大程度上提高回归测试的效 率。 3 相对于手工测试,自动化测试还可以执行一些手工测试无法进行或者测试 比较困难的工作。例如,对程序进行压力或者负载测试时,需要模拟大量的用户 同时在线使用该程序,但是测试人员是有限的,因此利用手工测试是比较麻烦的, 但是我们却可以利用自动化测试来模拟大量的用户进行压力和负载测试,进而完 成测试的任务。 4 可以更有效的分配和利用有效的资源。通过将原来需要有大量的测试人员 一遍一遍的进行重复性的劳动转化为不需要太多手工干预的自动化测试,可以有 利于提高测试人员的积极性和工作效率,通过运行自动化测试,可以使测试人员 将主要的测试精力放在测试用例的设计上,同时还可以将不同程度的测试人员进 行不同的分工。 5 提高软件测试的重复利用。因为自动化测试采用的是脚本技术,因此在不 同的测试过程中,只需要将脚本进行过少量的修改甚至是不做修改,就可以使用 相同的测试用例来达到测试的目的。 6 提高程序的信任度。传统手工测试过程中往往由于测试人员的某些疏忽或 者无意识的错误,往往会影响到软件的质量,但是利用自动化测试,不会产生这 样的问题,只要自动化测试的设计质量有了保证之后,那么当软件进行完高效的 自动化测试之后,也会相应的增加该软件的信任度。 2 2 2 软件自动化测试的局限性 尽管与手工测试相比,自动化测试在性能测试、压力测试等方面,自动化测 试有其不可替代的优势,但是自动化测试不能完全替代手工测试,仅仅依靠自动 化测试来完成所有的测试任务那是不可能的,据统计,靠自动化测试发现的b u g 仅仅只占4 0 ,大部分的缺陷还是由手工测试来发现【】。因为自动化测试相比 手工测试,仍然有很多的局限性: 1 不能完全取代手工测试,并不是所有的系统都可以进行自动化测试,如果 程序本身很小或者程序不稳定,经常需要修改的话,那么这时就不适合用自动化 测试。 2 自动化测试并不像人测试时那样有想象力,它只不过是一系列的代码,所 8 武汉理工大学硕士学位论文 以它测试的时候只能按照指令进行操作,而无法判断如何能改进测试,当有异常 发生的时候,它也不会处理异常情况。 3 刚开始进行自动化测试的时候,其测试工作效率并不高,因为在前期要建 立整个自动化测试也需要花费相当大的人力。只有当自动化测试系统稳定了,以 及自动化测试人员对自动化测试工具很熟悉之后,随着测试的执行次数的增加这 样才进一步的提高了工作效率。 4 自动化测试的代价也比较高,包括自动化设计的成本,开发成本,执行成 本,以及当程序发生改变时,这就要相应的对测试脚本进行修改和维护。其维护 成本也是很大的。 2 3 软件自动化测试工具介绍和q t p 软件自动化测试要借助于自动化测试工具才可以实施。随着人们对测试工作 的重视以及测试工作的不断深入,越来越多的公司开始使用自动化测试工具。并 不是所有的自动化测试工具都适合测试所有的软件,有时自动化测试工具选择的 不好的话,就很容易造成即浪费人力又增加成本的后果。因此要根据具体被测程 序的属性来选择自动化测试工具。只有这样才能做出正确的选择,目前随着自动 化测试技术的发展,涌现出了很多自动化测试工具,不同的测试工具适合不同类 型的软件测试,下面我们详细介绍下自动化测试的分类及选择。 2 3 1 自动化测试工具的分类 通常情况下,我们根据测试方法的不同,可以将自动化测试工具分为白盒测 试工具、黑盒测试工具以及测试管理工具f 1 2 】。这些工具主要是m e r c u r yi n t e r a c t i v e ( m i ) 、s e g u e 、i b m r a t i o n a l 、c o m p u w 缸e 和e m p i r i x 等公司的产品,而m i 公 司的产品占了主流。表2 1 为各测试工具的简介1 他l 】 9 武汉理工大学硕士学位论文 表2 1 测试工具的介绍 工具类型描述举例 主要用于单元测试阶段,利用白盒测试方 a q t i m e 、j t e s t 、 白盒测试工具 法,针对代码进行测试,测试中发现的缺 b o u n d s c h e c k e r 等等。 陷可以定位到代码行和对象。 利用黑盒测试方法,测试原理是通过对脚 w i n r u n n e r q a l o a d 、 黑盒测试工具 本的录制( r e c o r d ) 回放( p l a y b a c k ) , l o a d r u n n e r q t p 等等 模拟用户的操作,然后将被测系统的输出 记录下来同预先给定的标准结果比较。 一般是对代码进行语法扫描,找出不符合 l o g i s c o p ,p r o g r a m m i n g 编码规范的地方,根据某种质量模型评价 r e s e a r c h , q u a l i t y 静态测试工具 代码的质量,生成系统的调用关系图等。 a n a l y s i s 等等。 它是直接对代码进行分析,不需要运行代 码,也不需要对代码编译链接、生成可执 行文件。 直接执行被测程序以提供测试活动。它需 d e v p a r t n e r , u r e c o v e r a g e 动态测试工具 要实际运行被测系统,并设置断点,向代 等等。 码生成的可执行文件中插入一些监测代 码,掌握断点这一时刻程序运行数据。 主要提供测试管理的功能,对测试计划、 t d ( t e s t d i r e c t o r ) , 测试管理工具 测试用例、软件缺陷、资源监控等进行管 q c ( f i p - m e r c u r y q u a l i t yc e n t e r ) 等等。 理。 l o 武汉理工大学硕士学位论文 2 3 2 软件自动化测试工具的选择 从上面对测试工具的介绍可以看出,目前市场上的自动化测试工具有很多, 但是并不是每一个工具在所有的环境下都是最合适的,都是兼容的。任何工具都 有它的优点以及局限性。到底选择哪一种工具最好,这要取决于企业系统工程的 环境以及企业特定的需求和标准,所以为了满足企业各自的需求以及系统工程的 环境,测试人员在选择自动化测试工具的适合要从以下几个方面考虑: ( 1 ) 确定企业使用自动化测试工具的生命周期,如果说是打算在整个企业 内实现自动化测试,那么就需要综合考虑开发人员的意见。以确保选择使用的工 具是否与开发人员所用的操作系统,编程语言以及企业的技术是否得到最大限度 的兼容。 ( 2 ) 确定被测试的应用程序的数据管理方式,以及企业的项目中普遍应用 的中间件,数据库,操作系统以及第三方插件。 ( 3 ) 了解程序的测试类型。选择测试工具时,同时也要选择被测程序的类 型,如回归测试,压力测试或者是容量测试。然后根据测试类型来选择对应的自 动化测试工具。 ( 4 ) 了解时间进度选择自动化测试工具的时候要考虑引用这个工具后是否 满足测试进度,在有限的时间内,软件测试人员是否有足够的时间去熟悉和学习 这种测试工具。 ( 5 ) 考虑成本问题。因为有些测试工具是开源的,但有些也是需要一定的 资金购买。对比下使用测试工具带来的收益以及花费的代价。因此选择工具时也 要考虑到成本这一问题。 基于以上在选择测试工具的考虑方面,再结合本文设计测试框架以及我所在 公司测试软件的特点,我们选择了q r p 作为自动化测试的工具,下面我们通过 对q t p 进行详细的介绍来说明本文选择它作为测试工具的理由。 q t p 是q u i e k t c s tp r o f e s s i o n a l 的简称。它是一种新的解决自动化测试的测试 方案。现在它的技术已经发展的很成熟。目前已经发展到q t p1 1 o 版本瞄j 。新 版本的功能更强大,更容易满足各个公司不同的技术性以及非技术性德需求。本 文之所以选择q t p 作为自动化测试工具原因有以下几个方面。 ( 1 ) q u i c k t e s tp r o f e s s i o n a l 很容易进行操作,即便使是初级测试人员也可以 在比较短的时间里操作它最基本的功能。可以通过q t p 提供的录制功能在测试 的时候捕获测试人员的操作动作。它捕获的测试人员的操作将以脚本的形式自动 记录下来团j 。同时可以回放之前捕获的功能,因为q t p 拥有强大的对象库分析 能力,在捕获测试人员的操作的时候,它会形成一个临时的对象库。当回放时, 武汉理工大学硕士学位论文 它会自动根据刚才记录的对象来进行识别并进行回放。它同时也提供了关键字视 图和专家视图两种模式,对于没有编程经验的测试人员来说可以通过观看关键字 视图来查看测试的每一个步骤。专家视图是提供给有着丰富编程经验的自动化测 试工程师使用的,在专家视图里,测试工程师可以通过v b s 来编写脚本语言, 使测试脚本更加结构化,流程化。 ( 2 ) q t p 还提供了自动添加检查点来验证被测试程序的属性和检查点,例 如确认输入,输出量的正确性或者检查链接是否有效【2 4 】。显示在关键字视图的 每一个步骤中,其对应的活动屏幕也会同时显示,这样可以帮助测试人员更好的 了解该步骤中被测程序具体的状态。而且q t p 提供的添加检查点功能可以通过 好几种方式来实现,如果想比较直观的了解程序的界面状态的话,就可以通过点 击该活动对应的屏幕来添加检查点。这样下来,检查点的目的很明了,对于即便 不是该项目的测试人员也可以通过这种方式来查看别人添加的检查点等。 ( 3 ) 测试人员在测试的时候往往为了验证某个功能的正确性,会设定很多 的数据从不同的方面来验证,如边界值,异常值等。如果是人工测试的话,这样 重复的动作就要做很多,而q t p 就提供了一种简便的功能:数据驱动瞄j 。通过 编写相应的脚本,将所有可能的测试数据都写在一张表上,如e x c e l 文件,通过 编写的驱动脚本,可以让q t p 循环执行所有的测试数据,这样就可以省去大量 的工作量。同时q t p 还支持连接数据库o r a c l e 或者s e v e rs q l 等。这些都在很 大程度上为测试提供了许多的便利。 ( 4 ) 当测试人员在q t p 运行了测试脚本之后,q t p 会自动生成对应的测试 报告。报告中显示测试运行的各种信息。这些信息可以明确的指出应用程序发生 错误的位置,以及相应的截屏【凋。如果设置了检查点,它在结果中还会显示是 否通过检查点,若没有通过检查点,则给出详尽的解释。可以使测试人员很快的 定位程序出现b u g 的位置和原因。 结合q t p 上述优越性,以及结合我所在公司开发程序的特点,我选择了 q t p 作为测试工具,并以q t p 为基础做了二次开发,设计出了基于q t p 自动化 测试的框架,并将该自动化测试框架应用于实际的测试项目中。 1 2 武汉理工大学硕士学位论文 第三章基于q t p 的自动化测试框架的设计 随着自动化测试技术的不断更新与成熟,以及应用用户需求的不断扩大,自 动化测试已经越来越受到各个大公司的注意,如微软,华为,i b m 等,由于q t p 具有强大的对象库,可以支持多种平台和不同的插件,且脚本具有良好的扩展性 等特点,所以基于q t p 的自动化测试技术已经成为主流 2 7 1o 但是如果仅仅靠q t p 自身提供的简单的录制和回放功能并不能完全适应企业测试的要求,而且简单的 录制和回放可扩展性很差,测试所用到的数据也很局限,远远不能覆盖所有的测 试用例,且生成脚本的可维护性和很差困j 。故在自动化测试中发现b u g 的几率 也不全面。所以,随着q t p 版本的不断更新,以及测试人员对q t p 的不断熟悉 和研究,自动化测试工程师们开始根据自动化测试工具自身的特点来研究,于是 就有了一种新的自动化测试产品:自动化测试框架,它是在自动化测试工具上的 二次开发,一旦自动化测试框架搭建好,测试人员以后测试的重点就是测试用例 的设计上,而不是对测试工具的开发测试上【冽。这样通过设计自动化测试框架, 可以很有效的减少设计和维护的成本,大大提高了自动化测试的效率。 3 1 常用自动化测试框架的分析 3 1 1 测试脚本模块化框架 测试脚本模块化框架需要创建能够代表测试下应用程序的模块,零件和函数 的小的,独立的脚本,然后用一种分级的方式将这些小脚本组成更大的测试,实 现一个特定的测试用例 3 0 1 。 为了提高自动化测试套件的可能性,测试脚本模块化框架应用了抽象和封装 的原则。使用抽象,可以减少和排除一些细节,不用立即关联到编码的功能上。 封装提供了将相关联的任务和操作继承在一起的技术。它也通过提供一个稳定的 接口来保护测试脚本免受程序变更的影响,此接口能够隐藏脚本所执行的实际操 作。 此框架是最容易掌握和使用的,同时它也是最易于和其他框架联合使用的。 模块化的主要优势是重用和减少重用伴随而来的维护成本。对比录制和回放,模 块化产生更多可读的脚本,易于阅读和调试。 为了演示这种框架的应用,我以自动化w i n d o w s 计算器程序中的测试其基 本功能( 加,减,乘和除) 的一个简单测试用例为例简单介绍下该框架的应用。 武汉理工大学硕士学位论文 脚本层次结构的最下层是独立的加减乘除的脚本。下面的第一个脚本是加法,第 二个是减法。 r e s ts c a r p tm o d u l a r i t yf r a m e w o r k s c r i p tf o ra d d i t i o n s u b m a i n w i n d o ws e t c o n t e x t , c a p t i o n = c a l c u l a t o r ”, 5 p u s h b u t t o nc l i c k , ”o b j e c t l n d e x = 10 ” + p u s h b u t t o nc l i c k , o b j e c t l n d e x = 2 0 ” 6 p u s h b u t t o nc l i c k , o b j e c t i n d e x = 1 4 = p u s h b u t t o nc l i c k , ”o b j e c t l n d e x = 2 1 ” 1 1 r e s u l t = l a b e lu p ( c o m p a r e p r o p e r t i e s ,”t e x t = l1 ”,”u p = o b j e c tp r o p e r t i e s ”) e n ds u b t e s ts c a r p tm o d u l a r i t yf r a m e w o r k s c r i p tf o rs u b t r a c t i o n s u bm a i n w i n d o ws e t c o n t e x t , c a p t i o n = c a l c u l a t o r ”,” 2 0 p u s h b u t t o nc l i c k , ”o b j e c t l n d e x = ll n p u s h b u t t o nc l i c k ”o b j e c t l n d e x = 8 ” - p u s h b u t t o nc l i c k , o b j e c t l n d e x 2 1 9 ” l o p u s h b u r o nc l i c k , ”o b j e c t l n d e x = 7 p u s h b u r o nc l i c k , ”o b j e e t l n d e x 。8 - = p u s h b u r o nc l i c k , ”o b j e c t l n d e x = 21 1 0 r e s u l t = l a b e lu p ( c o m p a r e p r o p e r t i e s ,”t e x t = 10 ”,”u p - - o b j e c tp r o p e r t i e s ) e n ds u b 然后在层次结构中下一级的两个脚本用来代表视图菜单中的标准视图和科 学视图。就像下面的关于标准视图的脚本中表现的一样,这些脚本调用了我们在 之前创建的脚本。 t e s ts c a r p tm o d u l a r i t yf r a m e w o r k s c d p tf o rs t a n d a r dv i e ws u bm a i n t e s ta d df u n c t i o n a l i t y c a l l s c r i p t ”t e s ts c r i p tm o df r a m e w o r k - a d d ” t e s ts u b t r a c tf u n c t i o n a l i t y c a l l s c r i p t ”t e s ts c r i p tm o d f r a m e w o r k s u b t r a c t ” 1 4 武汉理工大学硕士学位论文 t e s td i v i d ef u n c t i o n a l i t y c a l l s c r i p t ”t e s ts c r i p tm o df r a m e w o r k d i v i d e ” t e s tm u l t i p l yf u n c t i o n a l i t y c a l l s c r i p t ”t e s ts c r i p tm o df r a m e w o r k - m u l t i p l y ” e n ds u b 最后,在层次结构中最项层的脚本应该是用来测试应用程序不同视图的测试 用例。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度施工员通关题库附答案详解【B卷】
- 2025年中考数学总复习《锐角三角函数》常考点试卷【有一套】附答案详解
- 2024-2025学年度广播电视编辑记者练习题含答案详解AB卷
- 2024年自考专业(工商企业管理)通关题库及参考答案详解(突破训练)
- 2024-2025学年度烟草职业技能鉴定常考点试卷及参考答案详解AB卷
- 智慧树知道网课《体育市场营销》课后章节测试答案
- 教师招聘之《中学教师招聘》综合提升测试卷含答案详解【培优b卷】
- 2025年管理类综合能力试题及答案解析
- 2025注册电气工程师通关题库及参考答案详解(培优)
- 公务员(省考)试题预测试卷带答案详解(黄金题型)
- 土地整治投标方案(技术标)
- 广东省省级政务信息化服务预算编制标准(运维服务分册)
- 2022版义务教育语文课程标准小学语文学习任务群解读的七个维度
- 妊娠合并先心病指南解读专家讲座
- 雅思考试简介与评分标准
- GB/T 9460-2008铜及铜合金焊丝
- 第7课+李さんは+每日+コーヒーを+飲みます+知识点课件【知识精讲+拓展提升+迁移训练】 高中日语新版标准日本语初级上册
- FZ/T 52023-2012高强高模聚乙烯醇超短纤维
- 智慧教育云平台建设解决方案
- 统编版《始终坚持以人民为中心》ppt精品课件1(共19张PPT)
- 2022年国家公务员考试申论真题及答案(地市级)
评论
0/150
提交评论