Android --- 一篇带你搞懂CTS

·什么是CTS
CTS全称Compatibility Test Suite兼容性测试工具,为了保证开发的应用在所有兼容Android的设备上正常运行,并保证一致的用户体验,Google制定了CTS来确保设备运行的Android系统全面兼容Android规范,Google也提供了一份兼容性标准文档(Compatibility Definition Document,CDD)。当电子产品开发现来,并定制了自己的Android系统后,必须要通过最新的CTS检测,以保证标准的android application能运行在该平台上。通过了CTS验证,需要将测试报告提交给Google,以取得android market的认证。CTS是一款 通过命令行操作的工具。目前CTS没有提供windows版本,只能在Linux下测试。

·CTS工具下载地址

不同android版本的工具下载地址:
https://source.android.google.cn/docs/compatibility/cts/downloads?hl=zh-cn
如果要进行media压力测试,下载CTS 媒体文件后,在终端执行以下命令,将media文件copy到设备里。

./copy_images.sh
./copy_media.sh

·CTS怎么进行测试
①配置设备

连接 WiFi(有的测试需要v6网络)
Display->Sleep->30min(设置休眠时间为30分钟)
Security & location->Screen lock->None(设置屏幕锁为无)
System->About phone->Build number(打开开发者模式)
进入开发者模式,打开Stay awake,打开USB调试
开启location
语言设置为English-US(必须是英文,其他语言不行)
设置完成,回到主页,清空后台应用

②使用测试工具
在/android-cts-10_r15-linux_x86-arm/android-cts/tools路径下的终端执行(注意这个测试工具所在的路径不能有中文!!!):
整包测(测试的时间比较长,大约需要四天左右):

run cts

按模块测:

run cts -m module名

单条case测试:

run cts -m module名 -t case名

·CTS结果怎么查看
①在测试终端就可以查看测试结果
②用浏览器打开/android-cts-10_r15-linux_x86-arm/android-cts/results/2023.04.26_15.55.26/test_result.html
其中/2023.04.26_15.55.26/是每次测试的时间,根据测试时间可以打开某一次的测试结果

·如何查看测试的log
打开/android-cts-10_r15-linux_x86-arm/android-cts/logs/2023.04.26_14.26.07/inv_6131858263139540011/
同理其中/2023.04.26_15.55.26/是每次测试的时间,根据测试时间可以打开某一次的测试结果

 ·CTS的修改技巧
①首先先使用设备进行一遍测试,有的错误可能使用最新版本进行测试即可pass
②根据case名在项目的代码中搜索此条case的测试内容
举例:测试的命令:run cts -m CtsWindowManagerDeviceTestCases -t android.server.wm.PinnedStackTests#testPinnedStackWithDockedStack
那就在项目中的代码搜索testPinnedStackWithDockedStack(PinnedStackTests类中)
注意:由于使用的是谷歌官方的工具,本地项目中CTS的代码会有差异,只能作为参考来看,其中的报错行数不能完全相同。
③那由于存在以上问题,在修改的过程想要加一些log输出一些信息来辅助修改怎么办呢?
可以在本地的CTS代码中加入一些log,根据mk中的LOCAL_PACKAGE_NAME编译出对应的apk,使用以下命令将apk装进设备中:

adb install -r -t .apk

编写测试命令:adb shell am instrument -e class 测试case名 -w 所测CTS的包名/androidx.test.runner.AndroidJUnitRunner

adb shell am instrument -e class android.server.wm.PinnedStackTests#testPinnedStackWithDockedStack -w android.server.wm.cts/androidx.test.runner.AndroidJUnitRunner

可能有的测试模块有连携的关系或者是有的测试模块编译出来的是jar包,使用上面的命令不行:
根据mk中的LOCAL_PACKAGE_NAME编译出对应的apk或jar包,直接将其替换到/android-cts-10_r15-linux_x86-arm/android-cts/testcases/路径下,
相当于是直接修改了谷歌测试工具的测试case,然后就正常在/android-cts-10_r15-linux_x86-arm/android-cts/tools路径下的终端下测试就可以输出log了。

·CTS的修改思维
①CTS测的是兼容性,不是bug。
②不能像正常的修改bug,根据报错信息直接定位报错代码位置进行修改。
CTS测试所抛出的错误是在CTS代码下,不能修改CTS的代码(这正是难点所在),而是根据测试内容去反思自己的项目的问题是否是与谷歌的规范相悖。
③大部分的错误都是定制的特殊要求导致违背了谷歌规范。

猜你喜欢

转载自blog.csdn.net/m0_50408097/article/details/130554781