目录
1:简介
2:手机自动化架构
3:手机 运行前置环境
4:基于appium框架 + Java语言
5:触发运行
6:生成报告
7:appium使用脚本启动客户端
8:钉钉消息通知
9:自动化报告展示
随着手机的普及,各大网站或者产品都在往移动方向转战。现在已经是人手一部手机,不管何时何地,点击几下手机就能完成很多操作。所以对我们普通的测试人员来说,移动测试所占的比重会越来越重,随着企业手机端软件版本更新迭代的速度,对其手机端自动化随机运行,覆盖大部分功能用例,来保证手机 app功能的质量。
开发自动化时首先想明白架构,如何触发运行、运行逻辑如何、报告格式、报个保存等等功能点。
前提条件,服务器中已搭建android自动化环境。
android自动化环境:java、nodejs、appium、androidSDK......等
环境中连接上手机并能识别到手机。
通过appium框架 + Java语言编写代码实现手机端自动化。较为常见的手机端自动化普遍通过测试人员编写测试用例,然后通过代码编写实现固定的场景实现用例。但此做法有一个弊端,随着企业app更新迭代的高效率,功能场景改动的较快需要人员长期进行维护,维护成本较高。
为此我们通过代码实现循环遍历的方式,让其app自动运行。通过循环各个页面的组件,进行点击跳转并通过集合对其进行标记,实现自动运行app覆盖80%功能点。(代码逻辑较为复杂,此次只讲述大概的方向)
app循环遍历运行的逻辑编写好以后,我们通过调用接口的形式来触发自动化的运行。
接口案例:
http://10.1.5.245:8085/auto/asynctask/startTask?apkPath=JuZiFenQi.apk&isInstall=true
参数:
apkPath为apk名称,apk路径必须上传到服务器 /app/software/appSaveApk/ 目录下,apk名称尽量更换为 JuZiFenQi.apk ,因为定时任务中写的名称是此名称。
isInstall为是否重新安装app,true则进行卸载后重新安装,false不进行卸载安装,运行当前安装的app
接口返回:
{
"status": 200,
"msg": "前端自动化启动成功",
"data": {
"taskId": "autoApp",
"status": "RUNNING",
"startTime": "2021-09-14T02:43:59.001+0000",
"endTime": null,
"totalTime": null
}
}
使用freemarker模板,通过渲染数据生成静态文件报告,存放到nginx的静态文件目录,然后服务器地址进行访问。
脚本为:
BUILD_ID=dontKillMe #防止执行脚本被杀死
ps -ef |grep appium |grep -v grep |awk '{print $2}' |xargs kill -9 #杀已经启动的appium
#nohup appium --address 127.0.0.1 --port 4723 --session-override --platform-name Android --platform-version 25 --automation-name Appium --log-timestamp --local-timezone --no-reset >> appium.log 2>&1&
nohup appium --log-timestamp >> appium.log 2>&1&
#后台运行appium服务,并把appium日志保存在文件中
当app自动化运行完毕后,在测试群中进行报告发送,若遇到bug则艾特通知负责人查看。并支持点击报告地址跳转到报告页面;
问题记录:
安装前端自动化环境相关软件记录、问题记录等
nodejs安装路径:/opt/node-v14.17.6-linux-x64
androidSDK安装路径:/app/software/android-sdk
JDK安装位置:/usr/java/jdk1.8.0_161
appium通过命令行安装:
卸载命令:npm uninstall -g appium
安装命令:npm install -g [email protected] --chromedriver-skip-install
appium相关版本运行时有问题(自行解决),
问题地址:appium安装说明简易版 - 环境配置 - 测试人社区