(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf_第1页
(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf_第2页
(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf_第3页
(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf_第4页
(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

(通信与信息系统专业论文)基于自动化测试gui开源库的研究与实现.pdf.pdf 免费下载

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

文档简介

m st h e s i so f 2 0 1 0 u n i v e r s i t yc o d e :10 2 6 9 r e g i s t e r n u m b e r :5 10 712 0 2 0 38 eastch i nanor ma l u n i v e r s i t y r ese a r c ha n d i m p l e m e n t a t i o nf o rt h e a u t o m a t i o ns y s t e mo p e ns o u r c el i b b a s e dg u i t e s t i n g d e p a r t m e n t :e l e c t r o n i cs c i e n c e & t e c h n o l o g y m a j o r : c o m m u n i c a t i o n & i n f o r m a t i o ns y s t e m s p e c i a l t y :c o m m u n i c a t i o n & i n f o r m a t i o ns y s t e m s u p e r v i s o r :! q 鱼墨墨q i n g 垒ql i 坠 s t u d e n tn a m e : 鱼坠q g 坠垒n g ! _ u a p r i l2 0 1 0 华东师范大学学位论文原创性声明 l i i iiiii ii i i iii i ii ii il 17 4 3 2 6 2 郑重声明:本人呈交的学位论文苍于目棚舻淄呦珈商弘怫与弛, 是在华东师范大学攻读砭硅博士( 请勾选) 学位期间,在导师的指导下进行的研究工作 及取得的研究成果。除文中已经注明引用的内容外,本论文不包含其他个人已经发表或 撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说 明并表示谢意。 作者签名: e l 期:2 刀p 年夕月2 华日 华东师范大学学位论文著作权使用声明 葛静曲弘辋,审i 鸱比i 静萝研究弓索乱 系本人在华东师范大学攻读 学位期间在导师指导下完成的硒壬博士( 请勾选) 学位论文,本论文的研究成果归华东 师范大学所有。本人同意华东师范大学根据相关规定保留和使用此学位论文,并向主管 部门和相关机构如国家图书馆、中信所和“知网”送交学位论文的印刷版和电子版;允 许学位论文进入华东师范大学图书馆及数据库被查阅、借阅;同意学校将学位论文加入 全国博士、硕士学位论文共建单位数据库进行检索,将学位论文的标题和摘要汇编出版, 采用影印、缩印或者其它方式合理复制学位论文。 本学位论文属于( 请勾选) ( ) 1 经华东师范大学相关部门审查核定的“内部”或“涉密 学位论文木, 于年月 日解密,解密后适用上述授权。 ( 、) 2 不保密,适用上述授权。 导师签名本人签名于国1 轧本人签名望! 刭型 冽口年厂月二b 日 宰“涉密”学位论文应是已经华东师范大学学位评定委员会办公室或保密委员会审定过的学位 论文( 需附获批的华东师范大学研究生申请学位论文“涉密”审批表方为有效) ,未经上 述部门审定的学位论文均为公开学位论文。此声明栏不填写的,默认为公开学位论文,均适用 上述授权) 。 王国迸硕士学位论文答辩委员会成员名单: 姓名职称单位备注 薛燕陵教授华东师范大学信息 学院通信工程系 主席 刘一清高级工程师华东师范大学信息 学院通信工程系 王蔚生副研究员华东师范大学信息 学院通信工程系 摘要 现如今,计算机与网络的发展形势越来越快,计算机和人们生活的各个 方面已经是密不可分。计算机软件的开发也就显得越来越重要、软件开发的 速度也越来越快,对软件质量和功能的要求也越来越高,因此人们也越来越 关注如何能保证软件的质量问题,软件测试恰好能很好的保证开发的产品能 够最大限度的满足用户的需求,满足开发的功能需求。 自动化测试的出现则是可以将繁琐的手动测试任务自动化,可以提高测 试的准确性和测试人员的积极性,将测试人员从繁琐的测试任务解脱出来, 以便投入更多精力设计更好的测试用例。 图形用户界面g u i ( g r a p h i c a lu s e ri n t e r f a c e ) 的出现是软件发展历程中 一个重要的里程碑,它给软件系统的使用者带来了方便。与此同时,它也给 软件测试人员带来了全新的挑战。图形用户界面是软件系统使用者同系统本 身进行交互的接口,系统的功能是通过用户对图形用户界面的操作来调用 的,系统产生的结果也是通过它反馈给用户的。本文主要研究的就是基于自 动化测试g u i 开源库的研究与实现。它主要是针对当前图形用户界面自动 化测试如此的不方便应运而生的,因此将这部分手动的g u i 操作自动化变 得越发的有意义。 本人参与设计的这套自动化测试g u i 库可以直接操作g u i 标准控件, 并且在公司组内已经得到了广泛的使用,具有一定的实用性和鲁棒性。 关键词:自动化测试、图形用户界面g u i 、开源库。 a b s t r a c t n o ww i t ht h ef a s td e v e l o p m e n to fc o m p u t e ra n dn e t w o r k ,t h ec o m p u t e rb e c o m e sa n i n t e g r a lp a r to fp e o p l e sl i v e s t h es o f t w a r ed e v e l o p m e n tw o r kb e c o m e sm o r ea n dm o r e i m p o r t a n ta n dt h es p e e do fs o f t w a r ed e v e l o p m e n ta l s ob e c o m e sf a s t e ra n df a s t e r a tt h e s a m et i m e ,t h er e q u i r e m e n t sf o rt h eq u a l i t ya n df u n c t i o n a l i t yo ft h es o f t w a r eb e c o m eh i g h e r a n dh i g h e rs op e o p l ea r ec o n c e r n e do nt h e s ei s s u et h a th o wt og u a r a n t e et h eq u a l i t yo ft h e s o f t w a r e s o f t w a r et e s t i n gc a nb ea b l et og u a r a n t e et h a tt h ep r o d u c t sc a ns a t i s f yt h e r e q u i r e m e n t sf r o mc u s t o m e r s n o wa u t o m a t i o nt e s tc a nr e p l a c et h et e d i o u sm a n u a lt e s t s ,a n di tc a ni m p r o v et h e a c c u r a c yo ft h et e s tr e s u l ta n dt h ee n t h u s i a s mo ft h et e s t e r t h e nt h et e s t e rc a nd oo t h e r t h i n g si n c l u d i n gt od e v e l o po t h e rn e wt e s tc a s e g r a p h i c u s e ri n t e r f a c e ( g u i ) i sa ni m p o r t a n tm i l e s t o n ei nt h ep r o c e s so ft h e s o f t w a r ed e v e l o p m e n t ;i tb r i n g st h ec o n v e n i e n c et ot h eu s e lb u ta tt h es a m et i m e ,i ti sa n e wc h a l l e n g ef o rt h es o f t w a r et e s t e r g u ii sa ni n t e r a c t i v ei n t e r f a c eb e t w e e nt h eu s e ra n d t h es y s t e m ,u s e rc a no p e r a t et h eg u it oc a l lt h es y s t e mc o m m a n d ,a n dt h es y s t e mg i v e st h e f e e db a c kt ou s e li nt h ep a p e r , t h es t u d yi st h er e s e a r c ha n di m p l e m e n t a t i o na b o u tt h eo p e n s o u r c el i b r a r yb a s e do nt h eg u ia u t o m a t i o nt e s t i n g b e c a u s eo ft h ei n c o n v e n i e n c ef o rg u i a u t o m a t i o nw o r k ,s ot h el i b r a r ya st h er e s o l v e dm e t h o di sb r o u g h tu p id e s i g nd i r e c t l yw i t hm yc o l l e a g u e st h i sg u il i b r a r yf o ra u t o m a t i o nt e s t ,w h i c hc a n m a n i p u l a t et h es t a n d a r dg u ic o n t r o l sa n di th a sb e e nu s e dw i d e l y i tc a n b ep r o v e dt h a ti ti s p r a c t i c a la n dr o b u s t k e y w o r d s :a u t o m a t i o nt e s t ,g r a p h i cu s e ri n t e r f a c e ,o p e ns o u r c el i b r a r y 目录 摘要i a b s t r a c t i i 目录v i 第1 章绪论1 1 1 选题的背景与意义1 1 2 当前技术发展现状2 1 3 本文研究目标及其意义5 1 4 论文的结构5 第2 章g u i 自动化测试技术的介绍7 2 1g ui 自动化测试技术的意义7 2 2 常用到的自动化测试方法8 2 2 1 借助脚本语言8 2 2 2 基于捕获和回放机制来完成g u i 自动化1 0 2 2 3 利用微软u i a u t o m a t i o n 来实现g u i 自动化1 2 2 3 本章小结1 2 第3 章g u i 自动化测试库的整体设计1 3 3 1g u i 标准控件1 3 3 2 在开发过程中使用的工具1 4 3 2 1 s p y + + 16 3 2 2uis p y 19 3 3g ui 自动化库整体设计2 1 3 4 系统代码的结构设计2 3 3 4 1u ti | it y 模块设计2 3 3 4 2win d o w g ui 窗口模块设计2 5 3 5 本章小结2 8 第4 章基于g u i 自动化测试库核心代码实现2 9 4 1 常用到的w in d o w sa pi 2 9 4 2 本人在此套库函数所做的工作3 l 4 2 1u tiii t y 代码中的工作3 2 4 2 2g t win d o w 代码中的工作3 6 4 2 3 对dir e c t u1 支持的工作4 l 4 2 4 其它的工作4 3 4 3 如何使用g ul 这个库函数4 5 4 3 1 代码应用在x p 系统4 6 4 3 2 代码应用在wn d o w s 7 系统4 8 4 4 实用价值5 1 4 5 本章小结5 1 第5 章结论5 2 5 1 本论文的主要工作5 2 5 2 本论文创新点5 4 5 3 今后的工作5 4 参考文献5 6 附录5 8 致谢6 4 攻读硕士期间的研究成果6 5 华东师范大学硕士论文 1 1 选题的背景与意义 第1 章绪论 在早期的计算机里,在操作员控制台除了一些按钮之外几乎是没有用户界 面u i 的。用户界面很大程度上是穿孔卡片输入和报表输出的形式。后来,用户 被提供有和计算机在线交互的能力,并且u i 变成了一个带有一个命令行,键盘 和一组命令的差不多全黑的显示屏,然后交换计算机响应。这个命令行界面引 导为以后的菜单控制例如早期的d o s 系统。 而现在,图形用户界面( g u i ) 在计算机上越来越普及,它为用户提供了 最简单的方式去真实地形象化的看每一件东西。0 1 g u i 的到来,主要是由x e r o x sp a l oa l t o 研究中心发起的,a p p l e 电脑吸纳并增强,最后再由m i c r o s o f t 有效 的在它的w i n d o w s 操作系统中标准化。曾一度想象的文件夹树现在真的被用户 看到了。u i 被设计为一个用户可以通过显示屏,键盘和桌面显示,明亮的字符, 帮助信息与之交互,以及应用程序或网站如何引发交互并响应它的信息设备。 现在g u i 等软件技术等都很成熟,但在最初的软件开发过程中,软件开发 还没有成为大的规模、复杂程度很低,软件的内容也不丰富,所以当时软件开 发的过程相当随意、混乱无序,缺少正规的软件测试,所以那时的测试的含义 比较狭窄,开发人员同时也要负责测试工作,即所谓的“开发调试”,目的是为 了保证软件开发的正确性,不得不进行的软件开发纠错工作。纠正软件中已经 知道的故障,常常由开发人员自己完成这部分的工作。到了1 9 5 7 年,软件测试 作为软件开发中一项独立的工作,才开始与开发时的调试区别开来,作为一种 发现软件缺陷的活动。 图形用户界面( g u i ) 的出现让人们重新审视了软件自动化测试技术。g u i 为了方便用户的使用,它提供了很多的界面接口,使用者可以很方便的操作并 华东师范大学硕士论文 且直观的得到你想要的结果。然而对软件测试人员却增加了新的难度。因为目 前针对g u i 的库函数不多,许多人即使知道也不知道如何使用,所以很多的测 试人员只好利用手工去测试,这样冗余的重复的工作带来的是工作效率的大大 降低,工作成本大大的提古【劲。 本论文就是为了解决对g u i 自动化技术的缺乏和难懂设计出一套通用简单 的自动化g u i 库,这套d l l 在提供的接口上命名和设计都通俗易懂,方便测试 人员的使用,其中源代码完全是开放的,测试人员可以根据自己不同的需求添 加自己想要的功能。目的是将繁琐的g u i 手动测试改为自动化测试,这样大大 的节省了时间和劳动力,使整个工作效率大大的提高,因此当前的这个选题在 当前软件测试的这个大背景下显得特别的有意义。 1 2 当前技术发展现状 图形用户界面( g u i ) 提供给用户可视化的与系统交互的接口,成功的简 化了操作的复杂度。因此也造就了m i c r o s o f tw i n d o w s 的成功。但是与此同时, 它也给包含g u i 图形界面软件的测试带来了挑战。相对命令行提示符应用 ( c o m m a n dl i n e b a s e da p p l i c a t i o n s ) 的输入方式而言,包含g u i 的软件系统的输 入如鼠标移动和点击、文本输入、菜单项选取变得更加复杂;g u i 输出的多样性 和复杂性也是命令行提示符应用所不具备的。因此原有的测试命令行提示符应 用的方法无法应用于包含g u i 的软件系统的测试。目前针对于g u i 标准控件的 自动化的方法简单的可以分为以下几种【3 】1 4 【2 4 】: w i n d o w s a p i 简单的来说就是利用w i n d o w s 底层函数去识别窗口:需要通过 f i n d w i n d o w 和e n u m w i n d o w s 函数来查找到窗口句柄,然后再调用其它a p i 如( g e t w i n d o w t e x t ,g e t w i n d o w r e c t ,g e t w i n d o w l o n g ) 来获取窗口属性, 以此来找到想要的控件( 窗口) 、操作窗口和获取属性:通过s e t w i n d o w t e x t 和g e t w i n d o w t e x t 来操作控件上显示的文字,通过s e t f o r e g r o u n d w i n d o w 设 2 华东师范人学硕上论文 置顶层窗,g e t f o r e g r o u n d w i n d o w 获取当前的顶层窗口,类似的还有 g e t a c t i v e w i n d o w 和s e t a c t i v e w i n d o w 。从理论上来说,通过w i n d o w sa p i 和w i n d o w ss e n d m e s s a g e 可以完成对大部分窗口( 控件也是窗口) 的操作, 也可以获取部分控件的部分属性。 其实本文就是利用w i n d o w sa p i 底层函数的,对底层进行层层的封装,最终 把用户最常用的操作封装成个a p i 函数供测试人员来使用,这样测试人员用 起来很方便,并且有蓑很深很强大的底层,对标准的w i n d o w s 的控件支持得很 好。 m s a a m i c r o s o f ta c t i v ea c c e s s i b i l i t y m s a a 在w i n d o w s9 5 中就已经包含的技术,在所有的标准控件中,都实现 了m s a a 的接口,在微软所有的操作系统中都集成m s a a 的组件,但是m s a a 天生就不是设计给自动化测试的,它存在的意义在于提供套接口,让开发人 员可以方便的给残疾人开发可以使用的软件,比如读屏程序,从而实现微软将 电脑普及到每一个家庭的梦想。 虽然m s a a 不是设计给自动化测试的,但是现有的所有自动化测试工具都 是基于或者部分基于m s a a 来实现的。m s a a 很多时候直接把它叫做 i a c c e s s i b l e ,它本身是一个c o m 组件,最主要是实现了i a c c e s s i b l e 的接口,它 提供了一些方法,通过这些方法,可以获取控件更详细的信息,也可以通过一 些方法对控件进行简单的操作( d o d e f a u l t a c t i o n ) 。 优点:比起w i n d o w sa p i 来说,用户只需要跟i a c c e s s i b l e 打交道,通过这 个接口能获得的控件信息相对丰富很多。另外一个比较大的优点就是,自定义 控件的支持,当然了,并不是说自己写一个自定义控件,这个控件就可以通过 m s a a 来识别,而是说当开发人员在实现自定义控件的时候,可以实现 i a c c e s s i b l e 的接口,并且通过这个接口,把一些的属性和操作暴露出来,测试 人员就可以将这个控件当作标准控件,并通过m s a a 来自动化。看起来麻烦了 点,但是最起码对自动化自定义控件提供了可能。 缺点:m s a a 从来就不是给自动化测试设计的,所以也不会考虑自动化测 华东师范大学硕士论文 试的需求,获取到的控件信息比w i n d o w sa p i 多,但是相对自动化测试的需求 来说还是远远不够,而且仅仅支持一个基本操作,其它的操作还必须通过 w i n d o w sm e s s a g e 。并且一些公司的开发人员为了节约成本,在开发自定义控件 的时候很少提供i a c c e s s i b l e 接口,因为这样既耗时又费力气。另外就是微软推 出w p f 以后,m s a a 的局限性越加明显。 u i a u t o m a t i o n 伴随着自动化测试的应用越来越广泛,以及w p f 的发布,微软在m s a a 的 基础上,对m s a a 进行封装,重新设计并实现了u i a u t o m a t i o n 的类库( n e t ) , 微软根据自动化测试的需求,重新实现了一套自动化体系,从此自动化测试人 员迎来了更广阔的一片蓝天。 在u i a 发布的时候,基于m s a a 的自动化工具已经发展的非常成熟,比如 s i l k t e s t 和w i n r u n n e r 按照微软的想法和设计,u n 是要取代m s a a 成为自动 化测试的标准类库,并且对w p f 来说,u i a 才是首选。从架构上来讲,u i a 在 针对标准控件的时候,通过u ia u t o m a t i o np r o x y 调用了m s a as e r v e r ,基本上 覆盖了m s a a 的功能。但是也有缺点:u i a 的类库是作为n e t 3 0 的一部分发布, 这就意味着u i a 只能用n e t 的语言来写,并且运行在n e t 托管堆中,性能就成 为其中一个问题,虽然我不认为是很大的一个问题,一般来说自动化测试程序 在等待u i 反应的时间要远远多于这一点点的性能差异。 w i n d o w sa u t o m a t i o na p i3 o 其实a p l 3 0 并不是新的自动化测试的技术,而是对u i a u t o m a t i o n ( u i a ) 以及m s a a 的升级,它是伴随着w i n d o w s7 发布的,也就是说w i n d o w s7 本身 就集成了w i n d o w s a u t o m a t i o n a p i3 0 所以的组件和功能,再换一句话说就是 w i n d o w s7 就自动化测试的支持将会更好。但是它也有一个典型的缺点就是它 只能运行在w i n d o w s 7 上,如果你只需要在w i n d w o s 7 上做自动化测试,它确实 是最强大的一个工具,但是如果你想在其它平台上做,这套库就不那么适合你 了。 4 华东师范大学硕士论文 1 3 本文研究目标及其意义 基于本文1 1 和1 2 节中对目前g u i 自动化测试技术的简要分析与总结, 通过阅读大量的国内外相关领域文献,并且借鉴了很多经验丰富的人的做法, 提出了一套用途功能强大用法简单的一套g u i 自动化测试库。 本人的研究内容主要包括完成上述研究目标所涉及的关键技术。 首先,对需求做深入的分析,了解当前g u i 测试技术发展状况以及现在存 在哪些瓶颈,根据分析的结果来给出一套相对合理的解决方案。 其次,结合本系统的整体架构,根据当前已经存在的自动化g u i 库函数的 现状,阐述了该库函数有哪些优势,阐述了当前有哪些g u i 自动化的需求并且 如何在该系统中的应用。 最后,基于以上的研究,讲述了该自动化测试g u i 开源库的实现方式,以 及在公司内使用和推广情况,使大家能够立体的感受到这个系统的实现方法及 其实现的意义。 所以,本文详尽的阐述了该自动化测试g u i 系统实现的点点滴滴,使大家 对这套库函数有一个全方位的了解,旨在满足上述需求以及对国内的软件测试 行业有所帮助。 1 4 论文的结构 本论文共分为5 章,第一章为绪论部分,综述了选题的背景与意义并且着 重的介绍了当前技术已经发展的现状;第二章主要介绍了g u i 自动化测试的一 些相关知识,讲述了一般自动化测试有哪些做法,以及现在公司中g u i 自动化 测试的现状;第三章讲述了g u i 自动化测试开源库的整体设计,介绍了开发使 用过程中我们都能借助哪些工具帮助我们分析,讲述了整个系统代码结构上的 实现,详细的介绍了每个模块的作用,里面有哪些方法被调用;第四章是全文 最主要的部分,讲述了最核心代码是如何实现的,并且举了两个例子来讲解如 华东师范大学硕士论文 何去使用这套库函数,这样就能够明白整个库函数的构架,用户可以很容易的 使用;第五章为整篇论文的结论部分,讲述了论文的主要工作及其未来的工作。 6 华东师范人学硕上论文 第2 章g u i 自动化测试技术的介绍 2 1g ul 自动化测试技术的意义 其实无论哪种测试都属于软件测试。软件测试的实质上就是保障软件开发 的质量,无论何种软件,从需求分析一直到详细设计代码阶段,都需要用优秀的测 试技术为软件的顺利开发做基础。有时候测试用例会超过软件代码编写的工作 量。虽然软件测试的工作量很大,但是其中的测试用例的复用性很高,我们需要 发现软件以前的问题是否被解决或者软件代码变更后是否还满足之前的需求。 这些测试工作都可以复用原来的测试用例。如果实现软件测试的自动化,就能够 节约测试时间、提高测试效率、降低测试成本。 自动化测试是尖端技术,原因在于自动化测试的技术难度,特别是g u i 相 关的测试自动化。跟软件产品一样,自动化测试程序也讲究性能、稳定性、可 伸缩性等指标。测试程序除了要实现目标程序一样的功能才能够进行结果检验 以外,测试程序还要实现额外的功能去观察目标程序的行为。而对于g u i 产品 的自动化,实现起来就牵涉到读取g u i 的图像输出( 比如检查是否正确弹出了 m e s s a g e b o x 对话框) ,模拟用户的鼠标键盘输入( 比如查看文件夹里面的属性) , 同步测试产品和用户的交流等等。这些技术门槛使得自动化测试成为一把双刃 剑,成败不在于是不是去做它,而是有没有能力把它做好【8 】。 举一个十分具体的u i 自动化的例子: 1 ) 启动计算器程序( c a l c e x e ) 2 ) 模拟用户进行菜单输入5 4 3 + 6 7 = 6 10 3 ) 将结果6 1 0 转化n - 进制输出结果1 0 0 1 1 0 0 0 1 0 4 ) 检查计算结果是否正确 如果这个测试案例摆在我们面前我们应该如何去考虑呢? 或许我们首先 7 华东师范大学硕士论文 想到的就是手动的打开计算器,然后手动输入得出结果,看结果对不对。如果 这种操作很多并且每次都需要重复操作,这样的话就应该想着如何去自动化去 执行,这样我们节省了很多的时间。然而对于刚入职的测试人员来说,宁愿去 自己每次费时费力的手动执行,也不愿去将这个流程进行自动化。因为无论是 学校的教学还是课外的研究,针对u i 自动化的资料几乎是零。上诉功能和需求, 需要工程师结合已知的知识和技能,研究出解决问题的最佳办法。所以如果我 们能够将g u i 这些操作如自动打开计算器,自动输入,自动的c h e c k 结果对不 对,这样做就可以将这个c a s e 自动化起来,使得过程不需要人手工的操作。本 文就是为了方便测试人员而开发了这套库,当测试人员明白其中的道理,便可 轻松的应对这种带有g u i 手工操作的测试用例5 1 。 g u i 自动化的实质就是一种进程与进程之间的通信。测试程序需要跟目标 程序通过某种进程通信方式来获取目标程序的信息,包括u i 元素的位置,显示 的文字内容,然后再模拟用户的操作比如在特定位置点击鼠标,或者从键盘上 输入字符串。进程之间通信方式来说,w i n d o w s 平台上有很多选择,比如管道, t c p i p ,w i n d o w s 消息,共享文件,r p c 等等。对于g u i 自动化,最容易想到 的解决方案是w i n d o w s 消息机制。通过w i n d o w s 消息以及跟w i n d o w s 相关的 a p i 可以获取计算器窗口,菜单和按钮位置。但真正开始用w i n d o w s 消息来实 现u i 自动化测试的时候,就会发现w i n d o w s 消息的一些不足,比如w i n d o w s 消息无法用于w p f 程序,无法获取e x c e l 或者i e 里面的u i 子元素【6 1 2 7 1 。 2 2 常用到的自动化测试方法 2 2 1 借助脚本语言 脚本语言( s c r i p t i n gl a n g u a g e ) 是计算机编程语言,因此也能让开发者用它 编写出控制计算机操作的程序。以简单的方式快速完成某些复杂的事情通常是 8 华东师范大学硕十论文 创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比c 语言、c + + 语言或j a v a 之类的系统编程语言要简单容易,也让脚本语言另有一些属于脚 本语言的特性【7 】: 语法和结构通常比较简单 学习和使用通常比较简单 通常以容易修改程序的“解释”作为运行方式,而不需要“编译” 程序的开发产能优于运行效能 一个脚本可以使得本来要用键盘进行的相互式操作自动化。例如一个s h e l l 脚本主要由原本需要在命令行输入的命令组成,或在一个文本编辑器中,用户 可以使用脚本来把一些常用的操作组合成一组串行。主要用来书写这种脚本的 语言叫做脚本语言。很多脚本语言实际上已经超过简单的用户命令串行的指令, 还可以编写更复杂的程序。 借助脚本语言来自动化测试用例,这是当前许多测试人员通用的做法。这 些脚本语言包括了t e l t k 、v b s c r i p t 、j a v a s c r i p t 、p e r l p h y t h o n 、p h p 。 不同的脚本在不同的领域有着独特的优势【2 8 1 。 1 p e r l p h y t h o n p e r l 的语言源自c c + + ,所以对于为数众多的c c + + 程序员来说,上手非 常容易。而且设计者在设计之初就特别考虑了语法的灵活性和多样性,目标就 是使其能够媲美自然语言,正是这种考虑成就了今天p e r l 语法的灵活而多样。 功能上,p e r l 的扩展模块之多可说是脚本之最,虽然p e r l 本身没有用户界 面支持,但是通过t k 扩展包完美地嵌入了t k ,弥补了这方面的缺憾。 效率方面,p e r l 解释器的执行速度是比较快的,而且可以通过p e r lc c 等转 为c 程序编译为本地执行文件,这就大大超越了一般脚本所能提供的运行效率。 2 t c l t k t c l 的最大特点是其语法格式极其简单,用法 命令选项参数 形式, 名副其实的t o o lc o m m a n dl a n g u a g e 。不过正因如此,学习掌握起来就极为容 易了,而且这种形式上的简单却大大简化了解析器的复杂性,使得对t c l 脚本 9 华东师范大学硕士论文 的支持非常容易实现 3 v b s v b s 是v b 的一个脚本化版本,弥补命令行功能的缺陷。但是v b s 尤其固 有的缺陷,它只能用在w i n 3 2 平台上的并且运行效率更是不能和c c + + 相比。 4 j s p h p j a v e s c r i p t 和p h p 更适用于动态网页的制作。在w e b 互联网方向上有着 得天独厚的优势。它可以开发交互式w e b 网页,它的出现使得网页与用户之间 实现了一种实时性、动态的、交互式的关系。 然而从上面的描述来看,没有一个脚本语言适合用于g u i 自动化测试。那 么有没有适合g u i 的脚本语言呢,a u t o h o t k e y 就是其中一个好用的脚本。 2 2 2 基于捕获和回放机制来完成g u i 自动化 g u i 出现带来一种专业的控制计算机的脚本语言。它在用户和图形界面,菜 单,按钮等之间互动。它经常用来自动化重复性动作,或设置一个标准状态。 理论上它可以用来控制运行于基于g u i 的计算机上的所有应用程序,但实际上 这些语言是否被支持还要看应用程序和操作系统本身。当通过键盘进行互动时, 这些语言也被称为宏语掣9 1 。 目前公司大部分对g u i 自动化测试用例采用的都是c p 机制,即捕获回放 机制( c a p t u r e p l a y b a c k ) 。首先测试人员与被测的g u i 进行交互如( 鼠标点击 键盘输入和对象操作等) 被捕获并存储在文件中。简单来说就是利用一种工具 来把测试人员当前鼠标和键盘的操作记录下来,转化成相应的脚本语言,然后 再运行这个脚本便可以将录制的操作过程重现实现一次。刚才已经提到了c p 方法的捕获,接下来就是回放功能。对有g u i 操作的应用程序来说,基本上都 需要录制和回放这个功能。下面就是c p 方法的工作过程示意图【1 0 】。 1 0 组合键都可以被设置为热键; 3 创建自定义的数据输入表格、用户界面、菜单等。详情请看图形界面部 分; 4 映射键盘、游戏操纵杆和鼠标上的按键或按钮; 5 将脚本文件编译成e x e 可执行文件,使得程序在没有安装a u t o h o t k e y 的机器上得以运行; 使用a u t oh o t k e y 录制这个功能,就可以方便的为一些g u i 的应用程序进 行自动化。然而a u t oh o t k e y 有着很大的缺陷,就是可移植性差。它录制的原理 是根据坐标来记录点的,它会把你操作的当前的鼠标位置记录下来,然后在回 放的过程中去点击相同的位置。因此有一个明显的问题就暴露出来。当屏幕的 分辨率换了,或者稍微改变下运行g u i 程序的位置,在回放的过程中就会找不 到应用程序,因此程序会死在那里。还有对系统环境的依赖性很强,录制好的 程序最后运行在和录制当时环境一样的情况下,否则很容易出错。假如你在x p 的环境下自动化一个用例,很可能在v i s t a 、w i n d o w s 7 下就不能运行。因此在 大的项目中,在多操作系统环境下用a u t oh o t k e y 是不能满足当前g u i 自动化 测试技术要求的。 华东师范大学硕士论文 2 2 3 利用微软u i a u t o m a t i o n 来实现g u i 自动化 其实在1 2 节的技术发展现状中提到了目前流行的几种关于g u i 自动化测 试的方法。w i n d o w sa p i 是一种,也是本文中使用的方法,这种方法的好处就 是有很强大的底层函数支持。如何实现的在后文中会详细阐述。 现在许多高级的测试人员使用的应该是u i a u t o m a t i o n 和m s a a 。这两种方 法也是用得最多的,其实这两种的技术也很成熟。1 2 章也主要的提到了二者的 优缺点。m s a a 从来就不是给自动化测试设计的,所以也不会考虑自动化测试 的需求,获取到的控件信息比w i n d o w sa p i 多,但是相对自动化测试的需求来 说还是远远不够,而且仅仅支持一个基本操作,其它的操作还必须通过w i n d o w s m e s s a g e 。因为二者主要是运行在n e t 下,语言依赖于c 群。n e t 托管机制也使 得程序的运行效率没有c + + 甜2 4 1 2 5 1 。 2 。3 本章小结 本章主要阐述了该自动化测试g u i 库的开发原理,以及当前通用的一些自 动化测试的方法,目的是使人们能够了解当前g u i 自动化发展到何种状态。哪 些已经是很成熟的,我们可以很好的借鉴过来,被我们所用。哪些目前还做得 不够完美,因此我们就要从这点入手,希望对整个行业的发展做些贡献。 1 2 华东师范大学硕士论文 第3 章g u i 自动化测试库的整体设计 3 1g u i 标准控件 图形用户界面( g r a p h i c a lu s e ri n t e r f a c e ,简称g u i ,又称图形用户接口) 是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界 面相比,图形界面对于用户来说在视觉上更易于接受。 g u i 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分 析的人机系统工程,强调人一机一环境三者作为一个系统进行总体设计。 这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化, 减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞 争力。 大家经常能看到的一些控件,我简要的列举了下: 图标( i c o n ) 图片( p i c t u r e ) 窗口( w i n d o w ) 表单( f o r m ) ,属性页( p r o p e r t ys h e e t s ) ,t a b 。 菜单( m e n u ) ,工具栏( t o o lb a r ) ,状态栏( s t a t u sb a r ) ,进度栏( p r o g r e s s ) 按钮( b u t t o n ) 对话框( d i a l o gb o x ) ,消息框( m e s s a g eb o x ) ,输入对话框( i n p u tb o x ) 文本框( t e x tb o x ) ,列表框( l i s tb o x ) ,组合框( c o m b ob o x ) 、下拉 列表框( d r o p d o w nl i s tb o x ) 复选框( c h e c kb o x ) ,单选框( r a d i ob o x ) ,选项框( o p t i o nb o x ) 、滑 动条( s l i d e r ) 、旋转按钮( s p i nb u t t o n ) 静态文字( s t a t i ct e x t ) ,向导( w i z a r d s ) ,树( t r e e ) 下图1 显示了几种常见到的控件。 华东师范大学硕士论文 图1 几种常见的控件 当然w i n d o w s 还有很多的控件,这里并不一一列举。其实我们对每种控件 都可以有许多种操作和需求,例如单击和双击b u t t o n 、选择c o m b ob o x 里面 的i t e m s ( 可以根据i n d e x 选择,也可以根据字符串选择) 、e n b a l e 或者d i s a b l e c h e c k b o x 或者r a d i ob o x 等等。其实在本套g u i 自动化库中,最根本的目的 就是将测试人员最常用到的对标准控件操作和需求给封装起来,然后提供出接 口供测试人员使用。例如一个b u t t o n ,作为一个测试人员我们想要对按钮进行 单击、双击,有的时候我们还想知道这个b u t t o n 所占的位置坐标p o x 和大小 s i z e 等,这些往往是测试人员在测试g u i 应用程序时候用到的。如何将这些方 法接口简单的抽象出来这就是本文研究的重点。 3 2 在开发过程中使用的工具 在开发和使用g u i 自动化测试这套库函数时候,我们一直需要一些辅助工 1 4 华东师范大学硕七论文 具。因为我们需要用这些工具来查看w i n d o w s 控件的各个属性,通过某些唯一 属性我们就可以精确的定位到你想要找到的控件上,这时候你就可以对当前的 控件进行操作,得到预期的结果。因此如何精确定位到你要找的控件就显得尤 其的重要。w i n d o w s 标准控件中有几个关键的信息,有些信息是控件的唯一标 识,因此我们在使用自动化的过程中需要用到它们【1 0 】。 类名:c l a s s n a m e 每一个w i n d o w s 标准类都需要用一个类名来彼此进行区分。因为窗口类是 被特殊处理的,因此窗口类名在同一进程中必须是独一无二的。又因为类名在 系统表中是要占据一定空间的,所以尽可能的将该类名起的比较短。 一个系统类( s y s t e mc l a s s ) 其实就是一个被系统注册了的窗口类。许多 系统类可用于所有程序使用,而有一些只能被系统在内部调用。由于这些类是 被系统注册的,因此进程不能摧毁它们。 下面的图2 列举的是能

温馨提示

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

评论

0/150

提交评论