定向班第二期_app 自动化测试平台_20191207

自动化测试平台的价值

测试用例的核心元素

  • 测试用例的步骤:业务的测试步骤吗,调用业务模型的各个方法模拟业务使用
  • 业务模型(Page Object)的定义:封装UI,定义具体的UI或者接口的操作步骤,让UI变化只影响PO的定义,这样用例就不会受UI变化影响。
  • 测试数据:相同的用例,需要运行一条或者多条流程一样的数据。比如搜索不同的股票并断言
  • 断言匹配器:断言的种类,比如相等、不等、大于、小于、近似、正则匹配、与或非关系等。

测试用例的管理体系

  • 并行 串行
  • 分套件、分组运行
  • xml报告、html报告

自动化引擎

  • selenium自动化
  • appium自动化
  • 接口自动化

执行引擎

  • jenkins

数据分析

  • Kibana
  • EChats

STF

brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config
npm install -g stf

启动

rethinkdb --http-port 8081 &
stf local 

api文档:https://github.com/openstf/stf/blob/master/doc/API.md
token:75246cbc06834986a5fcfa08a378e96b3ac956ff0cdd4f56a341963d0e7e9e34

curl -H "Authorization: Bearer 75246cbc06834986a5fcfa08a378e96b3ac956ff0cdd4f56a341963d0e7e9e34" http://127.0.0.1:7100/api/v1/devices | jq .

Selenium Grid

Jenkins

docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

安装插件

  • open stf
  • pipeline
  • image gallery
  • html publisher

Jenkins访问:http://47.95.238.18:8080
STF学院演练环境: http://47.95.238.18:7100/#!/devices

配置STF插件

  • stf的api地址
  • token
  • 可选的adb key

创建多配置任务

  • 选择设备
  • 执行shell命令

monkey兼容性测试任务

echo $UDID
adb -s $UDID shell am start -S -n com.xueqiu.android/.view.WelcomeActivityAlias 
sleep 5
adb -s $UDID shell monkey -p com.xueqiu.android 200 ||:

appcrawler自动遍历任务

mv report $(date +%Y%m%d%H%M) ||:
java -jar ~/temp/appcrawler/appcrawler-2.4.0-jar-with-dependencies.jar --capability \\
"appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias,udid=$UDID" \\
-o report -t 180
  • 发布html
  • 发布截图

自动化测试用例

desiredCapabilities.setCapability("udid", System.getenv("UDID"));

兼容性测试

需求

  • 尽快的遍历所有的页面
  • 对ROM功能尽快的覆盖,比如摄像头、蓝牙、NFC

搭配

  • 虚拟机测试UI兼容性
  • 真机测试ROM的兼容性和性能
  • 云端设备补充使用

技术点

  • 自动遍历
  • 自动化测试

Selenium Grid

可以支持Android、iOS、Web三种自动化的整合。

执行

http://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
 java -jar selenium-server-standalone-3.141.59.jar -role hub

代码改动

//        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        URL remoteUrl = new URL("http://192.168.31.199:4444/wd/hub");

课后作业

  • 搭建成功STF,并加上三台设备,截图devices列表页回帖
  • 把你的appium自动化测试用例移植到Jenkins,并运行起来,贴上你的任务shell的命令
  • 把appcrawler加到持续集成中, 贴上你的任务shell的命令
关闭