0%

Appium-Maven-Jenkins自动化测试框架

前置条件

  1. JDK安装

  2. Appium安装[node安装,npm安装]

  3. Maven安装

  4. Jenkins slave设置

  5. Android SDK安装

环境可用的情况

  1. adb -devices命令可用
  2. appium --session-override服务可用
  3. mvn package编译可用

框架介绍

框架主要以appium测试框架为基础,用maven进行依赖的管理,以及编译执行测试。

框架目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
├── data                                                                    # 项目测试数据存放位置
│   ├── login.xls
│   └── workbench.xls
├── default.xml
├── grid
│   ├── 1.Start_Android_Emulator.sh
│   ├── 2.Start_Appium_Grid_Server.sh
│   ├── 3.Start_Appium_Server_001.sh
│   ├── 4.Start_Appium_Server_002.sh
│   ├── nodeconfig_1.json
│   ├── nodeconfig_2.json
│   └── selenium-server-standalone.jar
├── pom.xml # maven项目文件
├── README.md
├── res # 项目测试app存放位置
│   ├── app
│   │   ├── android
│   │   │   └── android.txt
│   │   └── ios
│   │   └── ios.txt
│   └── properties
│   ├── app.properties
│   └── config.properties
├── runAll.xml # testng执行入口
├── runSingle.xml
├── runSmoke.xml
├── testngForParallel.xml
└── src
   ├── main
   │   └── java
   │   └── com
   │   └── shadow
   │   └── dfcAppium
   │   └── App.java
   └── test
   └── java
   └── com
  └── shadow
   └── dfcAppium
   ├── base # 项目基础类
   │   ├── BasePrepare.java
   │   ├── StartAppium.java
   │   └── StopAppium.java
   ├── pages # 页面元素类
   │   ├── InitPage.java
   │   ├── LoginPage.java
   │   ├── StockmanagePage.java
   │   └── WorkbenchPage.java
   ├── pageshelper # 页面元素帮助类
   │   ├── InitPageHelper.java
   │   ├── LoginPageHelper.java
   │   ├── StockmanagePageHelper.java
   │   └── WorkbenchPageHelper.java
   ├── plugins # 报告插件
   │   ├── excelReporter # excel报告插件
   │   │   ├── ExcelReporter.java
   │   │   ├── TestResultListener.java
   │   │   └── utils
   │   │   └── CreateExcelForResult.java
   │   └── htmlReporter # html报告插件
   │   ├── PowerEmailableReporter.java
   │   ├── RetryListener.java
   │   ├── TestngRetry.java
   │   ├── TestResultListener.java
   │   └── utils
   │   └── ConfigReader.java
   ├── testcases # 测试用例存放位置
   │   ├── login
   │   │   └── LoginPage_001_Login_Test.java
   │   └── workbench
   │   └── WorkbenchPage_001_Workbench_Test.java
   └── utils # 各种工具类
   ├── AppiumUtil.java
   ├── ExcelDataProvider.java
   ├── LogConfiguration.java
   ├── PropertiesDataProvider.java
   └── SelectDriver.java

框架运行介绍

testcases下的测试用例都是继承至BasePrepare.java类,这个类的主要作用是启动和关闭APP,以及数据提供。

Login的例子,介绍框架中用例的运行原理:
1)LoginPage_001_Login_Test继承至BasePrepare类,启动app,后续步骤中BasePrepare作为数据提供者提供数据,步骤中,调用帮助类从页面元素类中获取元素,进行输入/点击等操作,帮助类又会调用AppiumUtilAPI进行操作并输出实时的操作日志。
大致结构如下图所示:

最后testng文件调用excel插件生成excel报告。

持续集成

前置条件

[代码仓库地址](http://git.shadow.com/testGroup/dfcAppium.git)
``Jenkins``上配置好安卓测试环境,包括本地配置的所有环境。

由于大风车有Native Library,导致无法在X86的模拟器上安装,而且arm的模拟器奇慢,所以选择在安卓真机上执行测试。在执行测试前要确保指定的设备与运行持续集成的服务器通讯正常。

持续集成结果展示:

备注:appium源码安装

安装cnpm

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

下载源代码

1
git clone https://github.com/appium/appium.git

编译安装

1
2
cd appium               # 进入appium源码目录
cnpm install # 执行安装

cnpm link命令将appium link到系统,可以忽略warn

1
cnpm link

查看安装结果

1
2
3
4
appium -v

➜ appium git:(master) appium -v
1.6.0-beta3