为了保证每次构建后主功能均正常,所以通过 ui 进行主流程遍历,节省人力成本。
测试框架选择了主流的移动 app 测试框架 appium,并结合 testng 以及 log4j 等测试框架,语言基于 java 进行编写。
Ci 方面使用了 jenkins 进行自动构建,源代码存放在 github 上,编译部署使用的 ant。
一、 安装 appium(网络不好请自行 ***)
安装 node: brew install node
安装 appium: npm install -g appium
二、 配置环境变量
终端输入命令:vim ~/.bash_profile
需要配置 java,testng 等环境变量,例如下图:
配置完后保存关闭,记得执行命令 source .bash_profile
最后可用 appium 客户端点击
进行检测查看环境是否配置 ok,具体如下图:
代码暂时分为三层:基础层,数据层,业务测试层。
1、基础层:包含测试套件启动(appium 建立连接),api 方法封装,工具类:
测试套件启动,关闭主要使用 testng 里 Beforetest,AfterSuite,AfterMethod 等注解,详细可以查阅 testng 相关教程或则http://www.cnblogs.com/TankXiao/p/3888070.html
api 方法封装:主要封装了 appium 原有 api(增加日志输出等),以及结合 selenium api 封装出的一些适用性方法,例如 waitfortext,elementexists 等等,主要封装在 appoperate.java 里,然后对 ios 和 android 做一些 api 区分,详细可以查看 androidoperate 和 iosoperate。
工具类:主要是 log4j 相关的配置文件,如 log.java,log4j.properties,以及 testng 失败案例重跑等监听文件。
2、测试数据层:
测试数据层我这里分为两大块,第一是 testng.xml 配置的相关测试数据准备,第二是 appium 查找控件时控件相关信息。
Testng.xml 主要是配置测试数据,例如 appium 启动相关信息,测试案例执行顺序,测试类,监听类,测试所用到的例如账号等相关数据。
数据参数化:
执行测试类顺序:
测试类:
监听类:
其他测试数据:**
在 Appium 中你会遇到,Selendroid 模式和 UIAutomator 定位差异,比如 Selendroid 的 linkText 在 UIAutomator 中用 name,还有就是 iOS 脚本想和 Android 共用一份。这在 Appium 中有了很好的扩充,Appium 客户端会在运行时决定使用哪个 Annotation 来装饰 WebElement。具体可以查看 Elements_PersonalPage 等。http://www.cnblogs.com/cosyman/p/page-objects.html
3、业务测试层
这里主要就是转换之前准备好的测试案例,模拟用户在手机上进行业务操作。
对案例进行代码化封装,使用自己封装或原有的 api,在进行过程中断言或则 api 判断,以及调用 testng 准备好的测试数据。
持续集成主要是使用 jenkins 进行构建,ant 编译并执行。
Jenkins(我得版本是 1.65):
1.Jdk 配置
2.ant 配置
3.邮件配置
ps:注意这里 password 要用授权码。
4.jenkins 项目配置:
参数化构造:具体看项目配置,这里只截图 ant 相关配置
5.源码管理:svn 或则 git 等等,我这里是放在 git 上的
6.构建过程:构建时我这边使用了 shell 脚本修改部分文件内容(看项目),然后再运行 ant:
7.构建后邮件通知:
使用了自己写的 html 页面进行报告,一并发送 testng report 报告
一定要配置邮件在何时发送,是构建成功,失败还是其他情况,我这里配置了构建成功和失败都会发出
log4j 详细教程:http://www.codeceo.com/article/log4j-usage.html http://blog.csdn.net/azheng270/article/details/2173430/
testing 入门教程:http://www.cnblogs.com/TankXiao/p/3888070.html
http://topmanopensource.iteye.com/blog/1983735
appium-page 相关:http://www.cnblogs.com/cosyman/p/page-objects.html
appium-desired_capabilities 详解:http://www.mamicode.com/info-detail-636932.html
GitHub 和 SourceTree 入门教程:http://blog.csdn.net/collonn/article/details/39259227
Start-appium-server:http://www.testingdiaries.com/start-appium-server-programmatically/
Appium 中文 api:https://testerhome.com/topics/3144
Simpleapptest 源码:https://github.com/hxbjava/RYM-SimpleTest.git
Ps:自学 appium 以来写的第一个完整的工程,有意见请指出,谢谢。