网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Appium的手机应用程序自动化测试研究
范文 姚炯
摘要摘要:随着智能手机应用的深入,智能手机应用程序也逐步从轻量级应用向更复杂的应用演化,应用端的自动化测试显得日益重要。现阶段手机应用测试都会遇到平台兼容性不佳和测试效率较低等问题,选择和搭建一个基于手机应用测试的自动化测试框架十分必要。选用时下兼容性和稳定性都较强的自动化测试框架Appium,通过研究其主要特性和工作原理,搭建了一个跨平台的手机自动化测试框架,解决了一些手机自动化测试难点,实现了一个具有高兼容性和易用性的跨平台自动化测试项目,通过比较评估了实际测试效果。
关键词关键词:Appium;手机自动化测试;测试框架
DOIDOI:10.11907/rjdk.162237
中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2017)001012904
引言
自动化测试是随软件开发技术一并发展的一种测试技术。软件测试包括白盒测试与黑盒测试,而自动化测试最早使用白盒测试中的单元测试。这种测试方式较为高效,易于实现。黑盒自动化测试兴起稍晚,但目前应用也非常广泛。黑盒自动化测试原理是用程序和脚本模拟用户的操作行为,通过智能方式验证软件的关键检查点。在桌面软件和Web技术兴盛时代,涌现出大量优秀的自动化测试工具如QTP和webdriver[1],这些工具经过不断完善已经逐步成熟,能够较好地满足传统应用的自动化测试需求。
智能手机的应用带来软件测试技术新的革命,相比于传统测试,手机测试在硬件上脱离了PC的传统架构,和用户的交互方式存在很大区别。手机软件在使用上具有独特的操作方式,比如用户的滑动、触摸和点击等操作,如何实现手机客户端上的自动化脚本执行[2]成为这类测试的难点。又由于IOS和Android两大平台的市场格局,大部分手机应用都需要支持多个平台,它们的基础架构不尽相同,使得手机自动化测试框架对兼容性有了更高要求。要做好手机客户端的自动化测试,首先要解决测试脚本的健壯性和平台的兼容性问题。
近几年手机客户端自动化工具发展较快,出现了不少自动化框架,比如基于Android平台的UiAutomator和Robotium,IOS自带的Instrument等,但是这些工具都没有有效解决平台兼容性问题,无法用一个统一的框架驱动不同平台测试,而且在识别客户端内容和元素时也存在偏差,测试脚本不够稳定健壮。目前具有良好兼容性且框架成熟稳定的工具是Appium。Appium是一个开源的、跨多平台多语言的测试框架,相比于其它框架,它编写测试脚本和运行测试时不需要对源码重新编译,在脚本的编写和实现上也对编程语言没有太多要求,测试更轻量灵活。此外,Appium采用了C/S架构,提供了一个统一的对外服务接口,使得客户端或模拟器的交互和控制透明化。本文对Appium的主要特点和功能进行了分析和介绍,阐述了在手机测试过程中如何应用Appium提高手机测试工作效率问题[3]。
1手机自动化测试工具
1.1Appium简介
Appium主要包含:Appium Server、Appium GUI和Appium Client。
(1)Appium Server。Appium Server是用Node.js 实现的一套遵循restful框架的服务,可以直接通过NPM安装,它是面向Appium脚本开发人员的统一服务接口,是客户端控制与测试脚本之间的桥梁。
(2)Appium GUI。它是基于MAC和Windows环境的一个Appium控制台,整合了Appium的所有核心功能,具有强大的跨平台驱动能力,可应用于IOS和Android的基础驱动,检测和定位客户端元素,对当前运行环境进行诊断。
(3)Appium Client。Appium Client是一个包含多种编程语言实现的Appium API,其中包括Ruby、Java等。它实现了Mobile JSON Wire 的标准化协议,为测试脚本开发者提供了灵活多变同时又非常强大的程序接口。1.2Appium基本工作原理
Appium框架其实是IOS和Android系统自动化库的封装,采用C/S架构,Appium Server在运行时会时刻监听Client端发送的操作请求,服务端和客户端的交互遵循JSON Wire协议,并通过它所实现的翻译器将任何编程语言所实现的测试脚本请求发送给模拟器或者移动终端,通过这种机制实现手机模拟器和真机的自动化操作[4],见图1。
图1Appium工作原理
1.3Appium特性
(1)跨平台。平台兼容性是Appium最为强大的特性,Appium用一种统一的协议实现了自动化测试平台的兼容。操作IOS设备时它会调用IOS的instrument框架,而在Android平台中则封装了UIautomator框架。另外,Appium不单单支持客户端兼容,在Appium的Server端,同样支持包括OSX、Windows和Linux平台,这就使得Appium的环境搭建更具扩展性。根据测试需求,Appium甚至可以搭建在云端服务器。另外在实现语言方面,Appium提供了Java、Ruby、Python等多语言接口,给测试程序设计者带来极大的选择空间。
(2)无源代码依赖。手机客户端测试框架运行一般都需要在客户端的源码环境下进行,而且在自动化脚本的执行之前都需要对手机App源码重新编译,这种机制导致自动化执行效率较低。Appium隔离了手机开发的源码环境和自动化脚本开发环境,使自动化测试从手机开发流程中独立出来,单独运行,自动化测试更轻量,提高了测试效率。2手机测试框架搭建
Appium的设计理念和几大组件可统一Android和IOS的自动化测试,下面通过部署和搭建一个跨平台的Appium测试框架来介绍其特点。2.1系统环境准备
跨平台的手机测试首先需要在PC平台上建立不同的模拟器。由于IOS平台的封闭性,不能搭建于Windows平台,因此本文的框架需要OSX操作系统支持。OSX系统自带IOS开发环境和IOS模拟器,因此Appium可以直接关联并启动相应的IOS模拟器。而对于Android则首先需要下载和安装Android的SDK开发环境,并手工创建相应版本的模拟器。2.2Appium环境搭建
Appium主要组件由Appium Server和Appium Client 组成,而Appium GUI包括了Appium Server的全部功能,因此搭建Appium 环境仅需要搭建Appium GUI 和Appium Cient即可。
(1)Appium GUI。由于Appium GUI提供了Windows和OSX双平台支持,因此仅需要在其官方网站上下载指定版本并安装即可。
(2)Appium Client。客户端的搭建也非常简单,本文使用Ruby开发语言实现自动化测试,因此需要下载Appium 的Ruby API,并将这些API导入RubyMine项目。
2.3Cucumber测试框架搭建
Cucumber是运行Appium测试的一种上层驱动框架,是一种基于行为的测试编写和管理平台。Cucumber通过一种类似自然语言的编写接口,让不熟悉软件开发语言的测试者可以用直观易懂的接口去组织和运行自动化测试。Cucumber还能与RubyMine开发环境完美集成。
3项目测试实现
通过一系列相关组件的安装和搭建,完成了Appium跨平台集成开发和测试环境。本文通过实现一个跨平台自动化测试项目来展现本文自动化测试框架的特点和优势。
自动化测试项目实现过程:①底层操作行为封装;②用户操作抽象;③检查点逻辑封装;④Cucumber测试用例的实现和运行。
3.1底层操作行为封装
4测试难点解决方案
智能手机和传统PC平台操作方式有很大区别,大部分用户输入都是通过各种手势操作实现的,比如滑动、长按和点击等操作。在一条相对复杂的测试用例编写中,需要完整而稳定地模拟出一系列用户的操作组合。而基于不同的架构平台,用户的操作方式也会不同。本文针对手机测试中的一些难点,提出结合Appium框架的解决方案。4.1系统级控件操作
目前手机操作系统都有许多系统級别的控件,比如系统提示和系统信息,这些组件原本不属于手机的应用程序,但是很多情况下都会与系统消息或系统提示交互[5],影响手机自动化测试的流畅性。由于这些控件并不属于应用程序本身,因此难以定位也难以抽象成操作对象。要让自动化脚本流畅运行,首先需要解决系统控件交互的问题。图2是一个系统级别通知消息的例子。
图2系统级操作控件
对于这些系统级别操作,Appium框架通过一些通用的平台驱动予以解决,比如在IOS平台中,Appium首先通过检查和定位系统级别的通知栏目,然后使用相应的接口,用独立于测试目标应用之外的动作去点击和关闭这些系统级提示,示例代码如下:
当下的自动化测试框架都有平台的局限性,一般来说都是一个工具对应一个平台,因而要实现不同平台的自动化测试,就需要对IOS和Android系统开发不同的测试应用,而由于测试对于框架和项目源码的依赖性很高[7],不同平台之间的测试脚本基本没有关联性,也不能重复利用,因此要实现不同平台的自动化测试成本会较高。本文实现的框架一大特点是基于不同的平台,可以利用同一套测试脚本测试,对测试编写人员来说,平台的兼容性变得透明,只需要编写出一个统一的测试脚本就可以运行在不同的平台上。这种方式将极大提高自动化测试脚本的使用率,节省编写和调试测试脚本的时间。5.2近似于自然语言的测试用例
自动化测试脚本一般来说都由高级语言编写,其语法和开发代码是相同的。由高级语言组织成的测试用例不太容易让阅读者理解。要理解一个测试脚本的测试逻辑,首先要能读懂测试代码,而有时候测试人员可能不太精通高级语言,编写自动化脚本较困难。为了解决这个问题,本文使用了Cucumber框架与Appium结合,通过层级封装方式,实现了近似于自然语言的、能够自动化运行的测试用例。这种测试用例易于理解,易于编写,测试人员可快速熟悉。5.3解决了系统级弹出框对测试运行的影响
当下大部分自动化测试都会与项目源码绑定,在脚本运行前一般都需要项目的整体编译,较耗费时间[8]。另外,测试在运行过程中会受到不少系统弹出框的干扰。由于测试项目与源码绑定,导致要识别和处理系统级弹出框十分困难。本文通过实现Appium提供的平台驱动,将测试项目与开发项目相隔离,使自动化测试独立运行。同时,通过特定的程序接口,识别并处理系统级的弹出窗和系统消息,使得测试脚本更健壮,运行更流畅。6结语
本文介绍了手机测试的基本情况,分析了跨平台手机测试难点,通过对当下一些手机测试工具调研,选择成熟的Appium作为跨平台测试工具。结合自动化测试框架组件和要素,设计和实现了接近自然语言、易于理解且能够跨平台运行的手机自动化测试脚本。参考文献:
[1]PAREEK,PEEYUSH,RAJNEESH. A comparative study of mobile application testing frameworks[J].Expansion, Impact and Challenges of IT & CS,2015(2): 8384.
[2]王益芝. 浅析智能手机的自动化测试[J].现代电信科技,2012(12):2325.
[3]SHAH, GAURANG, PRAYAG SHAH, et al. Software testing automation using appium[J]. International Journal of Current Engineering and Technology,2014(3):152156.
[4]SINGH, SHIWANGI, RUCHA GADGIL,et al. Automated testing of mobile applications using scripting technique: a study on appium[J]. International Journal of Current Engineering and Technology,2014(5):1116.
[5]徐骋. Android应用软件自动化测试框架的研究[D].大连:大连海事大学,2015.
[6]郑婷婷,黄英持. Android应用的多设备自动化测试实现[J].软件导刊,2016,15(4):9697.
[7]牛璐. 手机软件自动化测试方法研究与应用[D].郑州:中国人民解放军信息工程大学,2012.
[8]张舜尧. 手机自动化测试系统设计浅析[J].开发研究与设计技术,2007(20):412413.
责任编辑(责任编辑:杜能钢)
第1期 周甄珍,王浩宇:基于GJB5000A三级过程域的软件开发管理探讨软 件 导 刊2017年标题
随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 9:07:46