(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf_第1页
(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf_第2页
(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf_第3页
(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf_第4页
(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf_第5页
已阅读5页,还剩70页未读 继续免费阅读

(计算机软件与理论专业论文)基于gui的自动化测试框架的研究与实现.pdf.pdf 免费下载

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

文档简介

皋于g u i 的自动化测试框架的矽究j 实现 基于g ul 的自动化测试框架的研究与实现 摘要 由于人们对于软件质量的重视程度越来越高,导致软件测试在软 件开发中的地位变得越来越重要。伴随着面向对象技术成为软件开发 的热点,当前的软件的结构日益复杂化,软件规模也日趋庞大,手工 测试很难满足目前人们对软件测试的要求。因此,近年来国内外先后 提出了大量先进的自动化测试理论,并不断的有自动化测试工具问 世,测试自动化已经成为软件测试的主要发展趋势。 图形用户界面( g u i ) 测试是软件测试中的一个重要环节。目前, 商用的自动化g u i 测试工具大多采用捕获回放( c a p t u r e p l a y b a c k ) 技 术生成脚本。但是,现阶段的捕获回放技术还存在着对测试环境依 赖性强、抗干扰能力弱的问题。当遇到对响应时间比较敏感的测试任 务时,不但回放的同步性无法得到保障,还会带来致命的错误。这些 问题都会影响到测试结果的准确性和可靠度。 通过对g u i 自动化测试技术进行了比较深入的研究,针对现阶 段捕获回放技术中存在的不足,论文结合j a v a 图形界面设计所采用 的事件委托模型,提出了一种基于事件源识别的捕获回放测试技术。 将g u i 事件作为测试捕获回放的关注点,基于g u i 事件进行测试的 捕获和回放控制,并在此基础上进一步研究了基于事件源识别的回放 同步控制和测试结果自动比对技术,提高了自动测试过程中的稳定性 和测试结果自动比对的准确性。此外,论文还将x m l 标准化存储格 式运用于g u i 测试脚本的捕获与回放当中,不但使得测试脚本层次 结构清晰、可读性好,同时借助x m l 文档本身良好的扩展能力,使 綦十g u i 的自动化测试框架的研究o j 实现 得测试脚本中可以记录更多的内容,从而增强了g u i 测试功能。 在理论研究的基础上,论文还基于j a v a 平台设计并实现了一个 基于事件源识别技术的g u i 自动化测试工具原型一g u i t e s t 。g u i t e s t 自动化测试工具实现了基于事件源识别技术的测试捕获和回放功能, 并采用了基于g u i 组件属性的测试结果自动比对技术。为了验证理 论研究的可行性和实用性,对原型的平台兼容性,捕获和回放技术的 稳定性和精确性,测试结果自动比对的准确性等进行了全面的测试。 测试表明,g u i t e s t 自动化测试工具实现了g u i 自动测试的功能,并 具有较好的测试稳定性和准确性,达到了预期的研究目标。 关键字:软件测试;自动化测试;图形用户界面;捕获回放;x m l v 基于g u i 的白动化测试框架的研究j 实现 r e s e a r c ha n di m p l e m e n to fg u ib a s e da u t o t e s t i n g a r c h i t e c t u r e a b s t r a e t t h ei m p o r t a n c eo fs o f t w a r eq u a l i t yh a si n c r e a s e dc o n s t a n t l y , w h i c h h a sl e dt ot h ep o s i t i o no ft e s t i n gi nt h es o f t w a r ed e v e l o p m e n tb e c o m i n g i n c r e a s i n g l yi m p o r t a n t a l o n g w i t ht h e o b je c t o r i e n t e d s o f t w a r e d e v e l o p m e n tt e c h n o l o g yb e c o m e st h ep o p u l a r , t h e c u r r e n ts o f t w a r e s t r u c t u r ei sm u c hm o r ec o m p l e x ,a n dt h es c a l eo fs o f t w a r ei si n c r e a s i n g l y h u g e ,s o i ti sd i f f i c u l tt om e e tc u r r e n tr e q u i r e m e n t sb ym a n u a lt e s t 。 t h e r e f o r e ,i nr e c e n ty e a r sb o t hh o m ea n da b r o a dh a si n t r o d u c e dal o to f a d v a n c e da u t o m a t i c t e s t i n gt h e o r y , a n dc o n s i s t e n t l yh a v ea u t o m a t e d t e s t i n gt o o l sa p p e a r e d ,a u t o m a t i ct e s t i n go fs o f t w a r eh a sb e c o m et h em a i n t r e n d g r a p h i c a lu s e ri n t e r f a c e ( g u i ) t e s t i n gi nt h es o f t w a r et e s ti sa n i m p o r t a n tl i n k a tp r e s e n t ,t h e r ea r eal a r g en u m b e ro fa u t o m a t i cg u i t e s t i n g t o o l s u s i n gc a p t u r e p l a y b a c k t o g e n e r a t es c r i p t h o w e v e r , n o w a d a y si t i sc l e a rt h a tt h ec a p t u r e p l a y b a c kt e c h n o l o g i e sh a v et h e t e s t i n ge n v i r o n m e n td e p e n d e n c e ,a n da n t i w i n d o ww e a kp r o b l e m s t o s o m er e s p o n s e t i m e s e n s i t i v e t e s t ,n o to n l yt h es y n c h r o n i z a t i o no f p l a y b a c kc o u l dn o tb eg u a r a n t e e d ,b u ta l s op r o b a b l yb r i n ga b o u ts o m e v i 热十g u i 的自动化测试框架的驯究j 实现 f a t a le r r o r t h e s ei s s u e sa l w a y sg r e a t l ya f f e c tt h ea c c u r a c ya n dr e l i a b i li t y o ft h et e s tr e s u l t s t h r o u g hd e e pr e s e a r c hi nt h eg u it e s ta u t o m a t i o nt e c h n o l o g y ,a n d t ot h ea b o v es h o r t c o m i n g so ft h ec u r r e n tc a p t u r e p l a y b a c kt e c h n o l o g i e s , t h i sp a p e rc o m b i n i n gw i t ht h ej a v ae v e n td e l e g a t e dm o d u l ep r o p o s e sa c a p t u r e p l a y b a c kt e s t i n gt e c h n o l o g y b a s e do nt h ei n c i d e n ts o u r c e s i d e n t i f i c a t i o n t h i st e c h n o l o g yc o n s i d e r st h ei n c i d e n ta st h ef o c u so ft h e c a p t u r e p l a y b a c kt e s t i n g ,p l u st h ec a p t u r e p l a y b a c kt e s tc o n t r o lo v e rg u i 一 一一一一一 i n c i d e n t ,b a s e do nw h i c hf u r t h e rs t u d i e sa r ec a r r i e do nt h ea u t o m a t i c c o n t r a s tt e c h n o l o g yb e t w e e nt h es o u r c es y n c h r o n o u sp l a y b a c kc o n t r o l a n dr e s u l t s t h e ni t i m p r o v e st h ea u t o m a t i cs t a b i l i t yi nt h ep r o c e s so f t e s t i n ga n dt h ea c c u r a c yo fa u t o m a t i c a l l yc o m p a r i s o na m o n gt h et e s t i n g r e s u l t s i na d d i t i o n ,t h ep a p e ru s e ss t a n d a r d i z e dx m li nt h ep r o c e s so f g u it e s ts c r i p tr e c o r d i n ga n dp l a y b a c k ,n o to n l yt h eh i e r a r c h i c a ls t r u c t u r e o ft e s t s c r i p t sc l e a ra n dr e a d a b l e ,b u ta l s ob yr e l y i n go nt h ex m l d o c u m e n ti t s e l fg o o dc a p a c i t yf o re x p a n s i o n ,t e s ts c r i p t sc a nr e c o r dm o r e c o n t e n t ,t h u ss t r e n g t h e na b i l i t yo ft e s t i n gg u i o nt h eb a s i so fr e s e a r c h ,p a p e rb a s e do nt h ej a v ap l a t f o r md e s i g n e d a n di m p l e m e n t e da p r o t o t y p ea u t o m a t e dt e s t i n gt o o l s g u i t e s t ,w h i c hi s e v e n t - b a s e dg u is o u r c ei d e n t i f i c a t i o nt e c h n o l o g y g u i t e s ti m p l e m e n t s t h e c a p t u r e a n d p l a y b a c k f e a t u r e sb a s e do nt h ei n c i d e n t s o u r c e i d e n t i f i c a t i o nt e c h n o l o g y , a n du s i n gt h ea u t o m a t i cc o m p a r i s o na m o n g v i i 基于g u i 的自动化测试框架的彬f 究。j 实现 t e s t i n gr e s u l t sb a s e do na t t r i b u t e so fg u ic o m p o n e n t s i no r d e rt ov e r i f yt h ef e a s i b i l i t ya n dp r a c t i c a l i t yo ft h e o r e t i c a ls t u d y , t h ec o m p a t i b i l i t yo ft h ep r o t o t y p ep l a t f o r m ,s t a b i l i t yo ft h er e c o r d i n ga n d p l a y b a c kt e c h n o l o g ya n da c c u r a c yo fa u t o m a t i c a l l yc o m p a r i s o na m o n g t h et e s t i n gr e s u l t s ,s u c hac o m p r e h e n s i v et e s ti sc a r r i e do u t t h et e s t s h o w st h a ta u t o m a t e dt e s t i n gt o o l g u i t e s tr e a l i z e st h eg u ia u t o m a t i c t e s t i n gf u n c t i o n ,a n dh a sg o o ds t a b i l i t ya n da c c u r a c ya n da c h i e v e st h e a n t i c i p a t e dg o a lo f t h er e s e a r c h k e yw o r d s :s o f t w a r e t e s t i n g ;a u t o m a t e dt e s t i n g ;g u i ; c a p t u r e p l a y b a c k ;x m l v i i i 皋十g u i 的自动化测试框架的训究j 实现 东华大学学位论文原创性声明 本人郑重声明:我恪守学术道德,崇尚严谨学风。所呈交的学位论文,是本 人在导师的指导下,独立进行研究工作所取得的成果。除文中己明确注明和引用 的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品及成果的 内容。论文为本人亲自撰写,我对所写的内容负责,并完全意识到本声明的法律 结果由本人承担。 i i 学位论文作者签名:桶承1 1 1 日期:司年1 2 - 月日 缺十g u i 的自动化测试框架的 i | 究。j 实现 东华大学学位论文版权使用授权书 学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留 并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查蒯或借i 蒯。 本人授权东华大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本版权书。 本学位论文属于 | 不保密彤 学位论文作者签名:袖劫| ) 日期:埘年月1 日 i f 指导教师签名: 勘匕砀 日期:勿蹭年3 月2 同 基于g u i 的自动化测试框架的硎究与实现 1 1 选题背景及意义 1 绪论 随着信息时代的到来,计算机逐渐进入了社会生活的各个领域,并在其中起 到了举足轻重的作用,软件质量的高低、信息系统的稳定性和可靠性在很大程度 上影响了人们的日常生活。但是,尽管软件技术在不断地日新月异,开发人员也 越发地谨慎小心,仍然难以保证软件的完全正确。测试是保证软件质量的重要手 段,也是软件开发过程中的一个重要环节。j 下如任何生产过程都离不开产品质黾 检验一样,测试工作也是软件开发过程中必不可少的环节。软件测试工作做得怎 么样,直接决定着软件产品质量的好坏。大量统计资料表明,软件测试阶段投入 的成本和工作量往往要占软件丌发总成本和总工作量的3 0 到5 0 甚至更多; 在国外一些著名的i t 企业中,软件测试人员与软件开发人员的人数比例接近于 1 :l ;对于一些要求高可靠、高安全的软件,测试费用可能相当于软件项目丌发 所有费用的3 至5 倍1 2 j 。随着软件应用范围的扩大,软件复杂度的提高,以及软 件设计技术的不断发展,软件开发规模越来越大,处理问题也越来越复杂,同时 软件系统的可靠性更为重要,传统的软件测试技术和方法以及测试工具已经无法 满足大型的、复杂的软件测试的需要。软件测试已经成为当前软件技术研究的重 点和难点,有关软件测试技术的研究和测试工具的研发越来越受到软件界的重 视。尽管如此,软件测试技术的发展仍然不能满足人们的期望。因此,对软件质 量的测试研究是一个非常有实际价值的课题。 由于图形用户界面g u i 使软件的易用性、友好性等方面得到极大的加强, g u i 在当今的软件系统中得到广泛的应用,现在的应用系统中g u i 代码大约占 整个系统的5 0 【3 j 。g u i 的j 下确性对于整个软件的安全性、稳定性和可用性都是 至关重要的。为了确保软件产品的质量,测试是最重要的手段。因此,对g u 的测试非常重要,针对g u i 测试的成功与否将影响到软件产品整体质量。然而 由于软件接口越来越复杂,软件的g u i 测试也成了一项复杂而繁琐的工作,给 测试人员带来了极大的挑战。因此,人们开始研究自动化测试工具代替复杂的手 暴十g u i 的自动化测试框架的币f 究与实现 工测试,提高软件质量。但是,g u i 的手- r n 试存在如下几点缺陷: ( 1 ) 软件功能越来越复杂,g u i 软件需要大量的人机交互操作,手工测试的 过程中,一旦操作失误,将会影响测试结果的准确性。 ( 2 ) 一些关于软件性能方面测试,对执行测试的要求很高,不借助于自动化 工具的帮助无法进行测试。例如,在分布式的环境下,测试服务器的最大访问量, 这就需要测试人员在客户端不断的采取访问服务器操作。当手工操作的速度达到 极限时,就无法测试到服务器的访问量的瓶颈值,因此需要自动化工具来完成这 类测试。 ( 3 ) 手工测试效率低,不利于大规模的重复性测试,当一个测试过程仅仅进 行微小的修改,而又需要大量重复测试时,自动化测试工具比手工测试更具优势。 ( 4 ) 手i n 试不利于记录测试过程中的产生的输出结果,并最终生成测试报 告。一旦测试过程中遇到异常情况,缺乏测试过程中的数据信息,测试人员无法 分析产生b u g 的原因。 所以传统的手工测试已远远不能满足现实的需求。软件测试工具凭借着自动 化程度高、实用性强等特点,引起了人们的广泛重视。由于测试工作在软件丌发 的整个过程中占有极其重要的位置,而人工测试又特别困难,所以测试过程的自 动化成为测试的发展方向。 经过了近几年的发展,据统计,至1 9 9 8 年美国已经有了超过1 7 5 种软件测 试工具【4 1 ,软件的质量也比较可靠。但是,到目前为止,对软件错误的报告还是 层出不穷,升级补丁也是有增无减。这不仅仅是由于软件变得越来越复杂造成的, 更是说明了当前软件测试自动化程度还不够高,软件测试工具还有很长的路妻 走。 本文就是在上述研究背景下,从测试自动化技术的原理和设计丌发两方而对 g u i 的自动化测试进行了研究,目标是实现一个面向j a v a 的软件测试自动化工 具。研究自动化测试工具的目的是减轻测试人员的测试压力、将测试人员从繁琐 的手工测试中解决出来,使测试人员将精力投入到测试策略的设计上去,从而进 一步提高软件的质量。 基十g u i 的自动化测试框架的乱玎究0 实现 1 2 国内外研究现状 目前,g u i 自动化测试受到国内外i t 企业的普遍重视,人们将焦点都聚集 到自动化测试工具的研究上,国外的测试研究由于起步较早,并有先进的测试理 论作为基础,因此已经有很多企业级的测试工具投入使用。在这些工具t # , m e r c u r y 公司的w i n r u r m e r 5 】和i b m 公司的r a t i o n a lr o b o t 6 】不但具有强大的测试 功能,而且还支持多种操作平台,因此,这两款工具在市场上占有绝大多数份额。 国外的自动化测试工具之所以非常受欢迎,主要是因为:第一,采用最先进的测 试理论为基础。从早期的基于屏幕的捕获技术,到现在的基于对象的测试方法【7 j , 它们一直都在根据软件技术的发展不断的探索新的测试理论,并将理论应用于测 试工具的设计中去。第二,具备多元化的测试功能。这两种工具不但能够面向多 种对象进行测试,例如:g u i 、位图和w e b 网页等,而且具有强大的脚本编辑、 验证点比较和数据驱动等功能,有助于测试人员能够完成复杂的测试工作。绐三, 具备人性化的向导式设计。在测试用例的建立、验证点的插入、驱动数据的导入 等测试场景下,这两款软件都采用向导的方式帮助测试人员定制所需的功能。例 如:w i n r t m n e r 的m a n a g e r t 8 1 和r o b o t 的r a t i o n a lt e s t m a n a g e r 9 1 。国外的先进测 试软件,不但指示出测试技术的发展方向,更让人意识到与之的差距,因此,需 要向世界先进测试理论不断的学习、总结,使我国的测试水平能够追赶并达到世 界软件测试的前列标准。 近年来,我国在g u i 自动化工具的研究方面取得显著的成绩,许多工具都 结合先进的测试理论而问世,在一定程度上弥补了我国测试工具落后的弱点。 南京大学的骆斌教授采用基于名称的控件识别技术设计自动化测试工具一 - n j u n i t 【1 0 1 。n i l i t 实现了对控件的识别,并且模拟用户对空间的各种操作, 从而实现对s w t 和d r a w 2 d 图库中各种图形控件的识别和处理【i l 】。对s w t 的 w i d g e t 操作是按照w i n d o w s 的消息机制直接发送消息给想和应的w i d g e t 的句 柄,对d r a w 2 d 的f i g u r e 的操作是用测试工具生成响应的事件并激发来模拟用户 的操作【1 2 】。 大连海事大学的张维石教授基于数据驱动自动化测试框架技术和美国学者 缺十g u i 的自动化测试框架的研究o j 实现 a t i fm m e m o n b 】的测试用例修复理论,提出了经过改进的g u i 自动化测试框 架,并根据此框架实现了自动化测试工具a t t i c 14 1 。a t t i c 是一个在w i n d o w s 环境下针对c # 语言编写的目标应用程序的测试工具,它通过创建g _ c f g 和g - - c a l lt r e e 对修改后的g u i 进行结构调查并修复测试用例【15 1 。 四川大学的李志蜀教授通过研究w i n d o w s 的消息机制和钩子函数1 6 】,采用 操作记录重放技术,开发出简单实用的g u i 自动测试工具a u t o t e s t 。该工具能 够进行脚本的编辑,并利用p a r s e rg e n e r a t o r 中的a y a c c 和a l e x 两个工具实现 用户对g u i 操作的重放【1 7 】。 虽然,我国已经在自动化工具的设计上取得了一定的成就,但是这些工具仍 然存在着一些不足,所以,这些g u i 自动化测试工具还需要进一步的改进:第 一,我国自主研发的工具大部分都是利用w i n d o w s 下面的消息机制进行测试, 缺乏对当今主流编程语言j a v a 的g u i 控件的支持。j a v a 的图形设计工具包a w t 和s w i n g 1 8 1 借助于j a v a 语言在开源性上的优势,已经逐步在g u i 设计上占领一 席之地,因此面向j a v a 的g u i 测试将成为未来测试的热点方向,我国的自动化 测试工具需要对这方面的工作进行深入的研究。第二,测试工具要具有平台无关 性,能够适应更多的测试环境的工具将会拥有更好的实用价值。第三,测试工具 的准确性和可靠度必须得到保证。随着i n t e m e t 的普及,分布式软件的测试环境 越来越不可预测。在测试的回放阶段,如果没有进行同步控制和验证点的比较, 那么测试的准确性将会受到质疑。综上所述,本文设计的测试工具将测试的对象 设定为基于j a v a 的图形化组件,并将研究的重点放在回放同步控制和验证点比 较这两项关键技术上,提高了自动测试过程中的稳定性和测试结果自动比对的准 确性。 1 3 本文的研究工作 本文通过研究基于j a v a 的图形用户界面g u i 的自动化回归测试技术,分析 现阶段的捕获回放技术中存在的不足,结合j a v a 图形界面设计所采用的事件委 托模型,提出基于事件源识别的测试系统的架构。为了提高自动测试过程中的准 确性和可靠性,本文进一步研究了基于事件源识别的回放同步控制和验证点自动 4 皋十g u i 的自动化测试抠架的研究j 实现 比对技术。 论文的工作总结如下: ( 1 ) 提出“基于事件源识别”的思想,并将该思想融入到捕获回放测试技术 中,设计出基于j a v a 的g u i 自动化测试框架。 ( 2 ) 利用x m l 数据格式保存测试脚本和测试验证信息,使测试用例能够跨平 台的移植,减少不必要的非测试开销。 ( 3 ) 提出回放同步控制策略,增强被测应用程序在捕获和回放过程中的一致 性,使测试结果数据更可靠。 ( 4 ) 针对a w t 和s w i n g 中的所有组件,提供组件状态和属性值的验证比圾垃 能,使测试人员能够在捕获过程插入自定义的验证点,测试工具在回放时自动比 较验证点。测试人员通过验证点的比较结果,判断被测程序是否达到设计要求。 ( 5 ) 根据本文提出的基于j a v a 的g u i 自动化测试框架,并集成上述功能,实 现了一个简单的自动化测试工具- - - - - g u i t e s t 。利用工具进行模拟测试,通过分 析结果报告,说明工具已经达到预期的效果,证明g u i t e s t 具有实用价值。 1 4 论文组织结构 第一章主要介绍软件测试向自动化方向发展的趋势;在介绍图形用户界面i 翱 试的同时分析手工测试相对于自动化测试的不足之处;结合国内外g u i 自动化 测试工具的研究现状,突出本文的研究意义。最后本章给出了本文研究内容与组 织结构。 第二章主要介绍软件测试中的基本概念和测试步骤,通过对软件测试技术中 的研究热点的分析,显示出自动化测试在测试领域的重要地位。 第三章主要介绍了g u i 自动化测试技术的兴起与发展现状。本章还介绍了 当前流行的g u i 自动化测试工具w i n r u n n e r 和r a t i o n a lr o b o t 的技术特点和馒角 ,: 方法。最后,阐述回归测试技术和捕获回放测试技术。 第四章主要介绍基于j a v a 的g u i 自动化测试工具的总体设计和模块设计。 第五章主要介绍测试工具g u i t e s t 的实现。 第六章主要通过测试一个计算器小程序,演示g u i t e s t 的使用方法和步骤, s 接于g u i 的自动化测试框架的研究与实现 根据测试产生的结果,证明g u i t e s t 的实用性。 第七章主要总结了本文研究的内容,并针对本文研究中存在的一些不足提出 了进一步工作的展望。 1 5 小结 本章介绍了软件自动化测试技术的发展历史和当前国内外的研究动念。阐述 了基于j a v a 的g u i 自动化测试框架设计的必要性,提出了论文的研究重点,最 后介绍了本文的研究工作和本文的内容组织结构。 6 皋于g u l 的自动化测试框架的研究7 i 实现 2 1 引言 2 软件测试 2 0 多年前,美国著名的软件工程师f p b r o o k s 把组织开发i b m 3 6 0 操作系 统时的失败教训总结出来,写出至今仍然被人们经常引用的书难忘的软件 开发日日夜夜( ( ( t h em y t h i c a lm a n m o n t h ) ) ) 【1 9 1 。这本书目前已经成为软件二l 程的重要文献,该书认为,千万不可忽视软件开发的管理,因为软件本身以及软 件开发过程都有它自己的特点。确有不少软件项目开发实例,听取了这一忠告, 认真解决软件开发的组织工作和质量管理等问题,并获得了成功。然而也有一些 失败的实例需要我们认真思考【2 0 1 。 近年来软件质量问题逐渐突出,不断传来的报道告诉我们,有些问题十分严 重。因软件产品质量不佳而引发的事故已直接影响了人们的日常生活,甚至伤害 着一些人的生命和社会安全。这种现象再一次向我们提出警告,现已到了需要加 强对软件质量的重视度和花大力气解决软件质量问题的时候了。以下是几个典型 的因软件质量问题而引发的事故: ( 1 ) 1 9 9 3 年伦敦附近核电站的反应堆内,由于计算机温度控制失灵,致使这 个欧洲人口最为密集的地区遭受巨大灾难。后经查明,在反应堆的主要保护系统 中,一段1 0 万行代码的控制程序几乎有一半未能通过测试【2 l 】。 ( 2 ) 海湾战争中,某个软件故障打乱了“爱国者”导弹的雷达跟踪系统,使导弹 发射后未能迎击对方发射的“飞毛腿”导弹,反而轰击了自己的军营,造成2 8 名 士兵丧生,9 8 名受伤f 2 2 】。 ( 3 ) 1 9 9 6 年欧洲航天局“阿丽娜5 型( a r i a n e5 ) 火箭在发射4 0 秒后爆炸,造 成发射基地2 名法国士兵当场死亡。致使耗资1 0 亿美元,历时9 年的欧潍航天 计划严重受挫,这个事故震惊了整个国际宇航界。事后专家调查分析报告指出, 爆炸原因在于a r i a n e5 复用了部分a r i a n e4 系统的组件,而没有对这些组件进行 充分的测试【2 3 1 。 ( 4 ) 1 9 9 7 年香港回归祖国,同时香港新机场投入运营,然而又是软件问题使 皋十g u i 的自动化测试榧架的圳究j 实现 新机场不能按要求运转,致使客货滞留,而老机场因同时关闭也不能救援,造成 相当大的损失【2 4 】。 据国外资料报道,近年来由于软件缺陷致使计算机故障引发的严重事故已使 4 千人丧生【2 5 】。至于我们去银行、邮局办事,窗口贴出通告电脑故障,暂停茸 , , 业”的现象更是屡见不鲜。 软件质量问题由来已久。6 0 年代末7 0 年代初,以c a h o a r e 2 6 】和e w d i j k s t r a 2 7 1 等人为代表的一批计算机科学家针对软件质量问题的严重性,提出用 形式化功能规约描述用户需求,并证明程序与功能规约的一致性为特征的形式化 方法,从而向人们勾绘出一幅大幅度提高软件质量,同时大幅度减少甚至完全取 消软件测试与维护费用的软件开发理想境乔【2 8 1 。形式化途径为软件生产所勾画 的美妙前景吸引了许多从事计算机科学的学者,刺激了计算机科学工作者对软件 及其开发方法的理论研究,其理论也从证明程序与功能规约的一致性逐步发展成 为从形式化功能规约形式地推导与功能规约一致的程序,从由程序员人工地推导 和证明发展成为在软件工具的帮助下自动和半自动地进行证明和推导【2 9 1 。然而: 在过去的四分之一世纪里,软件生产并未沿着形式化方法所描绘的方向发展。相 反,被形式化方法所抛弃的、以软件测试为中心的软件质量保障技术在软件生产 实践中得到了迅速发展【3 0 】,软件测试已成为软件生产中必不可少的质量保障手 段。 2 2 软件测试技术 软件测试技术包括静态测试技术和动态测试技术,动态测试技术又包括自盒 测试技术和黑盒测试技术。 2 2 1 静态测试 静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进 行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行【3 1 1 。 代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一 致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理 幕十g u i 的白动化测试框架的研究j 实现 性等方面进行检查,可以发现违背程序编写标准的问题,程序中不安全、不明确 和模糊的部分【3 2 】,找出程序中不可移植部分、违背程序编程风格的问题,包括 变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等晦 容【3 3 】3 3 。 在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现3 0 7 0 的逻辑设计和编码缺附3 4 】;代码检查看到的是问题本身而非征兆。但是代码 检查非常耗费时间,而且代码检查需要知识和经验的积累【3 5 】。代码检查应在编 译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程 序的源代码清单、代码编码标准和代码缺陷检查表等【3 6 】。 静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调甩关吞 图、函数内部控制流图【3 7 】。其中,函数调用关系图以直观的图形方式描述一个 应用程序中各个函数的调用和被调用关系;控制流图显示一个函数的逻辑结构, 它出许多节点组成,一个节点代表一条语句或数条语句,连接结点的称为边,抛 表示节点间的控制流向【3 8 】。 2 2 2 动态测试 动态测试就是通过运行软件来检验软件的状态和运行结果的正确性,因此, 动态测试必须是软件被编译之后进行。在软件测试著名的v & v ( v e r m c a t i o n 和 v a l i d a t i o n ) 即验证与确认中,动态测试就是确认的部分 2 6 】。它是将抽样的测试 数据输入到被测试的程序并分析输出以发现错误的过程。在动态测试中如何选择 抽样的测试数据,也就是测试用例的选择策略,是测试的最重要的部分,根据测 试用例选择策略的不同,动态测试可分为白盒测试和黑盒测试【2 7 】。 ( 1 ) 白盒测试 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程 序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进彳亍,检 验程序中的每条通路是否都能按预定要求i f 确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结 构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同 9 綦十g u i 的自动化测试框架的研究o j 实现 点检查程序的状态,确定实际的状态是否与预期的状态一致。 白盒测试的用例需要做到【3 9 】: a ) 保证一个模块中的所有独立路径至少被使用一次 b ) 对所有逻辑值均需测试t r u e 和f a l s e c ) 在上下边界及可操作范围内运行所有循环 d ) 检查内部数据结构以确保其有效性 自盒测试具有六种测试方法【4 0 】: a 1 语句覆盖 语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例, 使得程序中每条语句至少被执行一次。 语句覆盖的优点:可以很直观地从源代码得到测试用例,无须细分每条判定 表达式。 语句覆盖的缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句, 但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在i f 结构中若 源代码没有给出e l s e 后面的执行分支,那么语句覆盖测试就不会考虑这种情况。 , 但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再 如,在d o w h i l e 结构中,语句覆盖执行其中某一个条件分支。那么显然,语句 覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其 它情况。 b ) 判定覆盖 判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个 判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。 每个判断的取真、取假至少执行一次。 判定覆盖的优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就 具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单 性,无须细分每个判定就可以得到测试用例。 判定覆盖的缺点:往往大部分的判定语句是由多个逻辑条件组合而成( 如, 判定语句中包含a n d 、o r 、c a s e ) ,若仅仅判断其整个最终结果,而忽略每个 l o 慕十g u i 的自动化测试框架的研究j 实现 条件的取值情况,必然会遗漏部分测试路径。 c ) 条件覆盖 条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能 的结果,即每个条件至少有一次为真值,有一次为假值。 条件覆盖的优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试, 增加了测试路径。 条件覆盖的缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖= : l : 不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有 的判定结果。 d ) 判定条件覆盖 设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一 次,每个判定本身所有可能结果也至少出现一次。 判定条件覆盖的优点:判定条件覆盖满足判定覆盖准则和条件覆盖准则, 弥补了二者的不足。 判定条件覆盖的缺点:判定条件覆盖准则的缺点是未考虑条件的组合情况。 e ) 组合覆盖 组合覆盖要求设计足够多的测试用例,使得每个判定中条件结果的所有可能 组合至少出现一次。 组合覆盖的优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定条件 覆盖准则。更改的判定条件覆盖要求设计足够多的测试用例,使得判定中每个 条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现 次。并且每个条件都显示能单独影响判定结果。 组合覆盖的缺点:线性地增加了测试用例的数量。 0 路径覆盖 设计足够的测试用例,覆盖程序中所有可能的路径。 路径覆盖的优点:这种测试方法可以对程序进行彻底的测试,比前面 种的 覆盖面都广。 路径覆盖的缺点:由于路径覆盖需要对所有可能的路径进行测试( 包括循环、 基于g u i 的自动化测试框粲的研究! j 实现 条件组合、分支选择等) ,那么需要设计大量、复杂的测试用例,使得工作量呈 指数级增长。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错 带来麻烦。 白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的种 单元测试方法。只有对程序内部十分了解才能进行适度有效的自盒测试。但是贯 穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此 我们不能穷举所有的逻辑路径,另外即使穷举也未必会可以保证程序的绝对完整 性,例如穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程 序遗漏的路径等。 那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、 语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体 测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽 可能全面地覆盖每一个逻辑路径。 ( 2 ) 黑盒测试 黑盒测试被称为功能测试、数据驱动测试或者基于规格说明的测试,实际上 是站在最终用户的立场上,检验输入输出信息及系统性能指标是否符合规格说明 书中有关功能需求及性能需求的规定【4 2 1 。 黑盒测试技术设计测试用例的方法包括功能分解、等价类划分、边界值分析、 因果图、错误推测法。下面简要介绍一下相关的概念【4 3 】: a ) 功能分解法 是指在识别程序功能的基础上,对各种功能加以分解,正确地设计测试用例, 使每一个功能被全面地测试。用该方法设计测试用例分两步:首先使用程序设计 中的功能抽象方法把程序分解为功能单元,然后使数据抽象方法产生测试每个功 能单元的数据。 b ) 等价类划分法 是指把所有可能的输入数据,及程序的输入域划分成若干等价类,每类中一 个典型值在测试中的作用与这一类中的所有其它值的作用相同,因而每个等价类 中只用一组数据作为代表进行测试来发现程序中的错误。用该方法设计测试用例 耩于g u i 的自动化测试框架的研究。j 实现 分两步:首先划分等价类,包括有效等价类和无效等价类,然后确定测试用例。 c ) 边界值分析法 是指针对程序输入域( 或输出域) 、数据结构、过程参数等的边界,选用f 好 等于、稍微小于和稍微大于边界值的数据设计测试用例,以检测程序在边界处的 处理是否恰当。因为处理边界情况时,程序最容易发生错误。j 下确掌握边界值分 析法,能够受到很好的测试效果。 d ) 因果图法 通过画因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表 的每一列设计一个测试用例。 e ) 错误推测法 错误推测法是其它方法的补充,没有规范的执行步骤,依靠测试人员的经验 和直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用 例。 2 3 软件测试过程 软件开发生存期( s o f t w a r ed e v e l o p m e n tl i f e c y c l e ) 是指在开发软件时要进行 的各种各样的活动。软件开发型三存期从确定软件开发需求开始到验证所开发出的 软件是否满足需求结束。根据这一思想,把上述的过程进一步展开,可以得到软 件开发生存期的六个步骤,即制定计划、需求分析、设计、编码、测试及运行维 护等阶段m l 。 通常认为测试是在软件编写完成后进行的,因为显然不能测试不存在的东 西。这种观点假设的测试仅仅是指测试执行。当然,如果没有软件运行,测试也 不可能执行。但需要指出的是,测试活动不仅仅只包括测试执行。软件开发生存 期的v 模型

温馨提示

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

评论

0/150

提交评论