一、前言

在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以及崩溃进程名:

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐