总结一些遇到的问题和解决方法,需注意时效性
一:Ubuntu缓存目录media资源包被删除问题
执行CTS-media相关模块测试时,会检查电脑/tmp/android-cts-media文件夹,但是Ubuntu重启后tmp缓存目录下的文件将会被清空,导致执行测试时将近5G的资源包需要重新下载,不仅消耗时间而且会占用大量网络,为了使资源包不被删除,找到两种方法解决。
- 在Linux文件系统里,chattr可以改变文件的属性;使用
chattr命令修改文件夹权限,lsattr命令查看,详细命令:sudo chattr -V -R +a +u /tmp/android-cts-media-R:递归处理,将指定目录下的所有文件及子目录一并处理
-V:显示指令执行过程
-v:<版本编号> 设置文件或目录版本
+ <属性> 开启文件或目录的该项属性+a:文件可读可写不可删除
+u:预防意外删除- <属性> 关闭文件或目录的该项属性
= <属性> 指定文件或目录的该项属性 - 修改
/etc/default/rcS文件。缺点:tmp目录下所有文件都不会被删除,占用系统空间,不建议采用。sudo gedit /etc/default/rcS修改TMPTIME=-1
TMPTIME的值为0表示重启后删除文件,值为-1就不会自动删除文件,值为正整数表示/tmp目录下文件保留时间
二:CTS-Verifier测试结果的迁移
测试CTS-Verifier时经常会因为单机问题出现失败项,但使用另一台机器可以测试通过,从而不能生成一份完整PASS报告,可以采取备份恢复verifier应用数据的方法,把出现问题机器的测试数据迁移至另一台能通过的机器里,再用后者测试通过前者的失败项,最后生成一份完整测试报告。参考博客相关命令如下:
- 原机器备份:
adb backup -f com.android.cts.verifier.backup -apk com.android.cts.verifier - 导入到新机器:
adb restore com.android.cts.verifier.backup
三:对总模块缺失的报告进行补全(目前比较少遇到)
CTS测试生成的报告总模块数(非已执行总模块)有缺失,使用命令筛选提取出完整报告与有缺失报告的模块名,然后使用**notepad++**的compear对比插件定位出缺失模块,最后在缺失模块报告的xml文件里补全。
- 首先在Windows的cmd窗口执行
findstr /c:"Module name" 报告xml文件 > 要生成的提取关键字文件,如:findstr /c:"Module name" D:\2019.12.12_xx.xx.xx\test_result.xml > D:\complete.txtfindstr /c:"Module name" D:\2019.12.21_xx.xx.xx\test_result.xml > D:\lost.txt - 使用notepad++的compear对比插件定位缺失模块,插件的安装使用参考网上教程
- 在缺失模块报告的xml文件里补全,补充格式参考:
<Module name="模块名称" abi="abi类别" runtime="0" done="false" pass="0" total_tests="0" />
四:重跑单个模块
测试结束查看报告,发现一些模块一直为false状态,添加--retry-type not_executed命令retry也不能补全。对比其他报告,定位该模块少执行了一些case,可通过修改报告的xml文件,让问题模块整模块重跑,达到完全测试目的。
- 打开报告xml文件找到对应模块
- 删除该模块下所有打印,使该模块为未执行状态,最终格式为上面三中补充格式
- 如果问题模块case较多,可使用Linux系统中
sed命令删除xml文件中的指定行sed -i '2661,3078d' \2019.12.12_xx.xx.xx\test_result.xml选项 -i:直接修改读取的文件,不会在命令行显示文件内容
命令 d:删除2661行到3078行的所有内容,包含第2661行和3078行