




已阅读5页,还剩54页未读, 继续免费阅读
(计算机系统结构专业论文)基于net图形用户界面自动测试工具研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件测试是保证软件质量的重要手段,而图形用户界面( g u i : g r a p h i c a lu s e ri n t e r f a c e ) 是软件的重要部分,几乎占据应用程序5 0 的代码。其测试工作量大、烦琐、易出错,给测试带来了极大的困难 和挑战。 本文通过分析目前g u i 自动化测试工具的优缺点,研究当前的 自动化测试理论和技术,实现了一个基于n e t 自动化测试工具 a u t o t e s t 。该工具具有以下特点:第一,数据驱动测试。第二,以g u i 动作为核心生成事件序列,并程序化地生成测试用例。第三,自动验 证测试。通过使用晰n 3 2 a p i 函数、x m l 技术、以及n e t 的反射技 术、延迟绑定技术等,使得工具能够主动寻找g u i 部件并实现g u i 动作,自动生成测试用例并以x m l 文档保存测试数据,测试数据可 以驱动测试脚本的生成,执行测试和验证测试输出,报告错误,结果 数据也以x m l 文档形式保存。通过与商业测试工具w i n r u n n e r 的比 较分析了a u t o t e s t 的性能。 该工具可以作为功能测试和回归测试方面的辅助工具,这对于减 少手工测试的工作量和测试时间,缩短软件开发周期和提高软件质量 具有实际的意义和价值。 关键词软件狈蛇式,图形用户界面,测试工具开发,自动化测试 a bs t r a c t s o f t w a r et e s t i n gi sa l li m p o r t a n tm e a n sw h i c h1 5a b l et oa s s u r e s o f t w a r eq u a l i t y a n dg r a p h i c a lu s e ri n t e r f a c e ( g u i ) i sa i li m p o r t a n t p a r to ft h es o f t w a r e ,o c c u p i e sa l m o s t5 0p e r c e n to f t h ea p p l i c a t i o nc o d e s oi tb r i n g sh e a v yw o r k l o a dt ot h es o f t w a r et e s t i n g ,a n di ti sc u m b e r s o m e a n de r r o r - p r o n e ,b r i n g sg r e a td i f f i c u l t i e sa n dc h a l l e n g e st ot h et e s t t h i sp a p e ra n a l y s i st h ea d v a n t a g e sa n dd i s a d v a n t a g e so ft h e c u r r e n t l ya u t o m a t e dg u it e s t i n gt o o l s ,s t u d yc u r r e n ta u t o m a t e dt e s t i n g t h e o r ya n dt e c h n o l o g y , a n dr e a l i z et h ea u t o m a t e dt o o l a u t o t e s t t h e t o o lh a st h ef o l l o w i n gc h a r a c t e r i s t i c s :f i r s t l y , d a t a - d r i v e n s e c o n d l y , g u i a c t i o ni st h ek e yt og e n e r a t es e q u e n c eo fe v e n t s ,a n dg e n e r a t et e s tc a s eb y p r o c e d u r e t h i r d l y , a u t o m a t i c v e r i f i c a t i o n t e s t t h r o u g h t h eu s eo f w i n 3 2 a p if u n c t i o n ,x m lt e c h n o l o g y , a n d n e t - r e f l e c t i o n ,l a t eb i n d i n g t e c h n o l o g y , m a k e st o o l st ot a k et h ei n i t i a t i v et of i n dg u ic o m p o n e n t sa n d f i n i s h st h eg u ia c t i o n ,a u t o m a t i c a l l yg e n e r a t et e s tc a s e , s t o r e sd a t ai n x m ld o c u m e n t s t e s td a t ac a nd r i v et h et e s ts c r i p t sg e n e r a t e d ,i m p l e m e n t t e s t i n ga n dv e r i f yt e s t i n go u t p u t ,p r o d u c ew r o n gr e p o r t ,a n dt h er e s u l ti s s t o r e db yx m ld o c u m e n t s t h e nac o m p a r i s o ni sd r a w nb e t w e e nt h e c o m m e r c i a lt e s tt o o lw i n r u n n e ra n da u t o t e s tt oa n a l y z ei t sp e r f o r m a n c e t h i st o o l ,w h i c hc a nb eu s e df o r l ea s s o c i a t e dt o o li nf u n c t i o n t e s t i n ga n dr e g r e s st e s t i n g ,i sp r a c t i c a la n dv a l u a b l ef o rr e d u c i n gt h e w o r k l o a do fm a n u a lt e s t i n ga n dt e s t i n gt i m eg u a r a n t e e i n gt h es o f t w a r e q u a l i t ya n dr e d u c i n g t h es o f t w a r ed e v e l o pc y c l ea n de n h a n c i n gt h e s o f i v c a r eq u a l i t y k e yw o r d ss o f t w a r et e s t ,g u i ,t e s tt o o ld e v e l o p m e n t ,a t o m i z a t i o n t e s t 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不 包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我 共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。 作者签名:业 学位论文版权使用授权书 本人了解中南大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文并根据国家或湖南省有关部门规定送交学位论文, 允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内 容,可以采用复印、缩印或其它手段保存学位论文。同时授权中国科 学技术信息研究所将本学位论文收录到中国学位论文全文数据库, 并通过网络向社会公众提供信息服务。 月羔日 中南大学硕士学位论文第一章绪论 1 1 研究背景 第一章绪论 毫无疑问,在现代生活中,软件工业已经渗透到教育业以及其它的行业和企 业。几乎所有企业的产品开发,生产,市场,支持和服务等都依赖于软件行业。 减少软件开发的成本,提高软件质量,对于软件行业而言,至关重要。每个公司 在发布其产品之前,都在寻找更好的办法来实现软件测试,来提高软件的质量。 质量是软件产品的一项重要指标。为了保证产品的质量,不仅需要在软件过 程方面进行严格控制,而且需要对软件本身进行检测。在目前形式化方法和程序 正确性证明还无法成为实用性方法的情况下,软件测试在将来相当长的时间内仍 然是软件产品质量保证的有效方法【l l 。 早期的软件应用是命令行驱动的。用户记住并且输入命令,然后系统完成某 些功能。现在软件行业已经进入窗口时代,几乎所有的应用程序都是靠图形化用 户接口( g u i ,g r a p h i c a lu s e ri n t e r f a c e ) 来操作。据统计,图形用户界面的代码量 占整个软件代码量的5 0 左右【2 】,因此,对于整个软件系统的正确性而言,图形 用户界面的正确性是至关重要。为了确保软件的正确性,测试是最直接最有效的 手段。但是,正如每个测试人员和质量保证人员所了解的那样,测试并改正发现 的错误并不是一件简单的事情。因为随着软件规模的扩大和软件复杂度的提高, 对测试的要求也变得越来越高l l l 。特别是随着图形用户界面的出现和大规模的应 用,原有的软件测试和质量保证人员面临着很多全新问题和挑战。因此,人们开 始研究和实现自动化测试工具,欲通过自动化测试工具取代繁杂的手动测试,提 高软件的质量。原有的手工测试的缺陷可以概括成以下几点: ( 1 ) g u i 手工测试无法满足g u l 软件测试要求 传统的g u i 手工测试( m a n u a lt e s t i n g ) 方法虽然可以发现绝大部分软件缺 陷,但是发现的时间比较晚,往往是在b e t a 测试阶段,甚至已经交付给客户使 用时才发现问题。而缺陷发现越晚,修复就越困难,而且费用也越高 4 1 ,带来的 风险也就越大;另外,对于g u i 的手工测试,效率也是一个不得不考虑的因素; 同时手工测试过程本身同样会出现错误【6 】。 ( 2 ) 测试用例生成过程极其繁琐 具有输入输出图形化特点的g u i 软件系统使得传统的针对命令行提示符 应用的测试用例生成方法无法应用于g u i 软件测试用例的生成过程。因此,业 界目前普遍采用的基于捕拟回放( c p ,c a p t u r e p l a y b a c k ) 机制的测试用例生成 中南大学硕士学位论文第一章绪论 方法,该方法虽然有一定的针对性,但测试用例生成过程要求大量的人机交互, 并且每一步操作都要求极高的正确性。产生一个简单事件的测试用例大约需要花 费2 0 至3 0 分钟时间。对于一个中等规模的软件,要达到一定的测试覆盖率,至 少需要开发3 0 0 个左右的测试用例。因此要实现基于c p 的自动化测试所花费 的代价很昂贵,并且被测程序稍有改动,原来设计的测试用例就有无法运行的可 能。因此测试用例生成过程的繁琐是显而易见的。 ( 3 ) 测试数据生成和维护极其复杂 针对包含g u i 的软件系统的被测元素种类繁多、测试序列复杂等特性,基 于传统的测试数据生成方法无法应用于g u i 软件测试数据生成过程。业界普遍 采用的捕捉回放( c p ,c a p t u r e p l a y b a c k ) 机制的测试工具中,测试数据与测试 脚本之间的紧耦合关系使得测试数据的生成和维护极其复杂。 ( 4 ) 测试执行过程要求高 针对g u i 的测试执行过程实际上是测试脚本在被测g u i 上的执行过程, 因为测试脚本包含着测试用例和与之对应的期待结果,基于捕捉回放机制生成 的测试脚本是基于场景的,不仅脚本可读性差,调试复杂,更重要的是脚本维护 困难,一个微小的错误都会导致测试执行过程无法正常执行,并且测试脚本的可 重用性极差。 ( 5 ) 测试结果的验证过程效率低、出错率高 目前的测试工具对测试结果的验证过程的支持是非常有限的,所以测试人员 往往需要在测试执行完毕后手动去验证测试结果的正确性,这样做不仅效率低, 而且会产生很多人为的错误,无法有效地发现被测g u i 软件系统潜在的缺陷。 本课题正是作者通过分析以上几个方面的原因,为提高国内软件测试水平和测试 工具开发能力的目的而自选的题目。 1 2 国内外研究现状与水平 国外软件测试相当成熟,在软件业发达的国家,软件测试早已成为软件开发 一个重要组成部分。在整个软件开发的系统过程中占据相当的大的比重,如微软 的软件开发工程师和测试工程师的比例是l :2 ,而我国是6 :1 。在自动化测试 方面,国外有很多可用的自动化工具,如i b m 的r a t i o n a l ,w i n r u n n e r , s e g u e s s i l k t e s t 等国内自动化工具起步比较晚。 作为软件系统的前端,g u i 提供给用户可视化的与系统交互的接口,大大 简化了操作的复杂度。与此同时,它也给g u i 的软件测试带来的挑战。对于 g u i 测试,国内外研究者取得一些成果 2 中南大学硕士学位论文第一章绪论 1 国外研究情况 国外对面向g u i 软件测试的自动化的研究主要包括: ( 1 ) a t i fm m e m o n 提出了使用基于事件的覆盖准则【7 】。核心思想是以 g u i 软件的某个测试用例所包含的事件和相互之间的交互作为功能覆盖标准, 由于g u i 软件的事件序列经常是天文数字,它提出将g u i 划分为g u i 控件 ( g u ic o m p o n e n t s ) ,每个g u l 控件由事件流图( e v e n t - f l o wg r a p h ) 表示,再结 合g u i 控件内事件覆盖准则和g u i 控件之间的覆盖准则,使得以事件序列描 述测试用例成为可能。 ( 2 ) w h i t el 介绍了一种将拉丁方应用到图形用户界面测试中的方法1 1 2 】, 有效地减少了测试用例的数量,然而该方法假定对象之间的交互是成对出现的, 这就具有一定的局限性。 ( 3 ) s h e h a b y 和s i e w i o r e k 介绍了一种基于有限状态机的g u i 软件测试 方法【l l 】,该方法通过减少状态达到简化测试的目的。 ( 4 ) a t i f m m e m o n 还介绍了一种将人工智能划分技术应用到g u l 软件测 试用例生成中【1 3 1 4 】的方法,但这种测试方法在g u i 测试过程中的适应性和可操 作性较差。 2 国内研究情况 国内对面向g u i 软件测试的自动化的研究主要包括: ( 1 ) 杨凡德,李小将等在w i n d o w s 系统下用v c + + 开发的,能够适用于以 c ,e h 开发的g u i 系统测试【删。该工具可实现g u i 系统的正确性测试、回归 测试和资源消耗测试。该工具和目前的g u i 测试软件相比,提供了多种获得测试 脚本的手段,可有选择地获得被测系统的执行信息,且可支持系统资源消耗测试。 ( 2 ) 浙江大学的杜栓柱针对具有图形用户界面( g u i ) 且进行事务处理软 件系统的测试,从界面构件间关联特征出发,提出了界面构件关联图【鲫,描述界 面中各个构件之间相互联结、制约关系,进而提出了基于界面构件关联图的软件 测试覆盖准则和测试用例生成方法。 ( 3 ) 北京航空航天大学的刘超教授提出一种程序交互执行流程图p i e f ( p r o g r a mi n t e r a c t i v ee x e c u t i o nf l o wc h a r t ) 1 4 ,用以描述交互式软件的各种可能 的交互执行过程,基于被测程序的交互执行流程图,进一步提出了测试的若干基 本的测试覆盖准则、测试用例生成策略及其自动化方法。 综上所述,针对当前广泛使用的g u i 系统从不同的角度建立的测试自动化 实现的方法,对面向g u i 的自动化测试的研究起到了积极的推动作用。但是以 上的这些测试用例生成方法、测试框架还是存在很大的不足: ( 1 ) 测试用例的获取还是依赖于软件与其运行环境之间的界面 3 中南大学硕士学位论文第一章绪论 ( 2 ) 测试脚本与测试数据之间属于紧耦合,因此测试数据和测试脚本的维 护困难。 ( 3 ) 对于测试结果的验证机制研究不够。 ( 4 ) 测试人员分析测试执行过程出错困难。 1 3 研究的目的和意义 本课题是利用c 撑开发g u i 自动化工具a u t o t c s t 。a u t o t e s t 是一种主动的g u i 测试方法,它是建立在手工测试的经验之上,结合探索性测试中得到的知识创建 测试数据库。并使用测试数据驱动脚本生成,运行测试,报告错误。 a u t o t c s t 能够对被测应用进行g u i 收索,然后将g u i 的属性收集到数据存 储器中。在存储器中同时生成测试值。而且为测试人员提供接口浏览和修改这些 数据,在测试人员确定了数据后,工具将数据存入存储器,该存储器独立于测试 脚本。这样,测试脚本的生成和运行将是由数据驱动的过程,克服了以前g u i 测试工具的捕捉回放来生成测试脚本。另外,可以对本工具进行一定的完善以 后,可以投入市场推广使用。 1 4 论文的内容结构 论文结构分成五章,包括g u i 自动化测试的总体概述,基于n e t 的g u i 自动化测试框架,g u i 环境下的实现,以及结合新技术探讨对自动化测试工具 的设计及其在n e t 自动化测试的未来展望 第一章说明了选题的背景和意义,介绍了本文的主要研究工作。 第二章介绍了自动化测试相关的概念,方法和步骤。 第三章给出了基于n e t 的g u i 自动化测试解决方案。包括测试用例和测试 脚本的生成、测试结果验证的方法和基于n e t 的g u i 自动化测试工具的关键开 发技术。 第四章根据所提出的解决方案和关键技术,给出了测试工具a u t o t c s t 的总体 设计和模块设计。 第五章总结了本文的主要工作,并且提出了下一阶段的工作展望。 4 中南大学硕士学位论文第二章自动化g u l 测试及相关理论 第二章g u i 自动化测试与相关理论 2 1 软件测试基本知识 软件测试就是在软件投入运行之前,对软件的需求分析、设计、实现编码进 行最终审查。软件测试是软件质量保证的重要手段和根本方法,它在软件开发过 程中的重要性是不言而喻的。在现代工程理论中,测试工作已经不仅仅是故障检 测,而是一项集质量控制、风险识别、b u g ( 缺陷) 管理、开发过程驱动、有效 性验证于一体的系统化工程。 2 1 1 软件测试的定义和目的 软件测试的研究可以追溯到六十年代,发展至今已有四十多年的历史,但对 软件测试的理解长期以来存在着不同的观点。下面列出一些比较典型的观点。 1 9 8 3 年i e e e 定义f 5 】:使用人工或自动手段来运行某个系统的过程,其目的 在于检验它是否满足规定的需求或是弄清结果与实际结果之间的差别。这个定义 非常明确地提出了软件测试以“检验是否满足需求 为目标。 g l e nm y e r s 的定义【7 】:软件测试是为了发现错误而执行程序的过程。或者说, 软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批 测试用例( 即输入数据和预期的输出结果) ,并利用这些测试用例去运行程序, 以发现程序错误的过程。该定义明确指出“寻找错误一是测试的目的。 国家标准g b t 1 1 4 5 7 1 9 9 5 的定义:由人工或自动方法来执行或评价系统或 系统部件的过程,以验证它是否满足规定的需求;或识别出期望的结果和实际结 果之间有无差别。 早期的软件定位指出软件测试的目的是寻找错误,并且尽最大的可能找出最 多的错误。 g r e n f o r dj m y e r s 就软件测试目的提出了以下观点【l l : 测试是程序的执行过程,目的在于发现错误; 一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 b i l lh e t z e l 提出了测试目的不仅仅是为了发现软件缺陷与错误,而且也是对 软件质量进行度量和评估,以提高软件的质量。 测试的目的,是想以最少的入力、物力和时间找出软件中潜在的各种错误和 缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件 5 中南大学硕士学位论文第二章自动化g u i 测试及相关理论 缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质 量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择与接受 软件提供有力的依据。 2 1 2 软件测试的关键技术 1 黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能, 通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打 开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下。测试者在程序接 口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序 是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息( 如数据 库或文件) 的完整性。黑盒测试方法主要有等价类划分、边值分析、因一果图、 错误推测等,主要用于软件确认测试。“黑盒”法着眼于程序外部结构、不考虑 内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试, 只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的 错误。 2 白盒测试 自盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通 过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部 的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不 顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。 “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷 举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序 的逻辑着手,得出测试数据。 2 2g u i 测试概述 2 2 1g u i 定义与相关概念 定义:图形用户界面( g u i ) ,是软件系统的层次化、图形化的前端,它从 固定事件集中接受用户产生、系统产生的事件作为输入,并生成确定性的图形化 输出结果【1 7 1 。 g u i 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分 析的人机系统工程,强调入机环境三者作为一个系统进行总体设计。这 6 中南大学硕士学位论文第二章自动化g u i 测试及相关理论 种面向客户的系统工程设计的目的是优化产品的性能,使操作更人性化,减轻使 用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。 w 1 m p 是g u i 的四要素,w ( w m d o w ) 指窗口,i ( i c o n s ) 指图符,m ( m e n u ) 菜单,p ( p o i n td e v i c e s ) 鼠标等【1 9 1 。g u l 支持的是与应用无关的通用接口元素, 如菜单、对话框等。 g u i 的交互过程极大地依赖视觉和手动控制的参与,具有以下特点: ( 1 ) 直接操作性。g u i 中包括菜单、命令按纽、下拉列表、工具栏、滚动 条等图形控件,由于g u i 以这些图形代替复杂难记的命令语法,用指点和选取 代替键盘输入,因此操作起来简便快捷。 ( 2 ) 具有高度交互性。由于操作结果立即可见,并看到系统的响应,用户 能及时知道自己的操作,从而能及时纠错。 ( 3 ) 多文档界面。一个窗体中可能包含若干个子窗体,不同窗体中又含有 若干其它图形对象。 ( 4 ) 采用事件驱动的方式。用户通过鼠标选择、键盘输入、打开关闭窗体 等事件与系统发生交互,而且用户可以以多种顺序引发交互事件。一个有效的事 件会引起相应的处理,处理的结果可能会引起系统的状态发生改变。 在对g u i 测试时,有以下几个关键概念: ( 1 ) g u i 的状态( s t a t e ) 。一个g u i 状态是指它包含的所有对象的所有属性 的集合。一个g u i 由若干分等级的窗体组成,而一个窗体里面包含有若干个相 对独立的功能的部件。每个部件有许多属性( p r o p e r t y ) ,这些属性控制着包括部 件位置( p o s i t i o n ) 、大小( w i d t h ,l e n g t h ,h i g h t ) 、颜色( c o l o r ) 、可见性( v i s a b i l i t y ) 等许多方面。每个属性的变化都会导致整个g u i 系统的状态的变化,所以哪怕 有一个部件的一个属性不同,g u i 的状态也是不同的。 ( 2 ) g u i 的事件( e v e n t ) ,用户与g u i 系统的交互是通过触发事件来完成 的。g u i 事件是指对g u i 的执行的动作。一个事件的执行结果是使得g u i 系统 由一个前提状态到达一个结果状态。 ( 3 ) 测试点( t e s tp o i n t ) 也就是通常所说的检查点( c h e c k p o i n t ) ,它存储 的是某个特殊状态的期待结果。如前面g u i 状态的描述,一个g u i 状态是指它 所包含的所有对象的所有属性的集合。为了测试需要,有时候,测试人员往往只 关心某一个或者某几个g u i 对象的某一个或者某几个属性,那么测试点的内容 就比较简单,有时候,测试人员需要对某个事件执行后的系统状态进行全面检查, 这就要求测试点包含较多内容对g u i 对象进行识别时,需要使用下面六个属性: 句柄,它是一个整数型。每个g u i 对象在实例化以后都会有唯一的一个 句柄值,当需要查找某个g u i 对象的时候,就可以通过句柄值得到g u i 对象的 7 中南大学硕士学位论文 第二章自动化g u i 测试及相关理论 其它属性,从而搜索到需要的g u i 对象。不同的对象,句柄值是不相同的,因此 在g u i 测试脚本中,不能将句柄值进行硬编码。 标题,它是一个字符串。标题是g u i 的一个确定的名称,也可以说是g u i 部件的显示文本。大多数情况下,标题是可以被用户肉眼直接看到的,例如打开 记事本程序时,它的w i n d o w s 的标题是“无标题记事本 标题是帮助程序准确 识别一个g u i 部件的最重要的属性之一。它比句柄值容易记忆和理解。 父文本,同样是一个字符串。一般来说,g u i 是分等级的,一个应用由主 窗体和多个子窗体组成。除了主窗体之外,每个窗体都有自己的父窗体,也有可 能有自己的子窗体。父文本即父窗体的标题文本。当父文本已知时,可以缩小 g u i 部件的搜索范围,从而可以更加精确、更加快速地识别对象。 类名,也是一个字符串。每个g u i 对象都是属于某个有名字的类。当类 名变量已知时,类名可以大大增加精确识别g u i 对象的几率。尤其是当需要对 某些具有相同标题的对象进行识别的时候,类名是非常有用的一个属性。 控件名称,一个字符串。与标题不同的地方在于,标题的作用是对象本身 的功能性说明,而控件名称则是对象本身的一个代号。 控件类型,控件类型类似于类名,它们的主要区别在于,控件类型是控件 这类特殊g u i 对象的类型,而类名泛指g u i 对象的类型。 对于g u i 对象的识别。所用的属性并不是固定的,通常是这些属性的组合。 2 2 2g u i 测试内容 软件是为了满足用户需求而诞生的产物,无论是操作系统、游戏软件还是其 它类型的应用软件。g u i 测试就是黑盒测试,不需要深入研究其内在结构,而是 “表面化”地使用软件,从输入输出的信息内容中寻找可能的错误和纰漏。总体上 讲,g u i 测试主要考虑以下几个方面: ( 1 ) 功能性:实现软件应具备的基本功能。 ( 2 ) 易用性:用户学习掌握该软件所耗费的时间及在具体业务流程上的简 化。 ( 3 ) 执行速度:多数是启动速度,查询速度,刷新速度及响应时间等因素。 ( 4 ) 用户使用时产生错误的比率:在允许用户任意使用的情况下,产生错 误的比率越少越好。 ( 5 ) 用户满意度:这里指的是用户界面设计与功能设计的用户评价。 本文主要考虑g u i 功能测试。功能测试更适合于自动化测试,它不基于内 部设计和代码的任何知识,而是基于需求和功能性。它是通过输入不同的数据序 列后得到应用的回馈来检测该应用程序是否具有功能完备性。传统的g u i 功能 测试方法是按照设计和生成的测试用例,利用手工输入进行测试,但现在随着软 8 中南大学硕士学位论文 第二章自动化g u i 测试及相关理论 件产品功能越来越复杂,一个软件产品包含一系列丰富的用户界面,每个界面又 包含丰富的对象元素,因此对g u i 的功能测试要由自动化测试工具进行,本文 关于g u i 自动化测试工具的研究主要是对g u i 进行自动化黑盒测试的研究。 在g u i 时代以前的自动化测试软件,测试者使用若干行命令作成测试脚本, 程序的运行与屏幕状态无关。测试g u i 部件与此不同,而且困难很多,它需要 脚本重新分配输入流,单击按钮,移动箭头,还要击键。脚本还需要专门的机制 用于记录软件的响应和动态状态的变化。将响应与变化与预期基线进行比较之 后,脚本可以报告错误。 2 2 3 测试用例 测试用例( t e s tc a s e ) 目前没有统一的定义。比较通常的说法是:指对一项 特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容 包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形 成文档。要对g u i 进行测试,就要执行该g u i 的事件序列。 定义:一个合法的g u i 事件序列e l ;e 2 ;e 3 ;e n ,其中e i + l ( o i n ) 可以紧跟c i 执行。 定义:g u i 测试用例t ( s o ;e l ;e 2 ;e s ;e l i ) ,其中s o 是对t 的初始状态, c l ;0 2 ;e 3 ;e n 是一个合法的g u i 事件序列。 因此,g u i 测试用例是一个合法的g u i 事件序列的组合,通过执行这些事 件序列可以实现一些g u i 动作,从而改变c u i 的状态。如果测试用例t 中指定 的初始状态s o 是不可达的或者事件序列e l ;e 2 ;e 3 ;e n 是不合法的,那么t 是不可 执行的。 设计测试用例是测试工作的重要组成部分,好的测试用例能更快、更准确地 发现缺陷,从而节省测试人员的时间。一般说来,好的测试用例都具备以下特征: ( 1 ) 好的测试用例是极有可能抓住软件缺陷的测试用例; ( 2 ) 好的测试用例不是重复和多余的: ( 3 ) 好的测试用例是一组相似测试用例中最有效的; ( 4 ) 测试用例不要太简单,也不要太复杂。 2 3g u i 自动化测试 2 3 1 自动化测试优势 传统测试是通过手工对应用程序进行随意地使用来进行测试的。对于测试人 员来说,这样很容易上手,但这种方法无法预见应用程序的问题所在,重复性较 9 中南大学硕士学位论文 第二章自动化g u i 测试及相关理论 差,而且受人为因素影响很大。另外也有使用一系列预先设定好的手工的操作程 序来替代随意的操作。但在这种情况下的测试也存在一些弊端,首先仍然无法避 免测试人员的工作本身产生错误;此外,测试人员按照确定的顺序去执行操作, 不断重复的工作很繁琐,同时增加了劳动强度,花费昂贵。而自动测试不需要人 为的干预来执行一系列的动作。这种方法帮助消除人为的错误并且可以更快地产 生结果。尽管自动测试在测试过程的初期需要花费比人工测试更多的时间和精 力,但随着测试的深入,这些付出与其效果相比是非常微小的。因此可以认为自 动测试实际是通过较少的开销获得更彻底的测试,最终提高软件产品的质量。自 动测试还有如下好处: ( 1 ) 对程序的新版本运行已有的测试( 回归测试) 。这是自动测试最主要的 用途,特别在频繁修改许多程序的环境中,使用在程序的上一个版本上已经运行 过了的自动测试程序,可以使测试工作快速进行,减小测试的开销。 ( 2 ) 可以执行一些手工测试困难或不可能做的测试。例如对于多用户联机 系统的并发操作的测试,用手工进行几乎是不可能的,但自动测试工具可以模拟 来自多个用户的输入。而客户端的测试过程通过自定义得到用户脚本,自动回放 测试。使不了解整个商业应用复杂内容的技术人员也可以胜任。 ( 3 ) 更好地利用资源。将繁琐的任务自动化,如重复相同的测试输入,可 以提高准确性,将测试人员解脱出来投入更多精力设计更好的测试用例。并且, 还可以利用整夜的或周末空闲的机器执行自动测试。 ( 4 ) 测试具有一致性和可重复性。自动测试可以重复多次相同的测试( 至 少输入相同,由于时间输出可能不同) 。这样就可以获得测试的一致性,这在手 工测试中是很难保证的。有些测试可能在不同的硬件配置下执行,使用不同的操 作系统或不同的数据库,此时要求多平台产品的跨平台质量的一致性,这在手工 测试情况下更不可能做到。 ( 5 ) 解决测试与开发之间的矛盾。通常在开发的末期,进入集成测试阶段由 于每发布一个版本的初期,测试系统的错误比较少,这时开发人员有等待测试人 员测试出错误的时间。事实上在叠代周期很短的开发模式中,存在更多的矛盾, 但自动化测试可以解决其中的主要矛盾。 ( 6 ) 增加软件信任度。自动化测试的目的在于能够消除手工测试中人为的 错误,加快测试循环,有效利用资源,提高工作效率。同时,使测试具有一定的 规范性,提高测试的可重复性。前面已经提到,g u i 测试如果采用手工测试,或 编制一些简单的测试程序进行测试的话,既耗时间又不规范,正因为如此,给 g u i 软件的测试带来了极大的困难和挑战。更大的隐患在于将软件分发给用户使 用时,常常会发生问题,严重时导致系统瘫痪。所以g u i 测试要尽可能地采用 1 0 中南大学硕士学位论文第二章自动化g u i 测试及相关理论 自动测试。 2 3 2g u i 测试的步骤 图2 1 表示了g u i 自动化测试所需要的几个步骤: 厂、 l 开始 ) l 确定测试需求 土 生成测试用例 上 确定预期输出 土 执行测试 上 验证输出 上 确定测试是否充分 上 回归测试 l 上 ( 结束 ) 图2 - ig u i 自动化测试步骤 ( 1 ) 确定测试需求。不同的自动化测试者在测试时存在着目标偏差。为了 避免这种情况,需要在自动化测试需求上保持一致。应该有一份自动化测试需求, 用来描述需要测试什么。测试需求应该在测试设计阶段详细描述出来,自动化测 试需求描述了自动化测试的目标。 ( 2 ) 生成测试用例。测试用例是g u i 测试重要的组成部分它是根据软件 的规格说明以及软件机构来生成。对于g u i 软件,测试用例包括用户事件,如 鼠标单击,菜单选择,文本输入和其它g u i 操作 中南大学硕士学位论文第二章自动化g u i 测试及相关理论 ( 3 ) 生成预期的测试输出。预期的输出是用于判断软件在测试过程中运行 结果是否正确的,即需要判断软件实际输出是否与预期输出一致。在g u i 软件 中,预期的输出包括屏幕截图、g u i 对象的属性等。 ( 4 ) 执行测试用例和验证输出。对软件执行测试用例,把运行的输出与预 期的输出比较。在g u i 软件中,执行检查的过程就是执行测试用例指定的输入 事件,将输出的实际结果与预期结果进行比较。 ( 5 ) 确定g u i 软件是否已经充分测试。一旦所有的测试用例在软件中执行 完毕,就要分析软件,确认软件的哪些部分已经测试。在g u i 软件中,软件的 测试需要此类分析来辨别测试过的和未测试的事件以及g u i 测试状态。测试以 后,对发现的缺陷进行修正。 ( 6 ) 执行回归测试。回归测试用于确保软件修改部分的正确性,确保修改 没有恶意地影响以前测试过的部分。回归测试包括;原有测试用例的一个子集( 用 于测试原有软件受到修改影响的部分) ;新的测试用例( 用于测试软件中受到修 改影响但是未被原有测试用例测试到的部分) 。在g u i 对象设计的改变,选择需 要重新运行的测试用例和产生新的测试用例。 2 4 本章小节 本章介绍了黑盒测试、白盒测试等软件测试基本理论。并从概念、测试内容、 测试用例入手,重点分析g u i 测试的特点。最后针对g u i 自动化测试的特点, 分析g u i 自动化测试的优势,给出g u i 自动化测试的步骤。为接下来g u i 自动 化测试的框架设计奠定理论基础。 1 2 中南大学硕士学位论文第三章g u i 自动化测试框架设计 第三章g u i 自动化测试框架设计 3 1g u i 自动化测试目标 引入了g u i 自动化测试,并不意味着成功的实施自动化测试。而且大量的 实践证明,绝大多数的测试工具使用流行的捕获回放方法记录脚本。测试工程 师们花大量的时间来捕获脚本,然后编辑被记录的测试脚本。假如测试脚本不能 运行,还要调试脚本。最终,工具使用者没有足够的时间来编写有效的测试用例, 从而无法运行测试脚本发现错误。 使用捕获回放模型进行g u i 测试时是有局限的,因为测试直接和用户界面 一起工作,几乎在g u i 上的任何变更都意味着每个使用了这部分g u i 的测试都 需要变更。另外,如果有一些大多数测试都必须执行的通用操作( 例如,登录) , 那么每个测试都必须包括这些步骤。最后,由于在测试中嵌入了所有的测试数据, 任何一个细小的变更,测试人员都必须重新编辑测试代码。同时测试系统的日常 维护也变得非常困难。 上面分析当前测试工具在测试自动化方面的局限性,目的在于探讨一种新的 改进的测试方法,创建完全自动化的测试。 在第一章中提到捕获回放过程,在实际应用中会存在许多问题,为了解决 这些问题,g u i 自动化测试工具应该具备以下特性: ( 1 ) 测试脚本语言与开发被测应用的语言相同 用户无需手工单击鼠标,按键盘和记录测试脚本。这样测试不仅可以在测试 者的系统中运行,也可以在开发者的系统运行。同时测试工具和被测应用使用同 种语言,使得测试项目更加可读和易于维护,从而可以增加测试者和开发者之间 的沟通与合作。 ( 2 ) 软件测试的管理非常容易 工具可以主动寻找g u i 部件,编写测试脚本,实现测试的最大化,减少测 试脚本生成的冗余。测试脚本具备通用性,能够在最大数目的测试用例中进行测 试。 ( 3 ) 回归测试可以完全自动化 测试运行是测试过程中最机械,重复和死板的一部分,有了测试工具,回归 测试过程可以在无需人工干涉的情况下昼夜运行 ( 4 ) 测试结果将使用人们广泛接受的格式报告和存储 例如可以选择流行的电子表格程序e x c e l 、x m l 文档或h t m l 格式来存储 1 3 中南大学硕士学位论文第三章g u i 自动化测试框架设计 测试结果。当发现错误时,报告可以在源代码中指出问题。用户不需要培训可以 理解和使用该报告改正错误。 ( 5 ) 开发完成的工具拥有开放的体系结构 计算机科学一直在快速地发展,因此测试工具也应具有快速更新的能力。工 具应该易于修改和升级,便于扩展测试功能,具有高度的可维护性,可靠性和高 查错效率。这样,工具总能够跟上技术的进步,满足软件项目的复杂性要求。工 具也可以识别第三方的g u i 部件、定制的控件以及测试数据和脚本生成中的一 般对象。 3 2g u i 自动化测试实施的策略 越来越多的测试人员意识到捕获回放工具不是自动化工具,要开发自己完 全自动化测试工具应该具备以下几条策略: ( 1 ) 工具能够主动搜索g u i 部件 在g u i 搜索过程中,要使用a p i 实现函数来模拟鼠标和键盘的动作。映射 技术能够拆分被检查的g u i 部件,延迟绑定技术可以调用与g u i 事件有关的成 员。这样可以快速的生成测试数据和脚本。 ( 2 ) 使用抽象层 在被测试应用程序和生成的测试脚本之间添加一个抽象层,它可以将程序界 面中存在的所有对象实体映射成逻辑对象,测试就可以针对进行,而不是依 赣于接口上元素的变化。这样当程序界面改变时,就可以大大减少测试维护工作 量。例如,要测试一个用户登录的界面,一般登录界面包含用户名和密码字段, 在开发程序过程中,编程人员命名这些字段为 n a m e 和“p a s s w o r d ”。可以创建一 个抽象层,用两个字段标识 n a m e 和“p a s s w o r d ,并且在所有的5 0 0 个测试中都 使用这些标志符。但是随着所测试软件下一个版本的出现,名称和密码字段的 标志符变成了 u s c l - n a m e ) 和 p w o r d ,因为存在抽象层标识,只要修改一次标识, 即在抽象层中更改相应的g u i 标志符,而不需要在所有的5 0 0 个脚本中都做更 改。 ( 3 ) 创建g u i 测试库 开发测试脚本的目的是程序化地模拟用户,如选择菜单选项、单击按钮、输 入文本和数字等。编程语言所提供的不同g u i 控件可以供开发人员在软件应用 中使用。首先,把一般的测试脚本加入测试库,如鼠标移动,单击,双击等。为 了实现完全自动化测试,可以向测试库添加测试脚本以满足用户的需求,包括验 证代码、有效性验证代码和演示代码。 1 4 中南大学硕士学位论文第三章g u i 自动化测试框架设计 ( 4 ) 测试脚本可重用性 在开发测试工具时,实现可重用性非常重要的。这些测试脚本能够在将来的 项目中使用,这样测试脚本从一个项目迁移到另外一个项目中,从而实现了测试 工具从一个项目到另外一个项目的重用和升级。 ( 5 ) 自动验证测试 在工具收集了验证数据之后,不需要对测试脚本进行事后的编辑和调试工 作。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生暴雨考试题及答案
- 前置胎盘考试题及答案
- 铁路维修考试题及答案
- 教师资格证面试题及答案
- 日语试题试卷及答案
- 税法总论考试题及答案
- 2025年广东省合成氨工艺操作证理论考试练习题库(含答案)
- 2025年阜阳市颍泉区选调区内教师考试笔试试题(含答案)
- 2025年达州市大竹县城区学校考调教师笔试试题(含答案)
- 2025年注册会计师模拟题和答案分析
- 数学集体备课汇报展示
- 食品生产企业采购管理制度
- 2025年养老护理员职业资格技师培训试题(含答案)
- 《鸿蒙应用开发项目教程》全套教学课件
- 四川省广安市2024-2025学年高一下学期期末考试数学试题(含答案)
- 电缆测试技术课件
- 政协大走访活动方案
- 个人养老金课件
- 2025至2030中国氧化钪行业需求状况及未来趋势前景研判报告
- udi追溯管理制度
- 新能源产业园区厂房物业管理及绿色能源应用合同
评论
0/150
提交评论