(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf_第1页
(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf_第2页
(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf_第3页
(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf_第4页
(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(计算机应用技术专业论文)关键字驱动的自动化软件测试的研究.pdf.pdf 免费下载

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

文档简介

硕十论文 关键字驱动的自动化软件测试的研究 摘要 随着计算机应用的日益普及和深化,软件的安全性和可靠性也越来越受到人们地重 视,软件测试则是保证软件质量的重要手段,所以从某种程度上来说,软件测试是软件 推向市场前的第一道门槛。同时为了改变传统的完全依靠手工测试的方法,我们应该尽 可能的在测试的合适地方引入自动化测试的技术,这样才能提高软件测试的效率和质 量。实现自动化测试虽然需要较大的开销,但是只要自动化测试制度按照一定的规程建 立了起来,并在使用过程中科学合理的进行了维护,将会对后期的使用带来很大的收益。 本文在介绍了自动化测试技术发展历程及其各自优缺点的基础上,重点对关键字驱 动的自动化测试技术进行了分析和研究,并对相关方面进行了改进。在改进后的关键字 驱动测试技术中,关键字不再仅仅包括名字等一些构成关键字个体所必须的信息,还增 加了一些用来存储关键字执行结果和反馈信息的结构。同时还对关键字进行了分离,把 关键字库中的关键字分离成为功能关键字和导航关键字的集合体,从而通过联合关键字 的功能可以减少测试系统中关键字的设计数量。 为了提高关键字驱动测试系统的执行效率,本文在对关键字库的结构进行研究的基 础上,采用了梯形的功能实现过程代替了原来的金字塔型的功能实现过程,实现了关键 字库功能的分解,从而减少了从关键字映射到功能支持脚本的中间步骤。并在对关键字 库功能分解的基础上还介绍了如何对关键字库进行动态的维护。 通过对关键字功能实现过程的研究,本文在对映射过程进行分析的基础上,把原来 的完全二维映射关系改进成为树形的分层次映射关系,并介绍了如何通过逆向回溯过程 将关键字的执行结果进行反馈。 关键字:关键字驱动,自动化,软件测试,功能支持脚本 ab s t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e rt e c h n o l o g y , t h ea p p l i c a t i o no fm o d e m s o f t w a r e b e c o m e sb r o a d e ra n db r o a d e r s oav a r i e t yo fs o f t w a r es e c u r i t ya n d r e l i a b i l i t yr e q u i r e m e n t s h a v eb e c o m em o r es o p h i s t i c a t e d ,f o r t u n a t e l y , s o f t w a r et e s t i n gi st h ee f f i c i e n tw a yt oe n s u r e t h eq u a l i t yo fd i f f e r e n ts o f t w a r e t os o m ee x t e n t ,s o f t w a r et e s t i n gi st h ef i r s tc l i e n tb e f o r et h e s o f t w a r eo r i e n t i n gt h em a r k e t m e a n w h i l e ,i no r d e rt o i m p r o v et h et e s t i n ge f f i c i e n c va n d q u a l i t y , w em u s tc o m p l e t e l yt r a n s f o r mt h et r a d i t i o n a lm e t h o d sw h i c hr e l y o nm a n u a l t e s t i n g ,b u tt oi n t r o d u c ea u t o m a t e dt e s t i n gt e c h n o l o g yi nt h er i g h tp o i n ta sf a ra sp o s s i b l ea t t h ep r o c e s so ft e s t i n g t h ei n v e s t m e n to fa u t o m a t e d t e s t i n gw i l la f f e c tt h ec o s t ,q u a l i t ya n d c y c l eo b v i o u s l yo ft h ee n t i r ed e v e l o p m e n t a tt h eb e g i n n i n go fi n v e s t i n ga u t o m a t e dt e s t i n g t e c h n o l o g y , i tm a yc o n s u m ec o n s i d e r a b l ee n e r g y , b u tm a i n t a i n i n gt h en o r m a lo p e r a t i o no fi t w i l lb ee a s yw h i l et h er u l ei se s t a b l i s h e d i no t h e rw o r d s ,t h i ss t a t e g yi sa p r e i n v e s t m e n tb u t 1 a t t e r - b e n e f i t o nt h eb a s i so fd e s c r i b i n gt h ed e v e l o p m e n to fa u t o m a t e d t e s t i n gt e c h n o l o g y , w ed e p i c t t h e i rr e s p e c t i v ea d v a n t a g e sa n dd i s a d v a n t a g e s ,w h a t s m o r e ,w eh i g h l i g h tt h ef o c u so nm e a n a l y s i sa n dr e s e a r c ho ft h ek e y w o r d - d r i v e na u t o m a t e dt e s t i n gt e c h n o l o g y i nt h ei m p r o v e d k e y w o r d d r i v e nt e s ts y s t e m ,t h es t r u c t u r eo fk e y w o r d sn o to n l yi n c l u d e ss o m en e c e s s a r y e l e m e n t sa l s oa d d ss p e c i f i ce l e m e n t sw h i c hu s e dt os t o r et h ef e e d b a c ko f i m p l e m e n t a t i o n i n a d d i t i o n ,t h es e p a r a t i o no ft h ek e y w o r d sw h i c ha r es t o r e di nt h ed a t a b a s em a k e st h en u m b e r o fk e y w o r d sr e d u c e dh e a v y t h r o u g ht h ef u n c t i o no fn a v i g a t i o n k e y w o r d s i no r d e rt oi m p r o v et h ee f f i c i e n c yo fk e y w o r d - d r i v e nt e s ts y s t e m ,t h i sa r t i c l ea d o p t st h e p r o c c e s so ft r a p e z i f o r mi n s t e a do fp y r a m i d a l ,r e a l i z i n gt h es e p a r a t i o no ft h ef u n c t i o no ft h e k e y w o r d - d a t a b a s e ,t h e r e b yr e d u c i n gt h em a p p i n gr e l a t i o n sb e t w e e nt h ek e y w o r da n d s u p p o r t e ds c r i p t ,w h a t sm o r et h ed e s c r t p t i o n so fs t r a t i c u l a t e m a p p i n gr e l a t i o n sa n dt h e p r o c c e s so ff e e d b a c ka r eb a s e do nt h i s w h a t s m o r e ,o nt h eb a s i so fs e p a r a t i o no f k e y w o r d d a t a b a s e ,d e s c r i b i n gt h ew a y t om a i n t a i nk e y w o r d d r i v e n t h r o u g ht h er e s e a r c ho ft h ep r o c e s so fm a p p i n g ,t h i sa r t i c l ei m p r o v et h eo r i g i n a l t w o d i m e n s i o n a lm a p p i n ga sh i e r a r c h i c a lm a p p i n g ,a n dd e s c r i b e sh o w t of e e d b a c kt h e r e s u l t so fi m p l e m e n t a t i o n k e yw o r d s :k e y w o r d - d r i v e n ,a u t o m a t i o n ,s o f t w a r et e s t i n g ,f u n c t i o n a ls u p p o r ts c r i p t i i 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在 本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发 表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学 历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均 已在论文中作了明确的说明。 研究生签名:兰堡华 口7 年6 只帽 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅 或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送 交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对 于保密论文,按保密的有关规定和程序处理。 研究生签名:兰碰 。7 年钿吖日 硕一l = 论文 关键宁驱动的自动化软件测试的研究 1 绪论 1 1 研究背景 随着计算机应用的日益普及和深化,现代软件的规模变的越来越庞大,所以设计人 员希望在将软件投入运行之前,尽可能地减少软件的潜在错误,而软件测试则是保证软 件系统正确性的一个重要手段,从某种程度上来说,测试人员是软件面向市场前的第一 个客户【l j 。据统计,测试在软件丌发总成本中往往要占到3 5 成【2 】之多。在日常的开发 和测试过程中,通过经验地积累我们发现,测试过程是最有可能实现自动化的过程【3 】, 而实现测试的自动化无论对提高软件的质量还是对减少开发成本都有很大的帮助,所以 研究如何实现软件测试的自动化是很有必要的。软件测试的目标是以尽可能少的测试用 例、时间和人力尽可能多的找出潜伏在软件中的错误和缺陷【4 】,从整体上确保系统的质 量。软件自动化测试技术的出现,虽然可以大大的减轻测试人员的压力,显著的提高测 试的效率,但是这也是有代价的,尤其体现在如何管理自动化测试等方面,这是实现自 动化必须要解决的一个难趔卯。 在平常的开发工作中,我们对自动化测试充满了期待和敬畏,然而自动化测试并不 是传说中万能的“银弹”【6 】,虽然自动化测试可以实现一些手i n 试无法作到的测试【7 】 但是它无法解决测试过程中的所有问题,它还需要跟手i n 试相互补充、相互配合才能 发挥更大的效用,所以自动化测试不可能完全代替手工测试【8 】。 在运用自动化测试的过程中,我们往往没有根据具体的情况客观地分析项目,就盲 目的引入了自动化测试,这样一来自动化测试不单发挥不了它应有的优势,还会带来一 些意想不到的问题。其实我们不能盲目的一味追求新技术或新工具的使用,千万不要强 行在测试的每个部分都采用自动化测试的技术和工具,寻找能够带来最大回报的部分采 用自动化测试是最好的方法和选择【9 】。 自动化测试技术经历了多个发展阶段,从最开始的录制回放技术到后来的数据驱动 测试技术,再到最新出现的关键字驱动的自动化测试技术【l0 1 ,它们各自有各自的适用之 处。总之,后发展的技术是对前面技术的继承和发展,它们是向后兼容的。现在最新兴 起的测试技术关键字驱动的测试技术以它独到的性能得到了越来越多业内人士的 青睐,并在一些领域得到了某些程度上的应用。关键字驱动测试技术是以预先设计好的 关键字作为依据来驱动测试事件的,并且使用关键字编写的测试脚本简单易读【1 1 】f 1 2 】, 可维护性强。 在关键字驱动的测试系统中,可以把测试过程当成一个开发过程来看待,这样就把 软件的测试提升到了和开发等同的高度。正如一句话所说的那样“测试的功底,可使你 成为更成熟的丌发工程师;开发的功底,可使你成为更精准的测试狙击手 【1 3 】。所以采 l i 绪论 硕士论文 用关键字驱动的测试技术不仅能提高测试的效率,还对软件的丌发过程有一定的指导意 义。 1 2 国内外研究现状 软件测试作为保证软件质量的一个重要手段,在国内外己受到了广泛的重视。但是 软件测试技术的发展还远落后于软件开发技术的发展,人们甚至以为测试是一个可有可 无的过程。图灵就最早给程序测试下过定义【l4 1 ,然而直到7 0 - 8 0 年代测试的意义才逐 渐被人们所认识,软件测试的研究才开始受到重视。在美国北卡罗来纳大学召开的软件 测试正式技术会议【1 5 】,是软件测试技术发展史上的一个重要里程碑,g o o de n o u g h 和 g e r h a r t 在把软件测试提高到理论高度的工作中做出来较大的贡献。 很多人曾试图从数学和理论的角度测试程序的正确性,并在此基础上演变出了很多 种程序测试方法,其中比较有代表性的概率测试方法 1 6 1 。在美国召开的第2 1 届国际软 件工程会议,对如何改善软件的开发过程,提高软件的质量有重大的指导意义1 1 7 j 。 软件测试是一个相当繁琐的工作,正是由于软件测试的重要价值和软件测试工作的 繁重性,如何提高软件测试的性能就突显的尤为重要了,其中实现测试过程的自动化是 提高测试效率的根本途径。 9 0 年代以来,随着面向对象开发技术的广泛应用,人们结合面向对象软件开发的 特点,通过抽象的概念把软件测试的过程提升到了与软件开发等同的高度。目前国内外 对自动化测试的研究主要集中在几个比较大的方面,包括线性脚本、结构化脚本、数据 驱动测试和关键字驱动测试等,而对基于关键字驱动的自动化测试的研究尤为热门。另 一方面,软件测试技术并不是一成不变的,随着新的软件开发技术的不断普及和发展, 软件测试技术遇到了i j 所未有的新挑战。 中国软件测试产业的发展本来就晚于欧美、日本等国家,再者我国软件测试的从业 人员普遍存在一种急功近利的思想,为此我国每两年召开一次全国性的软件工程会议, 设有专门的软件测试专题部分,以推进我国软件测试工作的研究。经过一段时间的发展, 我国在软件测试行业已经有了长足的发展,比如北京大学软件工程实验室在黑盒测试技 术的研究,北京航空航天大学在c 语言和a d a 语言测试技术都进行了许多的研究工作。 1 3 论文研究工作 本文主要研究了关键字驱动的软件测试技术以及在测试过程中的应用,内容如下: 1 、研究了关键字的结构对整个测试系统效率的影响,并在前人的基础上进行了改 进。 2 、在对测试系统关键字数量研究的基础上,介绍了如何有效的减少关键字设计数 量的关键字分离技术。 硕上论文 关键字驱动的自动化软件测试的研究 3 、为了使关键字库中关键字的功能实现过程达到最优化,在对关键字库结构研究 的基础上,提出了功能分解的思想;为了维护关键字库的有效运行,介绍了如何维护关 键字库的各种方法。 4 、为了改进关键字执行结果的反馈过程,提出了反馈信息的逆向回溯过程,代替 了原来查询日志文件的过程。 5 、对提出的理论方法进行了简单验证。 1 4 论文的组织结构 本文共分六章,主要包括如下几部分内容: 第一章介绍了课题的研究背景以及国内外研究现状,阐述了本文的主要研究工作, 明确了研究方向。 第二章介绍了软件测试的相关理论知识,首先介绍了软件测试在整个软件开发过程 中的作用,然后介绍了软件测试的基础和相关背景知识,紧接着对自动化测试的各个发 展阶段进行了介绍,最后对几种常用的自动化测试技术进行了简单地分析,并对它们的 优缺点进行了比较。 第三章是本文的理论基础,在分析了现今关键字驱动测试技术不足的基础上,集中 地介绍了改进后的关键字测试技术,主要包括三大部分:首先对关键字的设计结构进行 了改进,在原来结构的基础上增加了存储反馈信息的结构,并为了节省测试系统中关键 字的设计数量,把关键字库中的关键字进行了分离和共享;然后对关键字库的设计结构 进行了改进,实现了关键字库功能的分解,减少了从关键字到功能支持脚本之间的映射 关系,并介绍了怎样维护关键字库的最优性;最后通过关键字映射树重点介绍了怎样实 现从关键字到功能支持脚本的映射,以及如何通过逆向回溯过程将关键字的执行结果进 行反馈。 第四章在第三章介绍的理论知识的基础上,通过一个简单的邮件发送系统的测试过 程对关键字测试技术的实现框架进行了详细地介绍。 第五章在大量收集数据的基础上,对本文中所提到的几个主要理论改进点的性能进 行了数量化地说明和比较,直观地展现了改进后的优势所在。 第六章对本文所做的研究工作进行了总结和展望,并分析了本文研究工作中还有待 进一步完善的地方。 2 软件测试概述 硕上论文 2 软件测试概述 和持续继承一样,自动化测试也是敏捷开发的一个实剐1 8 】。软件测试自动化是软件 测试领域无法逾越的发展阶段和最终的发展目标。对于什么是软件测试,在业界有两种 截然不同的观点,第一种观点是“软件测试是为了验证软件是工作的”【l9 1 ,这种理论是 指导微软同常测试的基础,它在微软的成功应用,从某种程度上也证明了它的正确性。 第二种观点是“证明软件是不工作的 【2 0 】,微软在它的测试过程中也阶段性的借鉴和采 用了这种观点。 2 1 软件测试的作用 随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或 缺陷的机会也越来越多。同时,市场对软件质量的重要性和可靠性的认识逐渐增强。一 个软件在市场上是否有竞争力从某种程度上就是取决于它的安全性和可靠性。而软件测 试则是保证软件系统正确性的一个重要手段,也是计算机软件工程方法和技术的一个主 要组成部分。所以,软件测试在软件项目实施过程中的重要性日益突出。软件测试不仅 对测试人员的智力是一个严峻地考验,对测试人员的创造性也是一个较大的挑战,测试 一个大型软件需要的技术可能要超过设计这个程序本身的技术1 2 。但是与软件开发相 比,软件测试的地位和作用还没有真正受到重视,相当多的人( 甚至是软件项目组的技 术人员) 还存在对软件测试的认识误区,这进一步影响了软件测试活动地开展和软件测 试质量地提高。 2 1 1测试是软件开发的依赖和指引 开发人员依赖测试来保证开发工作的质量和进度,使开发整体的协调向前推进,自 动化测试的核心就是代码的测试。在软件的丌发过程中,尤其是复杂和庞大项目的开发 过程,开发人员必须能够按照某个有条不紊的步骤和次序来进行软件的开发,使开发的 规划过程既是一个“预定型”又是一个“适配型”的过程,只有这样才能在开发过程中, 根据实际情况,在不影响总体规划的基础上动态地调整开发过程,使整个开发过程是一 个适应变化和反馈的过程。 人们一般认为软件项目要依次经过以下几个阶段:需求分析,概要设计,详细设计, 软件编码,软件测试,软件发布1 2 2 1 。据此,认为软件测试只是软件编码完成后的一个补 充过程。项目经理在制定项目计划安排的时候,测试人员往往被安排利用自己的个人时 间或者项目后期才介a n 试【2 3 】,这使得测试无法得到充分的时间保证。其实软件测试人 员是软件面向市场前的第一个用户,测试是否及时和完整是软件能否成功推向市场的第 4 硕上论文关键。,驱动的自动化软件测试的研究 一道门槛。软件开发是一个充满了回归测试和不断反馈的过程,离开了回归测试和开发 情况的及时反馈,整个开发过程将陷入毫无目标的可怕境地,我们可以形象的比如缺少 测试指导的开发过程是“在没有灯塔指引的大海上航行”,最终的结果只能是整个开发 过程的失败。 x p ( 极限编程) 中有一条基本的原则“在编写完相应的测试,并看到测试失败之 前,你不应该编写任何其它代码,【2 4 1 。在编写代码的同时,开发者也应该编写相应的测 试,而不应该把测试的所有任务都推给测试人员,开发人员和测试人员要紧密的合作、 相互交流和及时反馈,才能更好的保证软件的质量。开发人员在提交软件代码的同时, 也要归还这些代码的测试代码。这很符合x p “测试第一”1 2 5 1 的编程风格。 目前软件开发越来越向“测试驱动 的方向发展,也可以形象的表示为“测试前置”。 有句很著名的话“c l e a nc o d et h a tw o r k s ”,这句话的含义是先把事情作对,再把事情做 好【26 。测试驱动丌发也是极限编程中倡导的程序开发方法,主要是先写程序,然后再编 写测试代码使其通过测试。它尤其强调功能和质量这两个方面的东西,也就是晚首先要 借助测试的特有功能,保证所编写的代码能够实现预期的功能,再在此的基础上通过改 进所编写的代码的结构使代码的整体质量达到最优化1 2 7 1 。 总之,以测试来驱动软件的开发,作为软件进一步丌发的依赖,在现在的开发实践 中已经得到了很好的应用和实现,微软就是采用这种软件测试技术来管理他们的日常测 试和开发过程的。这种思想能够在业界领袖微软的开发过程中得到成功的应用和实现, 充分地说明了它的优越性和巨大的发展潜力。 2 1 2 测试是开发产品质量的防护网 在测试还远没有开始的时候,开发过程中的问题其实早就已经潜伏在了软件中,所 以测试过程不过是发现那些潜伏已久的问题而己,测试最主要的作用就是起到过滤器的 作用,通过它的过滤作用查找出潜藏在软件中的错误或缺陷,保证不让劣质的软件产品 流到市场上,给客户的使用带来不便。 测试过程要涉及到一个“度 的问题,即测试粒度和测试覆盖率的关系问题。如果 仅仅注重了测试的粒度和精确度,相对于过滤器来说就是太过于密集了,虽然产品的质 量得到了很大的保证,但是无形中却增加了额外的开销。消耗成本如果过大,优质产品 也可能在市场上失去竞争力,失去了市场的产品也就成为了失败的产品。相反,如果测 试粒度过大,测试的覆盖率达不到产品的要求,产品的质量又无法得到充分的保障,连 质量都无法保证的产品是不会有客户市场的。所以防护网既不能太密也不能太粗,适当 就好,我们不能为了避免一个极端地发生,而走向了另一个极端。如何建立一个对产品 质量起作用的防护网是一个艰巨的工作,需要反复修复和不断的完善,要根据具体情况 来对待。对于安全性和精确性要求很高的产品,才可以考虑在保证成本的前提下适当的 5 2 软件测试概述 硕 :论文 把过滤器做的密一点。 除了自动化测试工具本身起到的作用外,测试人员在测试过程中起到的重要作用也 越来越不容忽视。测试人员在同常的工作过程中通过直观的感觉和经验的不断积累,可 以从特殊的角度主动扑捉特有的信息。这张无形的防护网是无法通过培训或其它方式获 得的,它只能依靠测试人员自己在日常的测试工作中不断地积累和总结来形成。 测试还有一个作用就是对软件质量进行反馈。通过记录、分析并反馈已有产品存在 的缺陷情况,总结出适用于不同测试的测试用例,在测试期间可以用这些测试用例来衡 量软件的质量,这从某种程度上来说也就是所谓的“测试代码的复用”。测试代码的复 用是个很重要的问题,要实现测试代码的复用就要搭建一个好的测试框架。在测试中应 用测试函数库( 对应着关键字驱动测试系统中的功能脚本库) 是自动化测试实现代码复 用的一个通用策略【2 8 】。必须要在一开始就保证测试库设计的良好性,否则丌始时不合理 的设计将会影响到后面的整个开发和测试过程,甚至使整个软件最终走向失败。但是, 实际情况是在测试自动化的过程中,无论是项目经理还是开发人员,甚至是测试人员自 己也没有在项目的开始阶段花费足够的精力去保证设计一个优良的测试库。 测试颗粒的大小决定了测试用例的复用程度和测试的覆盖率,要根据代码的安全性 等级,合理的选择覆盖率种类。选择的覆盖率级别越高,测试的粒度就越细,测试就越 充分,但需要执行的测试用例也就越多,所需要的丌销也就越大。可以通过分析覆盖率, 来判断测试是否充分,若覆盖率没有达到预定的值,则应增加测试用例的数量;若覆盖 率达到或已超过预定的值,则可以停止测试。合理的设置覆盖率和测试精度,能减少测 试用例的设计数量。 2 2自动化测试的基础和误区 虽然实现自动化测试是每一名测试工程师的终极梦想,但是并不是任何测试过程都 适合使用自动化的测试过程,自动化测试的不合理使用也可能成为测试工程师的终极噩 梦,要实现自动化也是有必要的前提条件的。实施自动化测试之前需要对软件开发过程 进行分析,以观察其是否适合使用自动化测试,千万不要强行在测试的每个部分都采用 自动化测试技术和工具,通常在自动化测试技术还没有完全成熟的情况下,我们一般都 采用手工测试为主,自动测试为辅的策略,把自动化测试方法和工具运用到能带来最大 收益的地方。 在进行自动化测试前,首先要建立一个对软件测试自动化的认识观【2 9 1 。软件测试工 具虽然能提高测试效率、覆盖率和可靠性,但它只是测试工作的一部分,是对手i n 试 的一种补充。 通常考虑一个项目是否适合自动化测试,首先要考虑的就是这个项目的稳定性问 题,如果这个项目在某一段时期内的变动不是很大,则可以考虑使用自动化测试,因为 6 硕上论文关键宁驱动的自动化软件测试的研究 一个需求经常变动的项目即使实行了自动化测试往往也是得不偿失的,对一些脚本文 件,控制流程或者测试用例的不断修改将大大的抵消采用自动化测试所带来的收益【3 0 1 。 另外,如果一个项目的周期很短也是完全没有必要实施自动化测试的,自动化测试 适用于开发周期较长的项目,这样测试框架的开发、脚本的编写等开销才有存在的价值。 同时对脚本文件的共享和复用也是一个必要的前提条件。 当以上几点自i 提条件具备了之后,要真正的实现自动化测试还是要有一段路要走 的,其中测试计划的生成是最为重要的一点。 另外要实现高级自动化测试,硬件方面也是有特殊要求的。首先要有一个实施自动 化测试的环境,通常在国外的一些大公司里面,比如微软在这方面的投资是相当可观的, 尤其是要有一个独立的实验室作为测试工作的特定场所,同时还要有足够的高性能的机 器作为自动化测试的运行平台。除此之外,要充分发挥这些自动化测试设备的作用,也 离不开对它们的科学管理。 通常人们对自动化测试的认识都是有误区的,他们认为只要在测试过程中尽可能早 尽可能多的实行自动化测试【3 ,我们从中获取的投资收益就越大。其实不然,我们从自 动化测试工具获得的收益应该体现在测试质量上,而不应该体现在测试数量上。 现在流行一种认识上的通病,认为只要使用了自动化的测试工具,就能够获取测试 带来的好处【3 2 1 ,其实这完全没有考虑到系统的可测试性等问题。另外,在开发开始之后 才编写测试代码也是一个对测试的认识误区,测试人员应该在开发开始之前就从整体来 考虑测试的问题,这样才能专注于软件模块高层的抽象,如果测试代码编写的太过于随 意和无序,对整个测试过程来说将是一个很大的风险。 2 3 自动化测试的发展阶段 测试技术一开始并不是面向自动化的,它也是经历了一个从萌芽到成熟的发展过 程,从最开始的单调的手工测试发展到高水平的自动化测试,这不仅说明了测试工作越 来越得到专业人士的重视,更说明了软件测试技术飞速发展的趋势是势不可挡的【3 3 】。 测试的发展经历了无自动化测试阶段,自动化测试初始阶段,自动化测试发展阶段, 自动化测试成熟阶段【3 4 j 等几个阶段,下面分别给予介绍。 无自动化测试阶段的主要表现就是测试用例全部是有手工设计的,测试工作也是由 非专业人员承担的最原始的手工操作,所以整个测试过程的质量根本无法得到保证,人 为因素直接决定了测试的质量。 到了自动化初始阶段,出现了支持半自动化测试的脚本技术,脚本地出现对测试自 动化的发展有重大的推动作用【3 5 1 。脚本文件通俗的说就是配置文件的一种,它可以由测 试人员进行动态的设计。脚本文件的出现虽然提高了自动化测试的程度,但是在这个时 候还没有出现方便可用的自动化测试工具,更没有专门的实验室来进行测试地规划和实 7 2 软件测试概述 硕l 二论文 施。 在自动化测试发展阶段,已经有部分测试用例实现了自动化设计,这是测试用例第 一次真正的从手工设计的繁琐中脱离出来。并且从这个阶段丌始,出现了专门从事测试 代码开发的专业人员,自动化测试工具在这个阶段也得到了很大程度上的发展。由代码 开发人员辅助测试人员来实现测试也是从这个阶段得到重视的,这对后期测试自动化的 发展具有巨大的指导意义。并且把设计代码的思想第一成功的引入到了测试过程中,例 如面向对象化的思想就被成功的引入到了测试过程中关键字的设计上1 3 引。 当自动化测试技术发展到成熟阶段后,只要某个工程项目适用于自动化测试,它的 整个测试过程就可以借助适当的自动化工具完全的实现自动化。这个阶段的测试代码库 中包括了能够共享于很多测试用例测试代码,第一次实现了测试代码的重用。这个阶段 不仅注重测试代码库的设计和使用,更加注重测试框架的设计,自动化测试流程地设计 更加科学合理,更加接近人类的自然逻辑思维习惯。 就像其它技术的发展过程一样,自动化测试的发展也是一个循序渐进,不断完善的 过程,它的发展必将朝着可重用和更灵活的方向发展。更值得注意的是测试与开发有逐 渐融合的趋势,它们在内在是相互依存的。总之,测试过程实现自动化是一个必然的发 展趋势。 2 4 常用自动化测试技术 从自动化测试的技术角度来说,它大致经历了三个发展阶段【了7 1 。从本质上说,自动 化测试的这三个不同发展阶段分别代表了三种典型的自动化测试技术。这三种技术概括 的来说分别是录制回放技术、数据驱动技术、关键字驱动技术。相应的,自动化测试系 统也从第一代的线性自动化测试系统发展到第二代的数据驱动自动化测试系统,再到第 三代的关键字驱动的自动化测试系统【3 8 1 。它们的后台支持脚本技术也经历了从线性脚本 到结构化脚本进而发展到数据驱动脚本的历程。在实际实施自动化测试系统时,不一定 仅仅限制在某一种实现技术上,可以在一个具体的实施项目中同时用到多种技术。 在以下的几节中将详细的介绍这三种自动化测试技术:录制回放技术、数据驱动技 术、关键字驱动技术。 2 4 1 录制回放技术 录制回放技术是多数测试人员步入测试行业时接触到的第一种测试技术【3 9 。录制回 放技术是指通过特定的工具记录下用户所进行的所有操作,并用记录下的内容形成可以 重复执行的测试脚本。 可以通过手工方式生成测试用例,然后通过回放来重复手工操作,但是在这种模式 下需要录制每个测试用例的全部内容,几乎一个测试用例就要对应一个脚本文件,所以 8 硕 :论文关键字驱动的自动化软件测试的研究 它的可重用性较差。 在录制回放过程中也可以包括某些特殊的比较操作,比如录制速度比较、脚本文件 容量比较等,这个过程可以通过两种方法实现:第一种方法是在录制测试用例支持脚本 的过程中,通过人工的方法,有目的地添加某些可以提供比较操作的特殊的动作关键字, 如速度比较,这相当于在支持脚本当中添加了一些比较操作的指令,这样在回放的过程 中就可以完成相应的比较操作,这个过程简单,易于实现和操作。但是一旦这样的脚本 录制完成之后,就是一个静态的脚本文件了,以后只能使用这唯一的一个脚本文件,很 难在它的基础之上进行功能的扩展和改变。 第二种方法是在回放录制的脚本文件时增加比较指令,如脚本文件容量的比较( 当 脚本文件达到一定的容量时自动的进行截取保存,或当录制时间达到一定的时间段后自 动的进行截取保存) ,这个过程既可以通过人工的方法实现,也可以通过测试工具的自 动化过程来实现。这做方法有较好的灵活性,可以在回放过程的任意时刻进行比较指令 的添加,通过在不同的时间不同的位置添加不同的指令可以实现对同一个脚本文件的多 种不同比较,进而实现多种不同的功能。但是这种方法也有一定的缺点,那就是难以维 护。 录制回放技术在以下几点有它的独到性: 1 、录制回放技术因为记录了用户所进行的所有操作流程,所以可以对测试操作流 程进行全程的跟踪。 2 、操作录制的工作人员可以不必是经验丰富的编程人员。 2 4 2 数据驱动自动化测试 一般的自动化回放测试脚本,都仅仅是简单的模拟使用者的特定动作,然而,在某 些情况下可能需要对相同的控件作更大或者更多元化的测试覆盖范围,在这种情况下回 放技术就无能为力了。为了改进录制回放技术中数据和脚本完全绑定,没有分离开来的 不足之处,以数据为驱动的测试技术应运而生了。顾名思议,数据驱动测试就是用同一 个测试动作对应多个不同的测试数据来完成测试的技术【3 9 】。相比录制回放技术,它最大 的优点就是把数据单独的存储在特定的文件里面,而脚本文件只存放相应的运行控制信 息就可以了,输入数值和输出验证数值都使用变量来填充代替,实现了测试过程的参数 化。 数据驱动测试技术主要应用在批处理系统,因为在批处理系统中除了输入数据不 同,其它的所有操作都是完全相同的。在应用程序要求数百万条记录以进行完全覆盖测 试的场景中,数据驱动测试技术是很有用的。例如移动的话费查询系统中,所有的查询 用户不同的信息只有用户的手机号码和自己定制的个人信息,其它的一切操作都是基于 用户手机号码的相同操作,所以把输入的数据和控制操作的脚本分丌来存储是较科学合 9 2 软件测试概述 硕j :论文 理的方法,一个文件只存储用户的手机号码和自己定制的个人信息,另一个文件则存储 公共的操作流程描述信息,这个文件是可以被所有用户共享的。如果不这样,就要针对 不同的手机用户来分别存储每个用户的信息和他们的查询操作信息,而这些查询操作信 息是冗余的,这样不但造成存储信息的大量冗余,同时对脚本文件的维护和管理来说也 是很繁琐的。 数据驱动测试的最大优点是:逻辑和数据分离。它简化了用例地书写,有利于用例 地理解和维护,而且在设计时可以分别用各自不同的方法进行设计,有利于提高测试设 计和测试过程的进一步分工。测试逻辑与测试数据之间的关系明了、易维护性、复用性 大大提高,也非常容易转换成自动化测试脚本来进行自动化测试。尤其可以方便快捷地 增加测试功能类似但测试数据不同的测试用例,对于批处理文件更是如此。在建立了一 个测试用例的测试逻辑之后,对功能类似的测试无需再建立相同的测试逻辑,只需要简 单的修改测试数据即可。 2 4 3 关键字自动化测试技术 在经历了录制回放技术和数据驱动技术的发展后,基于关键字驱动的自动化测试技 术越来越受到专业人士地青睐。因为前两种技术在设计上的缺陷越来越无法适应某些项 目的设计要求,尤其是一些大型的灵活性要求高的项目更是如此。其实关键字驱动并不 是什么新名词,早在q t p ( q u i c k t e s tp r o f e s s i o n a l ) 发布之前,就已经有了a b t ( a c t i o n b a s e dt e s t i n g ) 一说【4 0 】了。 关键字驱动测试实际上是数据驱动测试的一种改进。在数据驱动测试中测试人员得 到的所有支持脚本都是通过录制得来的,只是在回放技术的基础之上把输入数据从录制 的脚本罩面提取了出来。在关键字驱动的测试中,它继承了数据驱动中把数据和脚本分 开存储的思想,将整个测试逻辑按照功能关键字进行逻辑分解,单独的存储在数据文件 中,并且把关键字的功能实现所需要的测试数据也做了适当的处理,这样用关键字的形 式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动 化实现功能。 同时还引入了脚本动态设计的思想,关键字驱动系统所需要的所有脚本不再单一的 依靠手工录制来取得,而是可以由测试设计人员通过测试关键字来动态地设计测试脚 本,即脚本来源由单一的静念录制发展到了动态设计。这样整个系统的功能可以得到更 好更灵活的扩展,因为只要测试脚本中所使用的功能描述关键字已经由测试设计人员设 计好并存储在了关键字库里面,这个功能支持脚本就可以被系统识别和执行。 另外,关键字测试技术还在数据驱动的基础之上加上了对象化的设计思想,用程序 设计中面向对象的思想来设计测试的过程。简单的说,对象就是映射前的关键字,它们 是在测试过程中,由自动化测试工具或手工捕获的离散性功能业务事件的某个数据项, 1 0 硕上论文关键字驱动的自动化软件测试的研究 不同的对象可以对应到不同的关键字上,这样系统就可以方便灵活的对关键字进行识别 和分辨了。把这些捕获的关键字归类成不同的集合,并存储在特定的结构中,就形成了 能够实现一定功能的关键字库了。 关键字驱动技术的特点: 1 、脚本的来源由单一的静态录制发展到了动态设计。丰富了脚本库中的脚本的数 量和质量,首次真正的实现了功能支持脚本的复用,有利于功能的进一步扩展。 2 、在测试过程中引入了对象化的思想,从开发的角度来设计和维护关键字,把测 试提高到了和开发等同的高度。 3 、关键字驱动技术实现了脚本、数据、业务的分离,把它们的耦合性降到了最 低,提高了测试的灵活性。 2 5 自动化测试技术对比 从某种程度上说,自动化测试技术的发展和软件工程思想的发展是一脉相承的。软 件开发中的模块化、层次化、松耦合性等思想对自动化测试框架的设计都具有借鉴意义。 简单的录制回放技术是指由自动化测试工具或手工录制的方式在后台记住前台的所有 操作并保存在脚本文件中,这种脚本文件只能通过单一的录制方式来实现,一个脚本文 件只能对应某个特定的操作事件,无法实现脚本的复用。 数据驱动技术则在录制回放的基础上首次实现了数据和脚本的分离,有利于提高测 试设计和测试执行的进一步分离,可以方便快捷的增加测试功能类似但测试数据不同的 测试用例,尤其对于批处理文件更是如此。但是数据驱动技术没有完全地实现业务和脚 本的分离,即事件的功能还是包括在所录制的脚本里面,要实现事件的逻辑功能还必须 对脚本文件进行分析和解析执行才行。 关键字驱动测试实际上是数据驱动测试在设计逻辑上的一种改进类型,它第一次真 正的实现了脚本、数据、业务的分离,用关键字的形式将测试逻辑封装在数据文件中, 所以数据文件中的内容不再是简单的输入数据。关键字驱动技术的脚本获取方式不再是 单一的静态录制方式,它可以用关键字根据功能需要进行动态地设计,所以系统的功能 可以得到更好地扩展。在关键字的设计方面,采用了分解的方式从关键字库单一的功能 关键字中分离出了导航关键字,并加上了信息反馈的索引方式,所以它能够更好的在多 系统和多数据库中进行移植【4 2 1 。 这三种测试技术的详细比较信息见表2 5 1 所示。 2 软件测试概述硕:j :论文 表2 5 1自动化测试技术的对比 录制同放 数据驱动关键字驱动 是否面向对象 否否 是( 通过关键字实现) 脚本、数据、业务是否分离否脚本数据分离脚本、数据、业务完全分离 脚本获取方式录制录制动态设计、录制 是否引入分层否否关键字库三级结构 是否有利于反馈信息收集否否通过逆向回溯过程实现 功能是否分解否否 由功能导航关键字联合实现 是否利于系统间的移植 否否 可以在多系统多数据库中移植 从上表中我们可以明显地看出,自动化测试技术越来越朝着可重复性,灵活性等 方向发展。关键字驱动测试技术以其简单、灵活和低开销等诸多优点成为当前测试技 术的研究方向。 1 2 硕十论文 关键字驱动的白动化软件测试的研究 3 关键字自动化测试技术 在上面的章节中已经对关键字驱动的自动化测试技术进行了概括性的功能介绍,虽 然关键字驱动测试技术有许多的独到之处,并在很多工程项目中得到了应用,但是它的 设计结构还不尽完美,有很多需要改进和完善的地方,尤其是在关键字库和关键字结构 的设计方面。本章将在功能关键字与导航关键字的分离,关键字库功能的分解,关键字 库的结构设计和关键字与功能支持脚本之间的映射等方面重点进行研究。 一般来说,并不是所有的测试项目都适合用基于关键字的自动化测试的方法。因为 任何新的技术从出现到真正的被接受和成熟地使用都有一个时间过程,在这个过程当中 技术人员只能不断的进行实践和摸索。 要建立基于关键字的自动化测试,也是有它的必要前提的。这个前提就是“构成某 个项目的各个应用程序的所有离散功能性业务事件都可以使用短文本描述关键字和相 关联的参数值对变量进行描述【4 3 】。所谓“应用程序的离散功能性业务事件 是指被测 试的应用程序能够分解成一些功能相关的、耦合性低的独立事件的集合体。在这个前提 条件中包括了五个层次的意思,它们分别是: l 、项目:为了实现某个特定的实际应用而构建的特定工程,这个工程有若干相互 联系的功能程序组成。 2 、程序:为了实现某些特定功能的函数的有序集合体,它可以分解成若干离散性 功能业务事件。 3 、离散性功能业务事件:把程序分割为若干个耦合性较低的逻辑部分,每个逻辑 部分单独地实现每个功能,这些独立的逻辑部分

温馨提示

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

评论

0/150

提交评论