OpenHarmony稳定性测试问题去重方法
一、前言 在OpenHarmony稳定性测试过程中,通过测试工具对开发板进行长时间稳定性压测后,会生成大量jscrash、cppcrash、appfreeze等问题,这里面往往会有很多完全相同的问题,因此我们在对问题进行分析之前,首先要做的事情就是问题分类和问题去重,给开发人员节约宝贵的时间,也有助于我们在统计问题个数时对重复问题进行归纳划一。二、问题去重 1、工具介绍 此次准备的辅助工具文
一、前言
在OpenHarmony稳定性测试过程中,通过测试工具对开发板进行长时间稳定性压测后,会生成大量jscrash、cppcrash、appfreeze等问题,这里面往往会有很多完全相同的问题,因此我们在对问题进行分析之前,首先要做的事情就是问题分类和问题去重,给开发人员节约宝贵的时间,也有助于我们在统计问题个数时对重复问题进行归纳划一。
二、问题去重
1、工具介绍
此次准备的辅助工具文件夹共有4个,见下图:
-
addr2line : cppcrash、appfreeze问题定界脚本。
addr2line(下载链接)是linux开源通用工具,使用方法参考另一篇文章。
-
demo_tool : 问题分类工具。
demo_tool工具(下载链接)是基于nodejs开发的,需要安装node环境,并配置环境变量:
将该nodejs文件解压之后放入本地某位置,并配置环境变量即可:
-
parseCppcrash : cppcrash去重脚本。
-
parseOthers :jscrash、appfreeze脚本。
本章节着重讲解demo_tool、parseCppcrash、parseOthers三个工具的用法,addr2line会在另外一篇文章中单独讲解。
2、问题分类
以DevEco Testing工具为例,该工具生成的问题日志文件如下图所示:
我们需要将这些日志进行分类,分类为:cppcrash、jscrash、appfreeze以及others。
a)步骤
用vscode工具打开demo_tool文件夹,新建终端输入以下指令:
node .\auto-divide.js D:\wendingxing\stability_testing\testing_log\problems
其中的D:\wendingxing\stability_testing\testing_log\problems是放置DevEco Testing生成的问题汇总目录。执行之后该目录会变成以下内容:
如上图,已将问题归纳。
b)注意事项
demo_tool工具中的auto-divide.js就是用来做问题分类的,值得注意的是该js第14行表示在寻找以”problem_“ 开头的文件夹,因为DevEco Testing生成的问题都是以”problem_“开头的文件夹。但是不同的测试工具,其问题文件夹的命名是不一样的,比如wukong工具测试出来的问题文件夹命名是以数字命名的,如1、2、3、4等等,那就得灵活修改该js的第14行,如下图:第一个箭头是对DevEco Testing工具跑出来的问题进行分类,第二个箭头是对wukong脚本跑出来的问题进行分类。
3、cppcrash问题去重
脚本: parseCppcrash
进入parseCppcrash文件夹中,在此文件夹中cmd,在cmd中执行以下命令:
python main.py D:\wendingxing\stability_testing\testing_log\problems\cppcrash
其中的D:\wendingxing\stability_testing\testing_log\problems\cppcrash是放置cppcrash文件的目录。
执行该命令之后,会在该cppcrash文件中生成1个csv文件,1个txt文件:
打开ResultOfCppcrash20230704153017.txt,会发现已经对该cppcrash下的全部问题进行区分,相同的问题归纳在一起,这样就达到了去重的效果,并且还展示了问题对应的崩溃so以及崩溃进程名:
4、jscrash问题去重
脚本: parseOthers
进入parseOthers文件夹中,在此文件夹中cmd,在cmd中执行以下命令:
python jscrashParser.py D:\wendingxing\stability_testing\testing_log\problems\jscrash
其中的D:\wendingxing\stability_testing\testing_log\problems\jscrash是放置jscrash文件的目录。
执行该命令之后,会在该jscrash文件中生成1个csv文件,1个txt文件:
打开ResultOfJscrash20230704153421.txt,会发现已经对该jscrash下的全部问题进行区分,相同的问题归纳在一起,这样就达到了去重的效果,并且还展示了问题对应应用名以及崩溃栈:
5、appfreeze问题去重
脚本: parseOthers
进入parseOthers文件夹中,在此文件夹中cmd,在cmd中执行以下命令:
python appfreezeParser.py D:\wendingxing\stability_testing\testing_log\problems\appfreeze
其中的D:\wendingxing\stability_testing\testing_log\problems\appfreeze是放置appfreeze文件的目录。
执行该命令之后,会在该appfreeze文件中生成2个csv文件,2个txt文件:
其中TestcaseOfAppfreeze20230704153620.csv和TestcaseOfAppfreeze20230704153620.txt是无效文件,可以删除。
打开ResultOfAppfreeze20230704153620.txt,会发现已经对该appfreeze下的全部问题进行区分,相同的问题归纳在一起,这样就达到了去重的效果,并且还展示了问题对应的崩溃so以及崩溃进程名:
更多推荐
所有评论(0)