APP下载

基于Appium的UI自动化测试框架

2018-05-11李思佳王茜高筱竹

科技视界 2018年6期

李思佳 王茜 高筱竹

【摘 要】通過编写自动化测试脚本,利用搭建好的自动化测试框架,对应用进行自动化测试,并将测试结果反馈给测试人员。研究被测应用程序的UI测试点,进行测试用例的编写,使得测试用例能够完全覆盖被测应用,通过脚本和用例对一款应用进行自动化UI测试。

【关键词】Appium;UI自动化测试;Maven;TestNG;数据驱动测试;Jenkins

中图分类号: TP311.52 文献标识码: A 文章编号: 2095-2457(2018)06-0141-002

【Abstract】Through the preparation of programming automated test scripts,and make use of built automated test framework, make automated testing of the application,and give the test results to the testers. Study the UI test points of the tested APP,and write the test cases,making the test cases can completely cover the application under test,through an example of scripts and use cases for automated UI testing.

【Key words】Appium;UI Automation Testing;Maven;TestNG;Data Driven Testing;Jenkins

0 引言

如今移动应用是一个很热的话题,一个移动应用离不开好的用户体验,所以UI测试已经成为移动应用测试的重中之重。 自动化 UI测试创建测试代码来执行测试任务,各种测试任务覆盖不同的使用场景,然后测试框架来运行测试任务。

Android基于UI层面的自动化测试工具,其主流测试方法主要有以下两种。其一是Instrumentation,通过把测试代码和应用代码 ,运行在同一个进程中,通过Java反射机制,来获取当前窗口所有视图,并查找到目标控件的属性信息,计算出目标控件中心点坐标;再利用Instrument内部接口,实现点击操作;其代表有Robotium。另一种则是通过Android提供的各种服务,来获取当前窗口的视图信息;其主要特点是:测试代码和被测应用各自运行在各自的进程内,相互独立;其代表有 Ui Automator、Appium。

通过Appium搭建的UI自动化测试框架测试应用的范围更加广泛,节约测试时间,提高测试效率。Appium是一款基于UIAutomator和UIAutomation两者的UI自动化测试框架,能够实现针对不同平台使用同一套API,带来极大的便利。

1 总体技术方案

1.1 技术方案

针对各种测试框架工具的整合以达到构建完整测试框架的目的。进一步研究被测APP的UI测试点,进行测试用例的编写,使得测试用例能够完全覆盖被测应用。达到只通过脚本和用例便能够对一款应用进行自动化UI测试的目的。用到的工具除了Appium,还有maven、TestNG、Git、Jenkins。

maven项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。由于maven的缺省构建规则有较高的可重用性,所以常常用两三行 maven 构建脚本构建简单的项目。在自动化项目中的使用maven的主要目的是帮助构建自动化项目(jar包管理,编译,执行测试等),非常方便。

TestNG,即Testing Next Generation,下一代测试技术,是一套根据JUnit和NUnit思想而构建的利用注释来强化测试功能的一个测试框架,即可以用来做单元测试,也可以用来做集成测试。

Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,并且具有代码托管的功能。

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。

具体的设计思路如下图图1所示

1.2 技术路线

(1)搭建测试脚本的代码框架

(2)在服务器上搭建git仓库,并将测试代码提交到服务器。

(3)在服务器上进行相应的环境配置,安装Jenkins,安装邮件通知插件。

(4)整合git和Jenkins,使其能够形成一个整体。

(5)进行被测APP的筛选,编写测试脚本,利用测试框架进行测试。

2 关键技术

2.1 环境配置

Java环境

Maven环境配置:将已经下载的maven完整jar包版的压缩包进行解压缩操作,同样放入到Dev目录下。将已经下载好的maven压缩包解压缩并将解压出来的文件夹放如d盘dev目录下。接下来需要配置下MAVEN_HOME以及 bin目录,找到Path变量;%MAVEN_HOME%\bin

保存之后,打开CMD,输入mvn -v,如果返回以下内容,证明maven的环境变量配置好了:

Appium: 将已经下载的maven完整jar包版的压缩包进行解压缩操作,同样放入到Dev目录下。

·Android SDK

配置ANDROID_HOME

;%ANDROID_HOME%\tools

; %ANDROID_HOME%\platform-tools

保存之后,打開CMD,输入adb 返回以下内容表示环境变量配置完成

2.2 测试应用程序

maven项目的根目录下新建res/app目录,将安卓测试APP放入此目录:

启动Appium Server

启动Appium Server,用于接收和处理来自client的请求。双击已经安装好的Appium

如果出现:

> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457

bd285c0cc62430d)

> info: Appium REST http interface listener started on 127.0.0.1:4723

>info:[debug] Non-default server args: {"address":"127.0.0.1","logNoColors":true,"platformName":

Android","platformVersion":"19","automationName":"Appium"}

> info: Console LogLevel: debug

表明服务启动成功。

鼠标右键执行run as TestNG test,用例就开始执行了

2.3 Appium实现思路框架

Appium 遵循着一种哲学,重点体现于以下4个需求:

·你无需为了自动化,而重新编译或者修改你的应用。

·你不必局限于某种语言或者框架或者平台来书写和运行测试代码。

·一个移动自动化的框架不应该在接口上重复造轮子。(移动自动化的接口应该统一)。

源代码必须开源

第三方框架封装成一套API,WebDriver API.WebDriver(也就是"Selenium WebDriver")指定了客户端到服务端的协议(JSON Wire Protocol)。使用这种客户端-服务端的架构,我们可以使用任何语言来编写客户端,向服务端发送恰当的HTTP请求。目前已经实现了大多数流行语言版本的客户端,这意味着你可以使用任何测试套件或者测试框架。客户端库就是简单的HTTP客户,可以以任何你喜欢的方式潜入你的代码。换句话说,Appium和WebDriver 客户端不是技术意义上的“测试框架”,而是“自动化库”。你可以在你的测试环境中随意使用这些自动化库!

2.5 数据驱动测试简介

数据驱动测试将测试脚本与测试数据放在同一个测试架构中,该测试架构提供可重用的测试逻辑,目的是减少测试维护工作量和改善测试覆盖率。测试输入数据和测试结果数据都会被存储在一个或者 多个数据源、数据库中,数据存储格式和数据组织方式依赖于具体实现。测试数据与测试逻辑分离,当测试数据发生改变时,不会影响测试逻辑。同一个测试逻辑可以针对不同数据来进行测试,提高了测试逻辑的使用效率和可维护性。

3 总结

3.1 项目成果

本项目的主要目标是通过编写自动化测试脚本,利用搭建好的自动化测试框架,对应用进行自动化测试,并将测试结果反馈给测试人员。由此减少测试工作人员对UI测试的工作量,提高测试人员的工作效率。

在本项目中的一个重要思想是实现持续集成。UI自动化测试是自动化测试中的一个重点,也是一个难点,因为一款应用的UI在项目开发阶段时时刻刻都在进行变化。利用持续集成思想不仅可以很好的应对UI变化,而且有利于团队的分工合作,提高团队的工作效率。

3.2 后期改进

基于Appium的UI自动化测试框架在实现过程中电脑运行测试代码所需要的环境问题有待进一步解决,能够成功运行测试框架的电脑只实现了一台,其它会出现意想不到的问题。目前仅仅实现在控制台输出测试过程以及结果的日志信息,在数据驱动方面存在的困难是利用excel表格进行存储数据来读取以及将测试结果等信息输出保存为excel表格或者输出html网页结果,这些还需要进一步研究实现。

3.3 未来期望

希望后续研究人员能实现如何将数据存储于excel表格中被调用实现数据与测试分离,以及如何将结果存储在excel表格中实现结果清晰明朗化的反馈。

【参考文献】

[1]余盈宽、高守玮、崔徐佳.基于关键字的安卓UI自动化测试的设计[D].工业控制计算机2015.

[2]徐凯田.UI自动化测试驱动的软件开发方法研究[J].科技视界2015.

[3]陈昊.Android手机自动化测试系统的设计与实现[D].西安电子科技大学2014.

[4]吕茜.基于WebDriver和TestNG的网页自动化测试方法[J]. 软件2016.

[5]陈学亮.基于云的Andriod应用自动化测试框架研究[J].中国电信股份有限公司广东研究院2017.

[6]Ashwaq A.Alotaibi、Rizwan J. Qureshi.Novel Framework for Automation Testing of Mobile Applications using Appium[J].MECS Press 2017

[7]Pressman E、Huberman M.Pithiness in plants:I.The effect of mechanical perturbation and the involvement of ethylene in petiole pithiness in celery.Biology DepartmentWake Forest UniversityWinston-SalemNorth Carolina 1984.