从0构建自动化测试平台(五)兼容性测试实现

往期文章

从0构建自动化测试平台(一)之技术选型

从0构建自动化测试平台(二)WEB服务器构建

从0构建自动化测试平台(三)前端页面拉取

从0构建自动化测试平台(四)文件上传与任务提交

前言

写到这里,还是非常想进行一个说明,实际项目过程中的顺序其实和我梳理的顺不一样,为了让读者更容易理解,笔者重新梳理了顺序,目的是为了让读者更好的理解这个项目;实际过程是先实现了后端的功能,例如兼容性测试、稳定性测试、功能测试之后,根据需要才有的前端。之前的文章都是前端相关的内容,今天好不容易到了后端的实现,此时的我还是非常激动的,接下来将和大家聊聊后端的具体实现。

接上篇文章

之前我们聊到了文件上传,并将参数传递给了后端python代码:

python vendor/comptest/devices.py --app-path=/home/K米4.6.6.apk --email=xiongjinfei@star-net.cn --test-type=compatibility

这里有一个关键词:compatibility 兼容性测试。

我对兼容性测试的理解

兼容性测试,我的理解有2个阶段:

第一个阶段:早期的时候听的最多的应该是浏览器兼容,百度百科对兼容性测试的解释:

兼容测试(Compatibility Test Suite )简称CTS

指对所设计程序与硬件、软件之间的兼容性的测试。

测试分类:

一、浏览器兼容测试

二、分辨率兼容测试

一般来说,兼容性指能同时容纳多个方面,在计算机术语上兼容是指几个硬件之间、几个软件之间或是软硬件之间的相互配合程度。

兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。

简单说就是我们的网页在不同的浏览器上可以正常显示,页面元素没有出现:偏离、移位、遮挡、按钮无法点击、输入框无法输入等问题,以及在不同分辨率的电脑可以正常显示,功能可以正常使用。

在这个阶段的理解如果放在APP上,那就是要实现APP在不同设备(硬件平台、分辨率)能够正常使用,在这个阶段,我其实是陷入困境的,因为要能正常使用,那不是功能测试吗?

第二个阶段:经过一段时间的了解,找到了APP兼容性测试和浏览器兼容测试的区别,这里分为2个层面:

基础层面:APP兼容性测试主要实现在不同的设备上可以正常:安装(覆盖安装)、启动、运行、卸载

进阶层面:运行过程中捕获异常日志信息、启动时间、CPU、内存、流量、截图

所有这里我总结一个兼容性测试的公式:

兼容性测试=(安装+启动+运行+卸载+异常日志+启动时间+CPU+内存+流量+截图)* N台手机

兼容性测试基础

以上我们描述了兼容性测试所需要实现的功能,这些功能的实现有2种方式,第一种是adb,第二种就是使用第三方开源软件,接下来我先介绍adb的一些基础方法:

设备获取:adb devices


安装APP:adb -s 设备ID install -r APK包

adb -s 5276e0a3 install -r K米_4.6.6.apk


启动:adb -s 设备ID shell am start -W -n launchable-activity

运行:adb -s 5276e0a3 shell monkey -p com.evideo.MobileKTV --pct-touch 45 --pct-motion 20 --pct-trackball 5 --pct-nav 1 --pct-appswitch 20 --pct-flip 6 --throttle 50 -s 10 -v 3000

卸载:adb -s 设备ID uninstall APP包名

日志:adb -s 设备ID logcat

启动时间:APP在启动的时候有对应的启动时间

截图:adb -s 5276e0a3 shell /system/bin/screencap -p 设备保存位置

CPU、内存、流量,我使用的是腾讯开源的GT,官网(http://gt.tencent.com)有详细的说明,这里不展开。

以上是要进行兼容性测试的基础知识,如果你想继续往下走,这些基础你必须先掌握。
** 兼容性测试详细过**程

我先详细说明兼容性测试的详细过程,然后再描述每个过程的实现方法:

  1. 屏幕解锁;
  2. 设备连接;
  3. 安装APK;
  4. 启动APP;
  5. 启动logcat;
  6. 启动GT抓取性能数据;
  7. 运行APP;
  8. 控件遍历;
  9. 停止GT;
  10. 停止logcat;
  11. 卸载APP;

1、屏幕解锁实现

笔者使用的是APPium官方开源的unlock_apk(https://github.com/appium/unlock_apk)

调用方法:

adb shell am start -n io.appium.unlock/.Unlock

说明:屏幕解锁其实可以换一种方式,那就是在设置中配置为不锁屏

2、设备连接

$ adb devices

说明:在安装前先确认下设备的连接情况

3、安装APK

$ adb -s 设备ID  install -r APK包

说明:

-s 指定设备,在多设备的情况下是非常有用的;

-r 强制安装

4、启动APP

$ adb -s 设备ID  shell am start -W -n  launchable-activity

说明:

launchable-activity的获取,通过aapt* d badging APK包,通过aapt还可以获取:*

packagename

versionCode

versionName

platformBuildVersionName

install-location

sdkVersion

targetSdkVersion

5、启动logcat

$ adb -s 设备ID logcat -v time -f logcat保存路径

说明:启动logcat有4个过程

a、删除logcat的保存路径:adb -s 设备ID shell rm logcat保存路径

b、清理已经存在的日志:adb logcat -c

c、将日志输出到文件:adb logcat -f 文件名

d、获取返回的进程id:通过执行cmd命令返回

6、启动GT抓取性能数据

说明:这个有6个过程

a、启动GT:

adb -s 设备ID shell am start -W -n com.tencent.wstt.gt/.activity.GTMainActivity

b、运行被测应用:

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt.baseCommand.startTest --es pkgName 被测应用程序包名

c、勾选CPU:

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt.baseCommand.
sampleData --ei cpu 1

d、勾选内存:

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt.baseCommand.
sampleData --ei pss 1

e、勾选流量:

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt.baseCommand.
sampleData --ei net 1

f、电量采集:

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt
plugin.battery.startTest --ei refreshRate 250 --ei brightness 100 --ez T true

7、运行APP

monkey进行随机点击;

8、控件遍历

运行APP部分和控件遍历部分,笔者使用了3中方式:

monkeyrunner进行控件遍历;

UiAutomator进行控件遍历;

上面的每一种方式都值得深入的研究,后面会细致的讲解这3个模块。

9、停止GT

adb -s 设备ID shell am broadcast -a  com.tencent.wstt.gt.baseCommand.
endTest --es saveFolderName 报告保存路径
10、停止logcat
*说明:*
a、根据获取的PID,执行kill操作
b、拉取设备上的日志文件:adb -s 设备ID pull /sdcard/GT/GW/com.tencent.mobileqq/7.0.0/temp report/9f2f8b26-35d4-4a3e-b944-83da8b1552d5/OPPO_R7c/GT_Report

11、卸载APP

$ adb -s 设备ID uninstall APP包名

以上就是一个完整的兼容性测试过程,该过程所有的操作都是通过python调用实现,今天就先写到这里,后续将持续输出更加精彩的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容