wukong是系统自带的一种命令行工具,支持Ability的随机事件注入、控件注入、异常捕获、报告生成和对Ability数据遍历截图等特性。通过模拟用户行为,对系统或应用进行稳定性压力测试。wukong分为随机测试、专项测试和专注测试。
随机测试是指随机测试界面内容,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、打印运行日志和生成报告。
专项测试主要提供对指定应用控件进行测试,支持的能力包括:shell启动、顺序遍历及截图、测试休眠唤醒、录制回放、打印运行日志和生成报告。
专注测试主要提供对指定控件的注入测试,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、设置专注控件类型、设置注入控件次数、打印运行日志和生成报告。
wukong部件架构图以及部件内子模块职责如下所述。

| 命令 | 说明 |
|---|---|
| -v/--version | 获取wukong版本信息。 |
| help | 获取wukong帮助信息。 |
| appinfo | 查询支持拉起应用bundleName和对应的mainAbility名。 |
| special | wukong专项测试。 |
| exec | wukong随机测试。 |
| focus | wukong专注测试。 |
#若连接单个设备,则直接输入如下命令进入shell模式 C:\Users>hdc shell $ #若同时连接多个设备,则需先获取sn号,先输入hdc list targets获取sn号,然后进入shell模式 C:\Users>hdc list targets 15xxx424axxxx345209d94xxxx8fxx900 C:\Users>hdc -t 15xxx424axxxx345209d94xxxx8fxx900 shell $
$ wukong appinfo BundleName: com.ohos.adminprovisioning AbilityName: com.ohos.adminprovisioning.MainAbility BundleName: com.ohos.callui AbilityName: com.ohos.callui.MainAbility
C:\Users>hdc shell
$ wukong help #wukong帮助菜单
usage: wukong <command> [<arguments>]
These are common wukong command list:
help wukong help information
-v/--version wukong version
exec run random test
special run special test
focus run focus test
appinfo show all app information
$ wukong exec -help #wukong随机测试帮助菜单
usage: wukong exec [<arguments>]
These are wukong exec arguments list:
-h, --help random test help
-a, --appswitch appswitch event percent
-b, --bundle the bundle name of allowlist
-p, --prohibit the bundle name of blocklist
-d, --page block page list
-t, --touch touch event percent
-c, --count test count
-i, --interval interval
-s, --seed random seed
-m, --mouse mouse event percent
-k, --keyboard keyboard event percent
-H, --hardkey hardkey event percent
-S, --swap swap event percent
-T, --time test time
-C, --component component event percent
-r, --rotate rotate event percent
-e, --allow ability the ability name of allowlist
-E, --block ability the ability name of blocklist
-Y, --blockCompId the id list of block component
-y, --blockCompType the type list of block component
-I, --screenshot get screenshot(only in random input)
-B, --checkBWScreen black and white screen detection
-U, --Uri set Uri pages
-x, --Uri-type set Uri-type
-K, --knuckle set percent of knuckle event
-f, --finger set the number of fingers and proportions for tests such as swipe and knuckle gesture
-P, --pinch set percent of pinch-to-zoom event
-D, --direction set the swipe directions and proportions
-o, --pause pause swiping for 1 second
-w, --crown set percent of watch crown rotation event
-g, --gestures set percent of watch gesture recognition events
-l, --idle set percent of watch idle event
-j, --keypress set percent of watch physical button press event
-F, --float set percent of float and split event
-W, --browser set percent of browser operation event
$ wukong special -help #wukong专项测试帮助菜单
usage: wukong special [<arguments>]
These are wukong special arguments list:
-h, --help special test help
-t, --touch[x,y] touch event
-c, --count total count of test
-i, --interval interval
-S, --swap[option] swap event
option is -s| -e| -b
-s, --start: the start point of swap
-e, --end: the end point of swap
-b, --bilateral: swap go and back
-k, --spec_insomnia power on/off event
-T, --time total time of test
-C, --component component event
-p, --screenshot get screenshot(only in component input)
-r, --record record user operation
-R, --replay replay user operation
-u, --uitest uitest dumpLayout | 命令 | 功能 | 必选 | 说明 |
|---|---|---|---|
| -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。 |
$ wukong exec -s 10 -i 1000 -a 0.28 -t 0.72 -c 100
命令中各参数含义:
| 命令 | 参数值 | 说明 |
|---|---|---|
| wukong exec | - | 主命令。 |
| -s | 10 | 参数设置随机种子,10为种子值。 |
| -i | 1000 | 参数设置应用拉起间隔为1000ms。 |
| -a | 0.28 | 参数设置应用随机拉起测试比例28%。 |
| -t | 0.72 | 参数设置屏幕随机touch测试比例为72%。 |
| -c | 100 | 参数设置执行次数为100次。 |
> 显式启动 > hdc_std shell $ wukong exec -b bundlename -e abilityname -U uri > 隐式启动 > hdc_std shell $ wukong exec -b bundlename -U uri -x uriType
$ wukong exec -b com.ohos.settings -e com.ohos.settings.MainAbility -E com.ohos.settings.AppInfoAbility
若配置-e、-E则须配置-b来指定应用。
| 命令 | 功能 | 必选 | 说明 |
|---|---|---|---|
| -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 | 控件测试截图。 | 否 | - |
| 命令 | 功能 | 必选 | 说明 |
|---|---|---|---|
| -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 | 设置启用黑白屏检测。 | 否 | - |
$ 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次。 |
执行完测试指令后,会自动生成测试结果,测试结果输出根路径如下:
| 类型 | 描述 |
|---|---|
| exception/ | 存放本次测试产生的异常文件。 |
| screenshot/ | 存放测试遍历的截图。 |
| wukong_report.csv | 测试报告统计汇总。 |
| wukong.log | 测试操作历程。 |
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
包含基本信息、事件注入统计、Ability统计、故障统计。
| 字段 | 描述 |
|---|---|
| task status | 任务状态。success表示成功,fail表示失败。 |
| task time | 任务执行时间。单位:秒。 |
| seed | 随机种子。 |
| task count | 事件注入总次数。 |
故障注入统计(Input Message Statistics)
| 类型 | 描述 |
|---|---|
| type | 事件或控件注入的类型,事件注入类型范围请参考随机测试命令参数,控件注入类型范围包括ArkUI(方舟UI框架)下的ArkTS组件和ArkWeb(方舟Web)下的ArkTS组件。 |
| execTimes | 事件或者控件注入执行次数。 |
| proportion | 当前事件操作在事件注入执行总次数里的占比。 |
| inputedTimes | 遍历的控件类型个数。 |
| expectInputTimes | 应用控件类型总数。 |
| coverage | 控件遍历覆盖率。 |
| 字段 | 描述 |
|---|---|
| bundleName | 应用的bundleName。 |
| inputedAbilityCount | 遍历的Ability数量。 |
| abilitiesCount | 应用的Ability总数。 |
| coverage | Ability遍历覆盖率。 |
故障统计(Exception Message Statistics)
故障日志路径:/data/log/faultlog/faultlogger/
| 字段 | 描述 |
|---|---|
| type | 故障类型,故障类型包含:CPP_CRASH、JS_CRASH、SYS_FREEZE、APP_FREEZE等。 |
| times | 故障次数。 |
| proportion | 当前故障在故障总数里的占比。 |