APP性能 uiautomator -- 离线封包模拟用户使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP性能 uiautomator -- 离线封包模拟用户使用相关的知识,希望对你有一定的参考价值。
参考技术A 该自动化测试为模拟用户使用,主要测试点为手机或智能设备的整机续航测试。一、测试前机器准备工作
1.安装测试APK(多为第三方APK)
2.安装完成后,进入APK打开系统权限,因为测试APK多为第三方APK,所以我们经常会遇到第三方APK弹窗问题。(该问题会再后续解决)
3.将输入法切换为英文输入法,插入要求运营商测试卡。(测试卡一般选用电信及移动卡,考虑到联通卡功耗会过高。)
二、测试连接环境搭建
测试需求资源(PC一台、路由器、测试终端(多台))
首先你的手机和你的电脑,必须是在同一个网段里面,也就是连接同一个路由器。
单终端连接实现方案:
1、扫描所有5555到5585范围内的奇数端口来定位所有的模拟器或设备。
2、一个偶数端口用来相应控制台的连接,和一个奇数端口 用来响应adb连接。(故我们选择的端口号需要为奇数)
终端通过USB连接至PC端(开启USB调试模式)
打开命令行输入:C:\Users\Administrator>adb tcpip 5555 返回结果:restarting in TCP mode port: 5555
命令行输入:adb connect 192.168.1.3 //同一局域网下测试终端的IP 返回结果:connected to 192.168.1.3:5555
多终端连接实现方案:
前置条件:第二个终端需USB连接上PC(开启调试模式)
1. 通过adb devices命令 获取所有online设备的serial number
C:\Users\Administrator>adb devices
例子:List of devices attached 192.168.1.3:5555 device SH0A6PL00243 device
2.打开adb 端口 adb -s SH0A6PL00243 tcpip 5559(5559为自选)
3.连接测试终端 adb connect 第二台设备的WIFI:IP:5559
三、测试前终端设置
C:\Users\Administrator>adb devices - List of devices attached
192.168.1.1:5555 device 192.168.1.2:5559 device
导入APK: adb -s 192.168.1.1:5555 push F:\dou\app-debug.apk +(空格)+ /data/local/tmp/cxq.com.dou_test
安装APK: adb -s 192.168.1.1:5555 shell pm install -t -r "/data/local/tmp/cxq.com.dou_test" (名称可能会变,以提供APK为准)
返回信息 pkg: /data/local/tmp/cxq.com.dou_test Success
导入APK:adb push F:\dou\app-debug-androidTest.apk /data/local/tmp/cxq.com.dou_test.test
安装APK:adb -s 192.168.1.1:5555 shell pm install -t -r "/data/local/tmp/cxq.com.dou_test.test" (名称可能会变,以提供APK为准)
返回信息: pkg: /data/local/tmp/cxq.com.dou_test Success
运行APK:adb -s 192.168.1.1:5555 shell am instrument -w -r -e debug false -e class cxq.com.dou_test.UnitTestSuite
cxq.com.dou_test.test/android.support.test.runner.AndroidJUnitRunner(名字可能有变化,具体以提供时为准)
OPENCV----在APP性能测试中的应用
应用项目: APP的性能测试
应用场景: APP启动速度 视频开播速度 加载速度 等~~
缘来: 基于APP日志和UiAutomator的测试方案,测试结果不能直白且精确的反应,用户的体验
改进: 通过手工操作或自动操作的方式录取视频,然后用图像处理的方式,来获取测试结果
架构流程图:
主要的核心点:
视频分帧: 基于ffmpeg库 进行分帧
样例: ffmpeg -hide_banner -i video.mp4 -an -vsync 0 .\\frames\\%06d.png > null
图片对比: 基于opencv库进行图片对比
核心代码:
int diff_count(const Mat& lmat, const Mat& rmat, int threshold) { int cols = lmat.cols; int rows = lmat.rows; int esize = (int)lmat.elemSize(); if ( rmat.cols != cols || rmat.rows != rows || (int)rmat.elemSize() != esize ) { return -1; } int total = rows * cols; int dcount = 0; for ( int i = 0; i < total; i++ ) { uchar* lptr = lmat.data + i*esize; uchar* rptr = rmat.data + i*esize; int sum = 0; for ( int j = 0; j < esize; j++ ) { uchar lu = lptr[j]; uchar ru = rptr[j]; int tmp = lu > ru ? lu - ru : ru - lu; sum += tmp*tmp; } if ( sqrt(sum)/esize >= threshold ) { dcount++; } } return dcount; }
以上是关于APP性能 uiautomator -- 离线封包模拟用户使用的主要内容,如果未能解决你的问题,请参考以下文章