目录

wukong稳定性工具使用指导

功能介绍

wukong是系统自带的一种命令行工具,支持Ability的随机事件注入、控件注入、异常捕获、报告生成和对Ability数据遍历截图等特性。通过模拟用户行为,对系统或应用进行稳定性压力测试。wukong分为随机测试、专项测试和专注测试。

随机测试是指随机测试界面内容,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、打印运行日志和生成报告。

专项测试主要提供对指定应用控件进行测试,支持的能力包括:shell启动、顺序遍历及截图、测试休眠唤醒、录制回放、打印运行日志和生成报告。

专注测试主要提供对指定控件的注入测试,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、设置专注控件类型、设置注入控件次数、打印运行日志和生成报告。

实现原理

wukong部件架构图以及部件内子模块职责如下所述。

约束与限制

  1. wukong测试工具在API 9版本开始预置使用。

  2. 所有命令执行前需完成hdc环境配置,并进入shell模式。

功能特性及命令说明

命令 说明
-v/--version 获取wukong版本信息。
help 获取wukong帮助信息。
appinfo 查询支持拉起应用bundleName和对应的mainAbility名。
special wukong专项测试。
exec wukong随机测试。
focus wukong专注测试。

[h2]执行命令

随机测试

[h2]命令参数

命令 功能 必选 说明
-h,--help 获取当前测试的帮助信息。 否 -
-c,--count 设置执行次数,与测试总时间-T冲突。二者取其一。 否 单位次数,默认值为10次。
-i,--interval 设置执行间隔。 否 单位ms,默认值为1500ms。
-s,--seed 设置随机种子。 否 配置相同随机种子,会生成相同随机事件序列。
-b,--bundle[bundlename,……,bundlename] 设置本次测试的允许应用名单,与-p冲突。 否 默认测试当前设备所有应用(应用名称用英文逗号隔开)。
-p,--prohibit[bundlename,……,bundlename] 设置本次测试的禁止应用名单,与-b冲突。 否 默认不禁止任何应用(应用名称用英文逗号隔开)。
-d,--page[page,……,page] 设置本次测试的禁止页面名单。 否 系统默认禁止pages/system页面(页面名称用逗号隔开)。
-a,--appswitch 设置应用随机拉起测试比例。 否 取值范围0到1,默认值为10%。
-t,--touch 设置屏幕随机触摸测试比例。 否 取值范围0到1,默认值为10%。
-S,--swap 设置屏幕随机移动测试比例。 否 取值范围0到1,默认值为3%。
-m,--mouse 设置屏幕随机鼠标测试比例。 否 取值范围0到1,默认值为1%。
-k,--keyboard 设置屏幕随机键盘操作测试比例。 否 取值范围0到1,默认值为2%。
-H,--hardkey 设置随机物理按键测试比例。 否 取值范围0到1,默认值为2%。
-r,--rotate 设置随机屏幕旋转测试比例。 否 取值范围0到1,默认值为2%。
-C, --component 设置随机控件测试比例。 否 取值范围0到1,默认值为70%。
-I, --screenshot 控件测试截图。 否 -
-T,--time 设置测试总时间,与设置执行次数-c冲突。二者取其一。 否 单位分钟,默认值为10分钟。
-e, --allow ability 设置允许测试的ability。 否 -
-E, --block ability 设置禁止测试的ability。 否 -
-Y, --blockCompId 设置不进行注入的CompId。 否 -
-y, --blockCompType 设置不进行注入的CompType。 否 -
-B, --checkBWScreen 设置启用黑白屏检测。 否 -
-U, --Uri 设置应用拉起页面的URI。 否 -
-x, --UriType 设置应用拉起页面的URIType(统一资源标识符类型)。 否 -
-K, --knuckle 设置指关节敲击测试比例。 否 取值范围0到1,默认值为0。
-f, --finger 设置滑动和指关节敲击测试的参与手指数量及比例。 否 支持配置1-4个手指,格式:-f <手指数1,比例>,<手指数2,比例>,<手指数3,比例>,<手指数4,比例>,例如:-f 1,0.25,2,0.25,3,0.25,4,0.25。
-P, --pinch 设置双指捏合测试比例。 否 取值范围0到1,默认值为0。
-D, --direction 设置滑动方向及比例。 否 支持配置上(u)、下(d)、左(l)、右(r)四个方向,格式:-D <方向1,比例>,<方向2,比例>,<方向3,比例>,<方向4,比例>,例如:u,0.25,r,0.25,d,0.25,l,0.25。
-o, --pause 设置滑动过程中支持暂停。 否 该参数缺省则不支持暂停。
-w, --crown 设置表冠操作测试比例。 否 仅Wearable设备支持,取值范围0到1,默认值为0。
-g, --gestures 设置手势(如上滑、下滑、左滑、右滑等)操作测试比例。 否 仅Wearable设备支持,取值范围0到1,默认值为0。
-l, --idle 设置待机状态下的操作测试比例。 否 仅Wearable设备支持,取值范围0到1,默认值为0。
-j, --keypress 设置按键(电源键、智感窗按键)操作测试比例。 否 仅Wearable设备支持,取值范围0到1,默认值为0。
-F, --float 设置应用分屏模式和悬浮窗模式的测试比例。 否 取值范围0到1,默认值为0。
-W, --browser 设置浏览器操作测试比例。 否 取值范围0到1,默认值为0。
  • 上述参数的测试比例表示在当前测试中的操作,所有参数的测试比例之和需小于等于1。

  • -K,-f,-P,-D,-o,-w,-g,-l,-j,-F,-W参数从API version 23开始支持。

[h2]使用示例

专项测试

[h2]命令参数

命令 功能 必选 说明
-h, --help 获取当前专项测试的帮助信息。 否 -
-k, --spec_insomnia 休眠唤醒专项测试。 否 -
-c, --count 设置执行次数。 否 单位次数,默认值为10次。
-i, --interval 设置执行间隔。 否 单位ms,默认值为1500ms。
-S, --swap 滑动测试。 否 -
-s, --start[x,y] 设置滑动测试起点坐标。 否 坐标均为正值。
-e, --end[x,y] 设置滑动测试终点坐标。 否 坐标均为正值。
-b, --bilateral 设置往返滑动。 否 默认不往返滑动。
-t, --touch[x,y] 点击测试。 否 -
-T, --time 设置测试总时间。 否 单位分钟,默认值为10分钟。
-C, --component 控件顺序遍历测试。 否 需要设置测试应用名称。
-r, --record 录制。 否 需要指定录制文件。
-R, --replay 回放。 否 需要指定回放文件。
-p, --screenshot 控件测试截图。 否 -

[h2]测试命令

$ wukong special -C [bundlename] -p

专注测试

[h2]命令参数

命令 功能 必选 说明
-n,--numberfocus 设置每个控件注入的次数。 否 单位次数。
-f, --focustypes 设置需要专注的控件类型。 否 以英文逗号隔开。
-h,--help 获取当前测试的帮助信息。 否 -
-c,--count 设置执行次数,与设置执行时间-T冲突。二者取其一。 否 单位次数,默认值为10次。
-i,--interval 设置执行间隔。 否 单位ms,默认值为1500ms。
-s,--seed 设置随机种子。 否 配置相同随机种子,会生成相同随机事件序列。
-b,--bundle[bundlename,……,bundlename] 设置本次测试的允许应用名单,与-p冲突。 否 默认测试当前设备所有应用(应用名称用英文逗号隔开)。
-p,--prohibit[bundlename,……,bundlename] 设置本次测试的禁止应用名单,与-b冲突。 否 默认不禁止任何应用(应用名称用英文逗号隔开)。
-d,--page[page,……,page] 设置本次测试的禁止页面名单。 否 系统默认禁止pages/system页面(页面名称用逗号隔开)。
-a,--appswitch 设置应用随机拉起测试比例。 否 默认值为10%。
-t,--touch 设置屏幕随机触摸测试比例。 否 默认值为10%。
-S,--swap 设置屏幕随机移动测试比例。 否 默认值为3%。
-m,--mouse 设置屏幕随机鼠标测试比例。 否 默认值为1%。
-k,--keyboard 设置屏幕随机键盘操作测试比例。 否 默认值为2%。
-H,--hardkey 设置随机物理按键测试比例。 否 默认值为2%。
-r,--rotate 设置随机屏幕旋转测试比例。 否 默认值为2%。
-C, --component 设置随机控件测试比例。 否 默认值为70%。
-I, --screenshot 控件测试截图。 否 -
-T,--time 设置测试总时间,与设置执行次数-c冲突。二者取其一。 否 单位分钟,默认值为10分钟。
-e, --allow ability 设置允许测试的ability。 否 -
-E, --block ability 设置禁止测试的ability。 否 -
-Y, --blockCompId 设置不进行注入的CompId。 否 -
-y, --blockCompType 设置不进行注入的CompType。 否 -
-B, --checkBWScreen 设置启用黑白屏检测。 否 -

[h2]使用示例

$ wukong focus -s 10 -i 1000 -a 0.28 -t 0.72 -c 100

命令中各参数含义:

命令 参数值 说明
wukong focus - 主命令。
-s 10 参数设置随机种子,10为种子值。
-i 1000 参数设置应用拉起间隔为1000ms。
-a 0.28 参数设置应用随机拉起测试比例28%。
-t 0.72 参数设置屏幕随机touch测试比例为72%。
-c 100 参数设置执行次数为100次。

查看测试结果

[h2]测试结果输出路径

执行完测试指令后,会自动生成测试结果,测试结果输出根路径如下:

[h2]测试报告文件目录

类型 描述
exception/ 存放本次测试产生的异常文件。
screenshot/ 存放测试遍历的截图。
wukong_report.csv 测试报告统计汇总。
wukong.log 测试操作历程。

[h2]查看操作日志

wukong支持通过hdc命令将日志获取到本地,查看操作历程。

# wukong.log文件对应路径如下
/data/local/tmp/wukong/report/xxxxxxxx_xxxxxx/wukong.log

# 查看wukong测试报告文件目录操作如下
$ cd /data/local/tmp/wukong/report/20170805_170053
$ ls
data.js  exception  wukong.log  wukong_report.csv

# 开启shell窗口,用hdc file recv获取wukong日志
C:\Users\xxx>hdc file recv /data/local/tmp/wukong/report/20170805_170053/wukong.log C:\Users\xxx\Desktop\log
[I][2024-01-03 20:08:02] HdcFile::TransferSummary success
FileTransfer finish, Size:76492, File count = 1, time:16ms rate:4780.75kB/s

[h2]测试报告解析

包含基本信息、事件注入统计、Ability统计、故障统计。

  1. 基本信息(Base Info)

    字段 描述
    task status 任务状态。success表示成功,fail表示失败。
    task time 任务执行时间。单位:秒。
    seed 随机种子。
    task count 事件注入总次数。
  2. 故障注入统计(Input Message Statistics)

    类型 描述
    type 事件或控件注入的类型,事件注入类型范围请参考随机测试命令参数,控件注入类型范围包括ArkUI(方舟UI框架)下的ArkTS组件和ArkWeb(方舟Web)下的ArkTS组件。
    execTimes 事件或者控件注入执行次数。
    proportion 当前事件操作在事件注入执行总次数里的占比。
    inputedTimes 遍历的控件类型个数。
    expectInputTimes 应用控件类型总数。
    coverage 控件遍历覆盖率。
  3. Ability统计(ability Statistics)

    字段 描述
    bundleName 应用的bundleName。
    inputedAbilityCount 遍历的Ability数量。
    abilitiesCount 应用的Ability总数。
    coverage Ability遍历覆盖率。
  4. 故障统计(Exception Message Statistics)

    故障日志路径:/data/log/faultlog/faultlogger/

    字段 描述
    type 故障类型,故障类型包含:CPP_CRASH、JS_CRASH、SYS_FREEZE、APP_FREEZE等。
    times 故障次数。
    proportion 当前故障在故障总数里的占比。

常见问题

[h2]failed to connect to AAMS

错误描述

failed to connect to AAMS.

可能原因

AAMS被hypium或者dev testing的UIViewer占用了,AAMS同一时间只能被一个程序连接。

解决方案

结束占用AAMS的进程,或直接重启设备。

[h2]Errorcode:(4005)

错误描述

Errorcode:(4005).

可能原因

因屏幕显示区域大小变化,导致无障碍获取页面信息失败。

解决方案

该错误不影响测试流程,无需处理。

[h2]Errorcode:(4007)

错误描述

Errorcode:(4007).

可能原因

因屏幕显示区域大小变化,导致无障碍获取页面信息失败。

解决方案

该错误不影响测试流程,无需处理。