




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着苹果公司的发展,苹果公司的数码电子产品已经风靡全球,这其中 包括苹果公司的个人计算机产品苹果机。各种基于苹果操作系统的应用 程序软件也如雨后春笋般涌现出来。为了保证软件产品质量抢占软件市场份 额,各大软件公司对苹果操作系统上软件测试的需求越来越高,传统的软件 测试方法已经无法满足市场的需要。基于这种背景,本文提出了一种全新的 苹果操作系统上的软件自动化测试系统苹果自动化测试方法。 苹果自动化测试方法弥补了以往测试系统适应范围小,脚本代码重用性 低的缺陷,是一种普遍适用,维护简单,逻辑清晰,性能较高的新型的测试 系统。它的内部集成了五大组件,分别是命令解析组件、操作处理组件、日 志记录组件、执行报告组件以及数据通讯组件。通过这些组件的共同协作, 苹果自动化测试方法可以实现从脚本命令的解析到最终测试日志和执行报 告的生成这一完整的软件自动化测试流程。 苹果自动化测试方法对于两种不同类型的g o i 元素提出了两套自动化测 试方案,分别解决了“可访问g u i 元素 和“不可访问g u i 元素 的定位、 操作和验证,使得苹果自动化测试方法的适用范围大大增加。另外测试方法 内部所采用的g u i 元素搜索算法经过改良之后搜索性能和稳定性都有了很 大提高,使得整个测试方法的稳定性和性能比之前传统的测试方法有很大改 进。完善的日志和执行报告生成机制,使得测试人员可以方便地调试脚本, 准确地找到程序漏洞并从整体上掌握项目进程。 在实际项目中,苹果自动化测试方法已经可以帮助测试人员进行复杂的 软件测试,提高了测试的效率,缩短了产品研发的周期,所以本课题有着很 强的实用价值。 关键词:苹果机,软件自动化测试,g u i 元素,深度优先搜索算法 a b s t r a c t a st h ed e v e l o p m e n to fa p p l ei n c ,t h e i rc o n s u m e re l e c t r o n i c s ,i n c l u d i n gt h e p e r s o n a lc o m p u t e r a p p l em a c i n t o s h ,b e c o m em o r ea n dm o r ep o p u l a r a l lk i n d so f s o f t w a r et h a tb a s eo nm a co sh a v eb e e na p p e a r e d t oe n s u r et h eq u a l i t yo ft h e s e s o f t w a r ea n dw i nm o r em a r k e t ,s 0 1 a r ec o m p a n i e sn e e dm o r ee f f i c i e n ta u t o m a t e d t e s tt o o li n s t e a do ft r a d i t i o n a lt o o l s s ob a s eo nt h i ss i t u a t i o n ,t h ea r t i c l ea d v a n c ea n e wm a co ss o f t w a r ea u t o m a t e dt e s t s y s t e ma p p l ea u t o m a t e dt e s ts o l u t i o n ( a a t s ) a a t sm a k e su pf o rt h et r a d i t i o n a lt e s tt o o l sa b o u tt h es m a l la p p l i c a b l es c o p ea n d t h el o wr e u s a b i l i t yo f s c r i p t i t saa p p l i c a b l e ,e a s y - m a i n t a i n , l o g i c a la n de f f i c i e n tt e s t s y s t e m t h e r ea r ef i v ec o m p o n e n t si ni tc a l l e dc o m m a n dr e s o l v e c o m p o n e n t , o p e r a t i o nc o m p o n e n t ,l o gc o m p o n e n t ,r e p o r tc o m p o n e n ta n dc o m m u n i c a t i o n c o m p o n e n t t h r o u g ht h e s ef i v ec o m p o n e n t s ,a a t sc a na c h i e v et h ew h o l ea u t o m a t e d t e s t i n g f o rt w od i f f e r e n tk i n d so fg u ie l e m e n t ,a a t sp r o v i d e st w od i f f e r e n ts o l u t i o n s n c ys o l v et h ep o s i t i o n i n g , o p e r a t i o na n dv e r i f i c a t i o no f a c c e s s i b l eg u ie l e m e n t a n d u n a c c e s s i b l eg u ie l e m e n t r e s p e c t i v e l y a n dt h ep e r f o r m a n c ea n ds t a b i l i t yo f t h ei m p r o v e da l g o r i t h mt h a ta a t su s e dh a v es ol a r g ea d v a n c et h a ta a t si sm o r e h e l p f u lt h a nt h et r a d i t i o n a lo n e s t e s t e rw i l ld e b u gs c r i p tc o n v e n i e n t l ya n df i n db u go f c l i e n tp r o g r a ma c c u r a t e l yb yl o gc o m p o n e n ta n dr e p o r tc o m p o n e n t a n dt h e yc a n c o m m a n dt h ep r o g r e s so f p r o j e c t i nt h ep r a c t i c a lp r o j e c t ,a a t sc a n h e l ps o f b , v a r et e s t e rt ot e s ts o m ec o m p l i c a t e d f u n c t i o n i tc a nr a i s et h ee f f i c i e n c yo f t e s t i n ga n ds h o r t e nt h ec y c l eo fr & d a sa r e s u l t ,t h er e s e a r c hi nt h i sa r t i c l ei sp r a c t i c a l k e y w o r d :m a c i n t o s h ,s o f t w a r ea u t o m a t e dt e s t , g u id e m e n t , d e p t h f a s ts e a r c h a l g o r i t h m i i 第一章绪论 第一章绪论 1 1 引言 近年来随着i p o d ,i p h o n e ,i p a d 等个人消费电子产品的日益普及【1 ,2 1 ,苹 果公司的品牌认知度和产品的市场占有率正在飞速地提高,其公司总市值已 经跃居全球第二,成功超越微软成为全球最大的科技公司【3 1 。随着公司的发 展,苹果公司的个人计算机苹果机( m a c i n t o s h 4 1 ) 的普及程度也大大提 高,用户群已经从以前的高端用户逐渐转向大众消费群体。这就意味着各大 软件公司如果想提高自己的市场份额并有效打击竞争对手,必须研发出跨平 台的软件产品。 软件发布之前对软件进行全面的、系统的测试是保证软件质量的主要手 段。软件测试的方法主要分为两种:人工测试【5 1 和自动化测试【6 】。其中人工 测试的效率远远低于自动化测试,表1 i 对比了这两种测试方法的优缺点【刀: 表1 1 。 人工测试自动化测试 较低。测试人员不需要较高。测试人员必须有一 技术门槛 经过专业的培训定的软件编程基础 较低。人每天工作时间较高。只要条件允许,电 测试效率 有限,并且会疲劳累积脑可以每天连续测试 较高。靠人手工测试需较低。除去早期研发费用, 测试成本 要每天付给工人工资后期执行基本不产生花销 较浅。仅能发现比较表较深。依靠脚本可以发现 测试深度面的程序漏洞比较深层次的程序漏洞, 比如死锁,资源冲突等 苹果操作系统软件自动化测试的研究与实现 自动化测试在测试效率、测试成本和测试效果上都优于人工测试,软件 测试技术的发展也是由人工测试逐渐向自动化测试过渡,自动化测试是软件 测试技术发展的目标。 1 2 国内外现状 目前基于w i n d o w s 平台的软件自动化测试技术已经相对成熟,一些常见 的软件自动化测试工具如q u i c k t e s t p r o 引,l o a d r u n n e r t 9 1 ,a u t o i t 【1 0 】等已经为人 们熟知。大部分的软件测试人员已经可以熟练的运用这些自动化测试工具编 写自动化脚本,将繁琐单调的重复性测试工作全部交给电脑来完成,这就大 大提高了测试人员的工作效率,有效地保证了w i n d o w s 平台软件产品的质 量。但是对于苹果机的苹果操作系统来说,基于它的自动化测试方法却少之 又少,缺少一个行业公认的标准模式。并且由于苹果操作系统的普及程度与 w i n d o w s 操作系统相比不是很高【1 1 】,所以能熟练掌握苹果操作系统的测试人 员也相对较少。这就使得苹果操作系统上的自动化测试方法发展缓慢。目前 各大软件公司在苹果操作系统平台上采用的还是人工手动测试为主自动化 测试为辅的软件测试方法【1 2 】。一些现行的自动化测试脚本仅能帮助测试人员 完成一些简单的重复劳动,如帮助测试人员批量生成测试数据;将测试结果 自动发送给指定接收对象等。而大量的复杂测试工作,如对软件进行各种操 作;验证软件的反馈以及记录软件的测试结果等测试工作还是需要测试人员 自己手动来完成。在苹果机普及相对较晚的国内这种现象则更为明显,基本 上国内的软件公司对苹果操作系统上软件的测试都依赖于测试人员手工完 成,耗费了大量的人力,延长了软件研发周期。苹果操作系统上的软件自动 化测试已经成为国内外软件公司确保其软件的产品质量、缩短产品研发周 期、加强公司竞争力的关键因素和瓶颈约束。因此对苹果操作系统软件自动 化测试的研究有着很强的现实意义。 1 3 本文的研究内容和主要工作 本文的研究内容是苹果操作系统上的软件自动化测试。前三章对目前国 内外软件公司使用的两种针对苹果操作系统的自动化测试方法进行介绍和 2 第一章绪论 剖析,分析这两种方法的优点并结合实际项目阐述他们的不足之处。第四章 提出了一种全新的软件自动化测试思路,设计出整个自动化测试系统的实现 流程图。整个系统框架搭好之后,本文的第五章将该系统运用到实际项目中, 验证了这种新型的自动化测试方法的可行性。最后本文的第六章分析了这种 测试系统的运用前景,并指出了目前此系统存在的缺陷和不足之处。 本文的主要工作是提出了一种新型的苹果操作系统上软件自动化测试系 统。针对这种自动化测试系统提出了完整的设计方案,包括了从最高层的对 自动化测试脚本的解析到底层的鼠标键盘命令的触发。此系统采用目前主流 的由k e yw o r d 驱动的方法【1 3 1 ,最大限度地实现了自动化测试脚本和整个测 试框架的解耦【1 4 】,极大地提高了自动化测试脚本的重复使用率,同时也提高 了该软件自动化测试系统的实际使用价值。 1 4 本文的组织结构 第一章:绪论。介绍了本文研究课题的背景和研究意义。概括本文的主 要内容和研究工作,并列出文章组织结构。 第二章:软件自动化测试以及苹果自动化测试技术的简介。为了方便读 者阅读,本章简单地介绍了软件自动化测试的内容和发展,并着重介绍了两 种现行的苹果操作系统上软件自动化测试的方法:基于“a p p l e 事件【1 5 1 的 测试方法和基于自动化测试工具e g g p l a n t 1 q 的测试方法,最后总结归纳出这 两种方法的优点和不足之处。 第三章:苹果操作系统自动化测试在实际项目中的可行性分析。在实际 项目中论证第二章中介绍的两种自动化测试方法的可行性,得出结论,并引 出一种新型的测试方法。 第四章:一种新型苹果平台软件自动化测试系统的设计与实现。介绍了 基于苹果操作系统的“辅助功能支持”接口设计的自动化测试方法。该章是 本文的重点章节,详细介绍了这种新型自动化测试方法的设计流程和框架结 构,并验证了整个方法的可行性。 第五章:实例与分析。本章节将上一章介绍的软件自动化测试方法运用 到实际项目中,得到最终的日志文件和执行报告,进一步验证了该方法的可 行性。 第六章:结论与展望。介绍了该课题的发展前景。并总结出该自动化测 试方法的优点,同时指出了存在的缺陷和不足。 4 第二章软件自动化测试以及苹果操作系统自动化测试技术的简介 第二章软件自动化测试以及苹果操作系 统自动化测试技术的简介 2 1 软件自动化测试简介 首先来简单介绍一下什么是软件自动化测试。软件的自动化测试就是将 原来由测试人员手动完成的软件测试工作交给电脑自动完成。实现的方法是 通过软件自动化测试工具编写的脚本程序让电脑自动地完成对软件的各种 操作、记录软件的反馈并将测试结果以可见的形式展示给测试人员。基于 w i n d o w s 平台的软件自动化测试技术目前已经很成熟,其发展历程大致可以 分为以下三个阶段【1 7 , 1 8 】 第一阶段:基于录n 回放技术的自动化测试方法。这种方法是比较低层 次的软件自动化测试方法,它首先通过自动化测试工具将测试人员对电脑键 盘鼠标的操作动作记录下来,生成一个自动化脚本,再循环运行这个脚本程 序,这样电脑就能重复测试人员之前的操作,实现比较简单的软件自动化测 试工作。 第二阶段:基于d a t a 驱动技术的自动化测试方法。这种方法将测试数据 和测试脚本分离开,脚本程序从专门存放测试数据的内存空间读取测试数据 并加载。这样的设计思路提高了测试脚本的重用性,对于同一测试点的多个 测试数据只需要一个测试脚本来实现。 第三阶段:基于k e y w o r d 驱动技术的自动化测试方法。这种方法是上一 方法的拓展,进一步解耦整个测试框架。将对上层g u i 元素【1 9 1 的各种操作封 装成各种k e yw o r d 。编写的自动化测试脚本只要调用这些封装好的k e y w o r d ,就能找到对应的g u i 元素并对这些g u i 元素进行相应的操作。这样的 设计思路可以有效地将整个测试过程解耦,使开发脚本变得更加容易。具体 可以分为以下三个方面 2 0 , 2 1 1 : 1 脚本文件和测试数据解耦:脚本和数据互相独立,脚本中不含有任何 数据。这样当测试环境改变或者软件升级换代造成测试数据变化时, 5 苹果操作系统软件自动化测试的研究与实现 不需要更新测试脚本,只要将相关的测试数据替换掉即可,提高了脚 本上的重用性,降低了测试脚本的维护成本。 2 实际g u i 元素和脚本里的操作对象解耦:通过一个虚拟层将软件内部 实际存在的g u i 元素与测试脚本里虚拟的操作对象一一对应起来。这 样当软件升级造成一些g u i 元素的名称或者位置发生变化时,测试人 员无需修改测试脚本代码,只要更改对应关系表就可以完成脚本的升 级,大大降低了维护脚本的工作量。 3 脚本的代码描述和实际操作的解耦:将实际的键盘鼠标动作都封装成 k e yw o r d 的形式,比如单击鼠标左键的动作封装成k e yw o r d “c l i c k l e f l b u t t o n ,这样在编写自动化测试脚本时只需要在脚本里 输入这一k e yw o r d 就能实现对应的鼠标动作,脚本编写人员无需知 道测试方法内部是如何层层调用到底层接口函数的,这就大大降低了 脚本编写的技术门槛。一个成功的自动化测试系统只需要测试人员懂 得基本的k e yw o r d 用法就能够写出稳定的高性能的自动化测试脚本。 上述的三种软件自动化测试方法目前仍然被广泛使用,各大软件公司根据自 己的实际需要选用合适的自动化测试方法。表2 1 对比了他们的优缺点: 表2 i 录n 回放数据驱动 k e yw o r d 驱动 无需专业技术即看的懂代码,会写熟悉k e yw o r d 语 技术门槛 可 脚本法即可 脚本重用性较低 脚本重用性较高, 测试脚本难维护,一个测试 低,一个功能点一 仅需维护k e y 维护点一个脚本w o r d ,脚本无需维 个脚本 护 低,容易受到外界 测试稳定性较高,脚本较稳定较高,脚本较稳定 影响 6 第二章软件自动化测试以及苹果操作系统自动化测试技术的简介 能否生成 否,需要测试人员 可以可以 执行报告手工检查 2 2苹果操作系统上的软件自动化测试 目前w i n d o w s 平台上的软件自动化测试技术已经很成熟,但是由于发展 起步较晚、使用普及度不广等原因导致苹果操作系统上的自动化测试技术还 相对落后。常见的基于苹果操作系统的自动化测试方法可以分为以下两类: 1 借助“a p p l e 事件实现自动化测试。 “a p p l e 事件 是苹果操作系统内部自建的一个进程间消息的通讯机制, 首次出现在苹果第七代操作系统中并一直沿用至今。这个通讯机制可以传递 一些比较高级的消息,如“打开文档,“打印文件f 1 5 】等。“a p p l e 事件一 是苹果操作系统自带的脚本编辑器a p p l e s c r i p t 工作的基础。软件测试人员运 用a p p l e s c r i p t 编写的自动化脚本程序可以向任何一个可由脚本控制的应用 程序【2 3 】发出各种“a p p l e 事件消息,完成对这一应用程序的相关操作,从 而实现对该软件的自动化测试。图2 1 是该方法的工作机制【2 4 】。 图2 1 基于“a p p l e 事件”测试方法的工作机制 这种基于“a p p l e 事件 的自动化测试方法相对于其他方法的优点是测试 框架已经在苹果操作系统中搭建好,无需再设计新的测试框架,只要在该测 7 苹果操作系统软件自动化测试的研究与实现 试框架下通过a p p l e s c d p t 编写各种自动化测试脚本即可,其他的函数调用和 底层操作由测试框架来实现,减少了测试人员的工作量。该方法的缺点是适 用性不高,待测软件必须是可由脚本控制的应用程序。这就需要在软件的研 发阶段就考虑对“a p p l e 事件 消息机制的支持,这样研发出来的应用程序 才能很好的运用该测试方法。但是绝大部分的软件都没有为“a p p l e 事件 提供专门的接口,或者是接口不全,这就导致大部分的应用软件无法用这一 方法进行自动化测试。 2 借助软件e g g p l a n t 实现自动化测试。 e g g p l a n t 是红石软件公司开发的一款可以用于苹果操作系统自动化测试 的工具软件【1 6 1 。它采用标准的录制回放工作机制。测试前将e g g p l a n t 运行 在一台电脑上,待测软件运行在另一台电脑上,两台机电脑都装有v n c 远 程控制软件【2 5 1 。当录制脚本的时候,测试人员在装有待测软件的电脑上对待 测软件进行相关的操作,同时e g g p l a n t 通过v n c 访问这一台电脑,记录下 测试人员所有的操作步骤和操作动作生成脚本程序,并截取相对应的软件界 面截图保存在本地磁盘。录制完成后进行回放,这时e g g p l a n t 从截图目录里 读取相关的软件界面截图,通过截图来找到相应的g u i 元素位置,再按照记 录的操作顺序进行操作,这样就实现了软件的自动化测试。 这种基于录n 回放的测试方法的优点是能够很好地模拟用户场景,测试 环境基本上和用户操作环境保持一致。而且这种方法对于测试人员的技术要 求也相对较低,不需要测试人员掌握复杂的编程技术;该方法的缺点有两点: 第一,脚本重用性很低,界面稍微变化就需要更新脚本,这使得脚本维护工 作异常困难。第二,测试结果不稳定,回放的时候电脑上任何计划之外的动 作都可能导致测试的失败,例如一个闹钟弹窗的出现就会使整个软件界面发 生变化,g i j i 元素定位失败,最终导致脚本无法继续运行。 上述两种方法是目前比较常见的苹果操作系统上的软件自动化测试方 法。分析这两种方法的优缺点可以发现两者都是较低层次的软件自动化测试 方法,适用性、稳定性都不高。若待测的是一些功能简单的或者完全支持 “a p p l e 事件 的应用程序,可以使用这两种方法来实现软件的自动化测试。 但是随着软件行业技术的不断进步,软件产品的功能越来越全面,逻辑越来 8 第二章软件自动化测试以及苹果操作系统自动化测试技术的简介 越复杂,需要测试的验证点也随之越来越多;同时大部分的商用应用程序都 无法兼容“a p p l e 事件 ,或者是无法提供完整的接1 2 1 函数。这就导致上述 的两种自动化测试方法的适用范围越来越小,已无法满足日益发展的商用软 件公司对产品测试的需求。 9 苹果操作系统软件自动化测试的研究与实现 第三章苹果操作系统自动化测试在实际 项目中的可行性分析 3 1项目介绍 上一章介绍了目前常见的两种苹果操作系统上的软件自动化测试方法,分析 了各自的优缺点。实际项目中需要针对项目自身的特点选取合适的自动化测试方 法,并证明该方法的可行性。 该项目是实现苹果操作系统上一款应用程序的自动化测试。这款应用程序是 一款c s 冽架构的网络协同软件的客户端程序,支持多台计算机之间的交互。提 供多种功能,诸如多点即时通讯,点对点传输文件,点对点视频语音聊天,电 子白板,分享桌面,分享多媒体文件,分享软件等等。这是一款逻辑非常复杂的 商业软件,为了保证产品质量在发布之前必须进行严格的测试。逻辑越复杂的软 件验证点越多,这款软件的验证点多达几万个,如果采用传统的由测试人员手动 测试的方法来完成,需要大量的时间,拖延了产品上线的时间,而且无法保 证产品的质量。所以必须采用测试效率更高,测试质量更高的自动化测试方 法来完成测试工作。 选用合适的自动化测试方法是完成该项目的关键,这个自动化测试方法 必须满足下列性能要求 2 7 1 : 第一:为了保证每个验证点都覆盖到,该自动化测试方法必须能够对待测客 户端软件所有的g u i 元素进行测试。也就是说必须能够定位到所有的g u i 元素; 能够对这些g u i 元素进行正确的操作;并且可以记录下软件的反馈进行操作验 证。 第二:为了缩短软件的研发周期,该自动化测试方法必须是高效的,应 该发挥计算机运算速度快的优势。 第三:为了降低软件研发成本,该自动化测试方法的研究和后期自动化 测试脚本的维护费用应该控制在一个可以接受的范围内,如果研究经费和维 护费用已经超过了该商业软件本身的价值,该方法也没有实用价值。 1 0 第三章苹果操作系统自动化测试在实际项目中的可行性分析 第四:只有稳定的测试方法才能保证待测软件的质量,所以该方法必须 运行稳定,不能过多地依赖测试环境。必须保证在绝大多数情况下,该方法 能稳定的运行在计算机上,准确地对各个g u i 元素操作并能够顺利得到软件 对各种操作的反馈。 第五:该方法在测试结束后应该可以生成测试日志和执行报告,这样测 试人员只要等脚本运行结束后查看相应的日志和执行报告就能知道哪些功 能通过了测试,哪些功能没有通过。 3 2 使用现有方法的可行性 现行的两种苹果操作系统上的自动化测试方法有各自的优点和局限性,对于 项目中的客户端软件是否适用需要加以验证。 第一种方法的适用条件是待测软件必须提供“a p p l e 事件疗的接口函数,以 便a p p l e s c r i p t 编写的测试脚本可以通过这些接口找到目标g u i 元素,并通过收 发相应的“a p p l e 事件 来实现对这些g u i 元素的操作。但是该客户端程序并没 有提供任何的“a p p l e 事件接1 :3 ,如果想后期植入的话则需要将整个客户端软 件的几十万行代码重新编译,工作量过大无法保证在规定时间内完成。所以第一 种方法对于该项目不可行。 第二种方法实际相当于模拟测试人员对软件进行的黑盒测试【2 8 】,所以理论上 该方法适用于一切软件的自动化测试。如果待测软件是功能比较简单验证点较少 的软件,这种方法可以很好地胜任。但是如果待测软件是逻辑非常复杂,功能很 多,验证点数量庞大的大型商业软件的话,用这种方法就需要录制成千上万的脚 本,并连续不断的对他们进行更新维护。这样所花费的人力物力就大大超过了可 接受的范围,所以第二种方法对于该项目也不可行。 3 3探索新的方法 现行的两种自动化测试方法无法满足项目的需要,需要研究出一种新型的自 动化测试系统。这种系统必须提供一个整体的框架结构来实现包括如何解析脚本 里的命令语句;如何在整个客户端软件中找到目标g u i 元素;如何对目标g u i 元素实现单击、双击、拖动等操作;如何验证操作结果以及如何实现与其他计算 机上的客户端程序之间的交互等等。经过调研,我们发现了可以实现上述目标的 新方法一种通过苹果操作系统的“辅助功能支持 ( a e e e s s i b i l i t y s u p p o r t 2 9 3 伽) 接1 2 1 函数来实现的软件自动化测试方法。 1 2 第四章一种新型苹果平台软件自动化测试系统的设计与实现 第四章一种新型苹果平台软件自动化测 试系统的设计与实现 4 1背景介绍 首先来介绍一下苹果操作系统的“辅助功能支持 。这实际上是一组特定的 接口函数,专门为弱听,弱视,肢体残疾人士设计 2 9 1 。任何一款软件如果向外界 提供了足够多的“辅助功能支持 接口函数,那么它就是一款“可访问的应用程 序 ,即a c c e s s i b l e a p p l i c a t i o n 3 1 1 。其他的软件就可以通过苹果操作系统提供的“辅 助功能支持”接口函数定位到这些“可被访问的应用程序 内部的g u i 元素, 从而对它们进行相关的操作。 图4 1“辅助功能支持”接口函数 任何“可被访问的应用程序”的g u i 元素都可以通过苹果公司为我们搭建好 的这个“入口”找到,然后实现对它们的各种操作。例如,一款专门为双目失明 人士设计的“可被访问的应用程序”的内部g u i 元素信息都会被苹果操作系统 “辅助功能支持”接口函数展示给其他的应用程序,第三方应用程序可以通过这 些信息定位到目标g u i 元素然后对其进行各种操作。该应用程序只需要再向外 提供语音命令接口就能够帮助盲人用户顺利地操作这款“可被访问的应用程序”。 1 3 苹果操作系统软件自动化测试的研究与实现 从这个例子可知,实际上苹果的“辅助功能支持 就是为软件开发公司提供了一 个通道,借助这个通道我们可以访问任何“可被访问的应用程序 的内部g u i 元素,对它们进行操作。这很符合我们需要达到的自动化测试目标,所以可以基 于“辅助功能支持 设计一种新型的苹果操作系统上的软件自动化测试方法一 苹果自动化测试方法。 4 2需求分析 为了这种新型的软件自动化测试方法满足项目的需要,在设计之前先来分析 一下所要达到的目标。 1 第一点,苹果自动化测试方法必须是充分解耦的。为了最大限度的降低 测试人员的技术门槛,使更多的非专业人员可以不经过培训或是经过少 量的培训就能够独立编写测试脚本,这个方法必须设计成充分解耦的。 这样就可以实现测试脚本和所需的测试数据解耦、实际g u i 元素和脚 本里的对象解耦、脚本的代码描述和实际操作的解耦。在实际设计过 程中要让一些不需要人工完成的工作统统交给苹果自动化测试方法来完 成,一些内部的公共功能也全部由苹果自动化测试方法再封装一层,向 外只提供一些函数接口供测试人员使用,这些接口包括用于对g u i 元素 进行操作的接口,如定位接口,验证接口等等。这样测试人员不需要知 道脚本命令在测试方法内部是如何实现的,也不需要知道苹果自动化测 试方法是如何通过“辅助功能支持 找到目标g u i 元素并对其进行操作 的,测试人员只需要知道脚本命令的用途和语法即可独立完成自动化脚 本的编辑。 2 第二点,苹果自动化测试方法应该能自动记录测试日志和生成执行报告。 测试日志和执行报告是每完成一次自动化测试都需要生成的测试结果。 如果每个测试脚本都要加上记录日志和生成执行报告的代码,那就做了 很多的重复性劳动,增加了没必要的人力投入。有了相应的测试日志和 执行报告,测试人员才能根据日志和报告里的描述知道哪些验证点通过 了测试,哪些验证点没有通过,甚至可以查出是哪一个函数的问题导致 1 4 第四章一种新型苹果平台软件自动化测试系统的设计与实现 了测试的失败,这就大大方便了测试人员对测试脚本进行修改和调试, 从而减少了软件研发所需的时间。 3 第三点,苹果自动化测试方法应该是稳定的,高效的,准确的。首先苹 果自动化测试方法应该能够稳定地对待测软件进行操作、验证,这就需 要测试的时候能够排除外界因素的干扰。例如,当自动化测试进行的过 程当中,另一个程序的一个弹窗弹出来,并取得屏幕焦点。这时苹果自 动化测试方法应该能够顺利的执行下去并得到正确的测试结果,这就需 要苹果自动化测试方法在定位g u i 元素的时候要准确,而且需要增加验 证机制。然后是高效性,自动化测试所消耗的时间应该越少越好。这样 整个软件研发的周期会大大缩短,并且测试人员在调试脚本程序的时候 也会更加迅速,否则调试一个程序就需要花费很长时间,那么会白白消 耗掉很多本来可以节省下来的时间。所以,苹果自动化测试方法内部采 用的算法必须是高性能的,特别是对于g u i 元素的定位算法。因为整个 自动化测试系统里最消耗时间的就是对g u i 元素的定位,所以对于g u i 元素定位的算法要慎重选择。最后是准确性,在自动化测试中,对于一 个验证点的测试往往是需要对很多个g u i 元素进行操作,这些g u i 元素 有的是一直存在并且可用的,而有的却是隐藏起来的或者一开始是不可 用的,需要通过先对其他g u i 元素进行操作才能将这些g u i 元素显示出 来或者是激活,如果上一个操作没有完成就跳到了后面就会导致整个后 面的测试无法继续下去。所以要求苹果自动化测试方法对g u i 元素的操 作要准确到位,点击一个g u i 元素按钮,一定要等到g u i 元素按钮被点 击过之后才能跳到下一个动作,有的时候在一切配置比较低的计算机上 进行自动化测试,经常会因为c p u 或者内存资源不够,而导致计算机无 响应,如果因为计算机无响应使得上一个操作没有成功就会导致测试无 法向下进行。所以苹果自动化测试方法必须提供对g u i 元素的操作进行 验证,可以通过g u i 元素被操作以后属性发生的变化如颜色变化,文字 变化,大小变化等等的变化来判断一个g u i 元素是否被操作过了,等到 苹果自动化测试方法确定该g u i 元素已经被脚本命令操作过了才可以执 行下一个命令,否则需要一直等待,直到上一次操作正确完成。这样可 1 5 苹果操作系统软件自动化测试的研究与实现 能会增加自动化测试的时间,但是自动化测试的准确性得到了保证,不 会因为某些操作的遗漏或者重复导致测试结果的不准确甚至是得不到测 试结果。 4 第四点,苹果自动化测试方法应该支持数据通讯功能。因为该项目中待 测的客户端软件支持多台计算机之前的数据通讯。所以在自动化测试的 时候,不可避免的需要覆盖到多台计算机同时测试的验证点。这就需要 苹果自动化测试方法支持数据通讯,使得多台计算机上运行的苹果自动 化测试方法可以互相传送g u i 元素状态和操作指令,使得自动化测试在 多台计算机上有条不紊的进行j 保证最终能得到正确的执行报告。这个 数据通讯模块也应该在苹果自动化测试方法内部来实现,对外只提供接 口函数,测试人员只需要输入几个简单的命令如“s e n d 、“r e c e i v e 等就 能实现与其他计算机的通讯,这样做也符合前面提到的第一点的要求。 在整个设计过程中都应该围绕着以上四点设计,尽量使设计出来的测试方法 满足上述四点的要求,但是有些需求以我们现阶段的技术条件还达不到,这些需 求会在后期继续研究努力实现。 4 3苹果自动化测试方法的设计和实现 4 3 1 苹果自动化测试方法的设计思路 上一章节中对苹果自动化测试方法提出了四点需求,在设计整个苹果自动化 测试方法的时候只有按照这四点来设计才能使最终设计出来的测试方法满足项 目的需要。 1 为了使整个苹果自动化测试方法充分的解耦,把它设计成由k e yw o r d 驱动的模式。测试人员只要懂得k e y w o r d 的用法,不需要知道具体的内部逻辑, 这样就有效地降低了整个苹果自动化测试方法的耦合性。为了实现这个目的,需 要在苹果自动化测试方法内部提供一个对k e yw o r d 的解析组件,这个解析组件 将测试人员写的脚本代码里的k e yw o r d 命令解析成为可以被专门负责实现各种 操作的操作处理组件识别的指令,再由这个操作处理组件层层调用苹果系统内部 1 6 第四章一种新型苹果平台软件自动化测试系统的设计与实现 的特定的接口函数,这样就可以将脚本代码里的k e yw o r d 逻辑地址与实际的苹 果操作系统底层的实际功能函数的物理地址映射起来,实现将脚本代码里面的 k e yw o r d 命令翻译成苹果计算机能看懂的机器语言。这样就实现了脚本的代码 描述和实际操作的解耦;另外前面提到的专门负责实现各种操作的操作处理组 件则实现了实际g u i 元素和脚本里的对象解耦,脚本里的对象名可以由测试 人员自定义成比较容易记住的形象的名字,只要将这个名字通过操作处理组 件与实际应用程序操作界面上存在的g u i 元素对应起来,就可以将两者很好的 解耦。测试人员只需要记住相对容易记忆的对象名,比如“s t a r t b u t t o n 等即 可,而不需要记住实际的g u i 元素名,比如“w b xc h a t w i ns t r a t m e n u ”。 2 测试日志和执行报告是每次自动化测试都需要生成的两种测试结 果。为了减少测试人员编写脚本的工作量,苹果自动化测试方法内部需要设计 两个组件,一个是日志组件,一个是执行报告组件,日志组件将在测试进行的同 时将测试的执行状况一行行的打出来,供测试人员调试用。执行报告在整个自动 化测试完成之后以图表形式发送给测试人员。这样测试人员在测试结束后可以通 过查看日志和执行报告发现哪些测试点通过了自动化测试,哪些没用通过,以及 哪些功能函数执行了,哪些没有执行。从而知道软件哪里出现了错误,大大节省 了测试时间。 3 为了保证设计出来的苹果自动化测试方法是高效率的,苹果自动化测试 方法内部的操作处理组件采用的查找g u i 元素的搜索算法应该性能足够高,选 用合适的搜索算法成为保证测试高效率的关键所在。搜索算法的选择在后面的文 章中会重点描写,此处先不介绍。同时,设计出来的苹果自动化测试方法还要保 证稳定性和准确性,这就需要苹果自动化测试方法内部的操作处理组件里有对 g u i 元素操作的验证机制。苹果自动化测试方法可以通过苹果操作系统的“辅助 功能支持 接口函数得到g u i 元素的一些属性,如g u i 元素状态,g u i 元素颜 色,g u i 元素坐标等等,通过这些属性的改变可以验证对g u i 元素的操作是否 完成。但是一个复杂的应用程序软件不可能提供全部的“辅助功能支持,为了 保护公司核心技术、提高软件产品的安全性能,肯定有很多的g u i 元素都是自 绘【3 2 】出来的,这些g u i 元素的属性显然无法通过“辅助功能支持”接口函数得 到。由于客户端应用程序内部有数量庞大的g u i 元素,软件开发人员也无法为 1 7 苹果操作系统软件自动化测试的研究与实现 测试人员提供全套的g u i 元素接口函数。这就导致了客户端应用程序内部的一 部分g u i 元素可以通过“辅助功能支持弦接口函数查看属性,并实现对g u i 元 素的操作验证:而另一部分的g u i 元素则不能。所以苹果自动化测试方法内部 采用了一套自定义的机制来实现对这部分g u i 元素的定位、操作和验证,这个 会在下文中详细介绍。 4 为了实现多台测试计算机上的苹果自动化测试方法的数据通讯,使得对 多用户之间的交互功能的测试成为可能,必须在苹果自动化测试方法内部增加一 个数据通讯组件。这个数据通讯组件通过一个成熟的开源的软件自动化测试框架 s t a f 【3 3 1 1 3 4 1 来实现和其他计算机上的苹果自动化测试方法内部的通讯组件之 间的数据和指令的交互。 4 3 2 苹果自动化测试方法的架构 苹果自动化测试方法包括了五个组件命令解析组件,操作处理组件,日 志记录组件,执行报告组件和数据通讯组件。图4 2 是苹果自动化测试方法的结 构示意图。 图4 2 苹果自动化测试方法结构图 4 3 3 命令解析组件的解决方案 第四章一种新型苹果平台软件自动化测试系统的设计与实现 4 3 3 1 命令格式的设计 为了实现苹果自动化测试方法的命令解析功能,首先必须设计好命令的格 式,即测试人员用来编写自动化测试脚本所用的语法。一条命令一般来说要包含 三个必要元素,分别是操作对象,操作指令和操作值。操作对象就是想要操作的 那个g u i 元素的名称,操作指令就是通常所说的k e yw o r d ,是一些简单易懂的 指令名称,操作值就是一些测试数据和测试参数。这种命令结构和我们常用的网 页开发语言可扩展标记语言【3 5 】【3 6 】( e x t e n s i b l em a r k u pl a n g u a g e ) 的语法结构 很类似,所以我们选择采用一种类似于可扩展标记语言的语法结构作为苹果自动 化测试方法命令的语法结构。具体实现方式是分别用标签和关闭标签将操作对 象,操作指令和操作值封装起来。对于操作对象的标签,使用 和 来封装;对于操作指令用 和 来封装;对于操作值我们用 和 来封装。每条命令前后用 和 来封装。 所以一条完整的命令可以写成下面的形式: s t a r t b u t t o n s t a r t c h a t h e l l o ! 上述的命令完成了对g u i 元素“s t a r t b u t t o n 的操作,最终实现了“s t a r t c h a t ” 这个关键词所对应的操作,也就是实现了开始和某台计算机聊天的功能。其中 h e l l o ! 表示的是聊天的内容。这里操作值也可以省略,写成 表示仅仅开始聊天,但还没有输入聊天内容。 使用类似于可扩展标记语言语法的命令结构有以下几点好处: 第一点:操作对象,操作指令和操作值分在不同的标签里,清楚易懂,一目 了然。实际编辑好的自动化测试脚本里的命令肯定是几十甚至是上百条的,如果 脚本命令的语法结构不清晰的话,测试人员在查看的时候就会很困难,很容易混 淆。特别是维护脚本的时候,维护脚本的测试人员和脚本的作者往往不是同一个 人,那么就需要维护脚本的测试人员在维护之前必须将整个脚本先看懂才能开始 维护,这就大大地降低了工作效率。而如果采用清晰易懂的类似于可扩展标记语 1 9 第四章一种新型苹果平台软件自动化测试系统的设计与实现 图4 7 命令解析组件工作流程图 4 3 4 操作处理组件的解决方案 4 3 4 1 总体思路 上一章节中的命令解析组件将测试人员编写的自动化测试脚本解析成对象, k e yw o r d 和变量三个独立元素,再将k e yw o r d 和实际功能函数物理地址映射起 来,最后完成底层功能函数的调用。调用之后就要由苹果自动化测试方法来执行 这个功能函数,并实现这个功能函数所要实现的操作。软件自动化测试脚本里需 要完成的基本操作主要有对g u i 元素的查找定位,对g u i 元素的操作以及对g u i 元素的操作验证。大部分的自动化测试脚本都是由这三个基本操作的排列组合交 替循环而成的。所以苹果自动化测试方法只要能很好地支持这三个基本操作,就 能够实现所有功能函数的操作。 4 3 4 2 两种类型g u i 元素的介绍 第四章一种新型苹果平台软件自动化测试系统的设计与实现 些工作就实现了自动化测试任务的大部分。接下来需要得到测试过程中脚本 运行的状态信息和最终的执行结果。 4 3 5 日志记录组件和执行报告组件的解决方案 4 3 5 1 日志记录组件 日志记录的是苹果自动化测试方法运行时各个组件工作状况的一些信 息,通过记录下来的日志信息测试人员可以清楚地看出测试过程中哪些组件工作 正常哪些出现异常,异常发生的时间以及出现异常的功能函数名等等,这样为测 试人员调试程序或者再现程序漏洞提供了依据。 苹果自动化测试方法采用的日志格式是:“时间+ 模块名+ 脚本名+ 命令行数 + k e yw o r d + 执行状态 ,如“2 0 1 1 0 1 0 1 1 2 :0 0 :0 0 c h a tt e s tc h a t1 0 0 c h a t s e n df a i l e d 这条日志表明2 0 1 1 年1 月1 日1 2 点钟c h a t 模块的测试脚本 t e s tc h a t 中的第1 0 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-北京-北京汽车驾驶与维修员一级(高级技师)历年参考题库含答案解析
- 2025年中级卫生职称-主治医师-重症医学(中级)代码:359历年参考题库典型考点含答案解析
- 2025年通信专业技术-通信专业技术(中级)-中级通信专业技术(设备环境实务)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-汽轮机本体检修工-汽轮机本体检修工(高级)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-供水供应工-供水供应工证(高级)历年参考题库含答案解析(5套)
- 2025年综合评标专家-湖北-湖北综合评标专家(交通运输厅)历年参考题库含答案解析(5套)
- 热电厂锅炉安全知识培训课件
- 季氏将伐颛臾课件
- 烟草公司消防知识培训课件
- 烟花爆竹基础知识培训课件
- 号线项目tcms便携式测试单元ptu软件使用说明
- 艺术课程标准(2022年版)
- 癫痫所致精神障碍
- 卫生部手术分级目录(2023年1月份修订)
- 电荷及其守恒定律、库仑定律巩固练习
- YY 0666-2008针尖锋利度和强度试验方法
- GB/T 6663.1-2007直热式负温度系数热敏电阻器第1部分:总规范
- 小沈阳《四大才子》欢乐喜剧人台词
- 全套课件-水利工程管理信息技术
- 缝纫机线迹图示教学课件
- 2022年衡阳市南岳区社区工作者招聘笔试题库及答案解析
评论
0/150
提交评论