安卓自动化测试工具

LiHaoyu de52b54cf3 修改Readme,默认使用dev配置 před 4 roky
Commands 4756dcd56d update停止appium server的脚本和开始的逻辑 před 4 roky
configs dccd4d6607 1. 支持执行自定义脚本 před 4 roky
lib 6e10fcdf08 add lib dir před 5 roky
mockData 7e4ab2c9c0 first commit před 5 roky
src de52b54cf3 修改Readme,默认使用dev配置 před 4 roky
tasks 58c4c1b7ee 添加私有云配置。 před 4 roky
.gitignore 9929c3d2d4 add generate report jar před 5 roky
HELP.md 7e4ab2c9c0 first commit před 5 roky
README.MD de52b54cf3 修改Readme,默认使用dev配置 před 4 roky
mvnw 7e4ab2c9c0 first commit před 5 roky
mvnw.cmd 7e4ab2c9c0 first commit před 5 roky
pom.xml 5bf22cebea 添加二次分析测试用例 před 4 roky

README.MD

慕测安卓应用自动化测试中台系统

系统说明:本系统为部署在安卓机柜上的系统,为企业版or教育版提供自动化测试服务。

特别说明

因为本系统涉及到安卓手机等物理设备,所以对于物理环境较为敏感。 本系统提供的功能的前提是,在机柜上有稳定连接设备。因为涉及到物理设备,所以有些情况会比较玄学。 如遇到设备相关的问题,请自行Google解决。

使用方法

编译

  1. 在根目录执行mvn clean install package命令即可
  2. 编译结果位于target/android_auto_test-0.0.1-SNAPSHOT.jar

执行

  1. 将上述jar包放于根目录(和src,lib,Commands等文件夹同级)
  2. 执行java -jar xxx.jar即可
  3. 所有文件夹中的文件不要轻易删除,很多都是依赖文件以及配置文件。

私有云环境执行说明

  1. 因为私有云不保证机柜可以上外网,所以私有云版本使用本地存储保存数据
  2. 使用前请保证部署机器上有nginx静态文件服务器
  3. 项目启动命令修改为 java -jar xxx.jar --spring.profiles.active=privatecloud --fs_dir=/Users/henrylee/business/download --data_url_prefix=http://{ip}:{port}/download/trace_data/
  4. --spring.profiles.active:指定启动配置文件,具体内容可以看application.yaml
  5. --fs_dir:指向本地的nginx静态资源服务器中存放数据的文件夹
  6. --data_url_prefix:报告中下载路径的前缀,ip为部署机器ip,port为文件服务端口
  7. 需要特别注意的是,在第三点的例子中,文件服务器的路径为/Users/henrylee/business,download是其中的相对路径, 这个download与data_url参数中的download是对应的, 以及trace_data文件夹是默认生成的,可以不管
  8. 私有云版本相关问题,可以联系郭超同学。

环境说明

  1. 本项目为SpringBoot项目,组件均已在mvn中配置,可直接编译执行。
  2. lib文件夹下aapt工具不同系统有不同的版本,请使用部署的操作系统中安卓环境的aapt工具
  3. 测试方法,到lib目录中,执行./aapt,观察结果
  4. 如无法使用,请在lib文件夹中创建lib文件夹,将缺少的依赖放进去即可(大部分都是.so文件)

服务器环境要求

  1. 服务器中应有redis实例,端口6379,建议使用docker部署
  2. 服务器中应有完整的appium环境,具体搭建指南请Google。或者使用慕测全家桶Linux环境。 (需要注意的是,慕测全家桶中的npm,node与appium版本较为老旧,可能会和新系统出现不兼容的情况,主要的体现是AppiumDriver始终无法初始化, 如果遇到类似情况,请更新node,npm以及Appium
  3. 目前稳定运行的的环境为node10.16.3,npm6.13.4. 但是理论上node与npm的版本越新越好,只要能支持相关Appium版本的安装即可(就是比较新的Appium可能旧版本的npm装不上
  4. 建议使用较新版本的Appium Server, 目前尝试过可以稳定运行的版本为1.13.0,如需更新(如需要使用一些新特性),使用npm命令即可,但是由于AppiumServer有些版本存在Bug,所以不保证更新后系统的稳定性。
  5. 使用前请保证手机均已正确配置,并使用adb devices命令可以看到相关设备,如无可用设备,系统也没啥意义。
  6. 手机硬件相关的问题处理,请自行Google。

项目目录说明

src

源代码包,懂得都懂

Commands

打包好的一系列shell脚本,具体功能看名字即可

configs

配置文件目录,执行测试期间需要读取,默认的三个请不要删除。 比较重要的是ignore和login。

  • ignore为忽略的组件配置文件,报告equals、startWith、contains三种匹配模式,可以匹配ID和text
  • login为输入框输入内容寻找的配置文件

lib

主要就是apkUtil工具和aapt工具

scripts

执行的自定义脚本的存放目录

tasks

任务数据以及分析工具的存放目录

  • 文件夹:文件夹名为任务ID,里面存放着任务数据
  • bb2h.jar:众包需求生成工具
  • BugReport.jar:Bug报告生成工工具
  • 其他:BugReport工具使用的文件

tasks中任务数据说明

  • ApkInfo.log:apk的基本信息以及任务的开始结束时间
  • xxx.apk:apk文件本身
  • reportData.json:生成的报告数据
  • 文件夹:名字是设备ID,内容是每一台设备的数据
    • AppiumLog.log:Appium日志
    • Battery, Cpu, Memory, Network, SM.log:电池、CPU、内存、网路、刷新率日志,格式为list
    • CoverInstall.log:覆盖安装日志,内容为adb命令的标准输出
    • DeviceExecInfo:设备执行数据,格式为{xxx}=yyy
    • DeviceInfo:设备物理信息
    • ExceptionLog:AppiumServer的异常日志
    • ExecError:本项目手动写入的异常日志
    • Install:安装日志,内容为adb install命令的输出
    • Launch:启动日志
    • Logcat:设备的Logcat日志
    • scriptExecuteResult:脚本执行结果,1是执行成功,0是失败,没有内容就是没执行脚本
    • TestAction:格式化测试操作日志,只有默认脚本会记录,自定义脚本不会记录
    • TestLog:测试过程中的一些操作的日志记录,非格式化的,用于debug
    • TestScript:默认脚本执行的操作的java语言化,理想状况下可以执行,恢复脚本的流程
    • Uninstall:卸载日志,adb uninstall的输出
    • 文件夹pageImg:每一个activity的截图
    • 文件夹pageSource:DFS过程中xml布局文件的临时目录,-1开头是临时的,其余的都对应着DFS的层数
    • 文件夹pageXml:每一个activity的xml布局文件
    • 文件夹ScreenShots:测试截屏,2s一次,命名规则是{deviceUdid}_{timestamp}

新工具添加说明

本系统支持添加新的分析工具,现对工具要求进行说明

  1. 工具的调用形式为java -jar tool.jar 1234。1234为tasks下的任务ID。由于工具默认放于tasks下,所以工具本身可以默认认为,1234位自己根目录下的一个文件夹名
  2. 工具输出应固定位reportData.json,输出目录为1234文件夹里面,与apk文件同级,这样系统才可以找到并上传
  3. 如果工具为二次分析工具,即需要对reportData的内容进行修改或者读取,则输出的报告位置不变,json文件名应与工具名一致