鸿蒙系统 wukong 测试指令详解(新手经验笔记)
适用对象:刚接触鸿蒙稳定性测试的新人
适用版本:OpenHarmony 3.2+ / HarmonyOS(wukong 已从 3.2 起预置在系统里)
文档定位:随手查的命令速查 + 实战模板 + 踩坑记录
一、wukong 是什么(30 秒理解)
wukong(悟空)是鸿蒙系统自带的稳定性压力测试命令行工具,本质相当于 Android 的 Monkey,但能力更强。
它通过模拟无序的用户行为(随机点击、滑动、拖拽、按键、旋转、控件注入等),对系统或指定应用持续施压,从而暴露崩溃、卡死、冻屏、资源泄漏等问题,并自动捕获异常、生成报告。
一句话记忆法:wukong = 鸿蒙版 Monkey + 控件遍历 + 异常报告。
核心能力:
- Ability 随机事件注入、控件注入
- 异常捕获(JS Crash / CPP Crash / AppFreeze 等)
- 自动生成测试报告
- Ability 数据遍历截图
二、三大测试类型(先选对类型)
| 测试类型 | 主命令 | 用途 | 典型场景 |
|---|---|---|---|
| 随机测试 | wukong exec |
整机或指定应用随机乱点乱滑 | 系统/应用稳定性压测(最常用) |
| 专项测试 | wukong special |
指定应用控件顺序遍历、截图、休眠唤醒、录制回放 | 界面遍历、UI 截图回归 |
| 专注测试 | wukong focus |
对指定类型控件反复注入 | 深挖某个控件(如按钮/滑块)的健壮性 |
新手起步:99% 的情况从
wukong exec开始。
三、前置准备(每次开测前必做)
bash
# 1. 确认设备已连接
hdc list targets
# 2. 进入设备 shell(后续命令都在设备 shell 里敲)
hdc shell
# 3. 确认 wukong 存在
wukong -v # 查看版本,能出版本号说明已预置
wukong help # 查看帮助
# 4. 列出当前设备可被拉起的应用(拿 bundleName 和 mainAbility)
wukong appinfo
老版本(3.2 之前)系统不预置 wukong,需要自行编译后用
hdc file send推送并重挂载,但3.2 之后基本不用管。推送旧方法(备用,仅老版本):
bashhdc_std shell mount -o rw,remount / hdc_std file send wukong / hdc_std shell chmod a+x /wukong hdc_std shell mv /wukong /bin/
四、随机测试 wukong exec ------ 最常用
4.1 完整参数速查表
| 参数 | 全称 | 含义 | 默认值 | 冲突/注意 |
|---|---|---|---|---|
-c |
--count |
执行次数 | 10 次 | 与 -T 二选一 |
-T |
--time |
测试总时长 | 10 分钟 | 与 -c 二选一 |
-i |
--interval |
事件间隔,单位 ms | 1500 ms | --- |
-s |
--seed |
随机种子 | 无 | 同种子→同事件序列(可复现) |
-b |
--bundle |
允许测试的应用白名单 | 全部应用 | 与 -p 互斥 |
-p |
--prohibit |
禁止测试的应用黑名单 | 不禁止 | 与 -b 互斥 |
-d |
--page |
禁止测试的页面名单 | 系统禁 pages/system |
--- |
-e |
--allow |
允许测试的 ability | --- | 必须配合 -b |
-E |
--block |
禁止测试的 ability | --- | 必须配合 -b |
-a |
--appswitch |
应用随机拉起比例 | 10% | 0~1 小数 |
-t |
--touch |
屏幕随机 touch 比例 | 10% | 0~1 小数 |
-S |
--swap |
屏幕随机滑动比例 | 3% | 0~1 小数 |
-m |
--mouse |
随机鼠标比例 | 1% | 0~1 小数 |
-k |
--keyboard |
随机键盘比例 | 2% | 0~1 小数 |
-H |
--hardkey |
随机硬键比例 | 2% | 0~1 小数 |
-r |
--rotate |
随机旋转比例 | 2% | 0~1 小数 |
-C |
--component |
随机控件比例 | 70% | 0~1 小数 |
-I |
--screenshot |
控件测试截图 | 关 | --- |
-U |
--uri |
指定应用拉起页面 uri | --- | --- |
-x |
--uriType |
指定拉起页面 uriType | --- | --- |
比例相加不必等于 1:wukong 内部会归一化处理各类事件占比,给的是相对权重。
4.2 新手直接抄的实战模板
bash
# 模板1:整机随机压测 100 次(最基础)
wukong exec -s 10 -i 1000 -a 0.28 -t 0.72 -c 100
# 模板2:整机压测 30 分钟(用时间代替次数)
wukong exec -s 10 -i 1000 -T 30
# 模板3:只压测某一个应用(白名单)
wukong exec -b com.ohos.settings -a 0.28 -t 0.72 -c 200
# 模板4:压测某应用但禁止系统设置里的某个ability
wukong exec -b com.ohos.settings -e com.ohos.settings.MainAbility -E com.ohos.settings.AppInfoAbility
# 模板5:带截图(回归/留证)
wukong exec -b com.example.myapp -t 0.7 -a 0.3 -c 100 -I
# 模板6:指定页面显式拉起(已知 uri)
wukong exec -b bundlename -a abilityname -U uri
# 模板7:指定页面隐式拉起(已知 uri + uriType)
wukong exec -b bundlename -U uri -x uriType
模板1 逐字解析(务必记住这组,面试/实操都常用):
| 片段 | 含义 |
|---|---|
wukong exec |
主命令:随机测试 |
-s 10 |
随机种子 = 10 |
-i 1000 |
事件间隔 1000 ms |
-a 0.28 |
应用随机拉起占 28% |
-t 0.72 |
屏幕随机 touch 占 72% |
-c 100 |
总共执行 100 次 |
五、专项测试 wukong special ------ 遍历/截图/休眠唤醒
5.1 参数速查表
| 参数 | 全称 | 含义 | 默认值 | 注意 |
|---|---|---|---|---|
-h |
--help |
帮助 | --- | --- |
-k |
--spec_insomnia |
休眠唤醒专项 | 关 | ⚠️ 与 exec 的 -k 含义不同! |
-c |
--count |
执行次数 | 10 次 | --- |
-i |
--interval |
执行间隔,ms | 1500 ms | --- |
-S |
--swap |
滑动测试 | --- | 配合 -s/-e/-b |
-s |
--start[x,y] |
滑动起点坐标 | --- | ⚠️ 与 exec 的 -s(seed) 不同! |
-e |
--end[x,y] |
滑动终点坐标 | --- | --- |
-b |
--bilateral |
往返滑动 | 不往返 | --- |
-t |
--touch[x,y] |
点击测试坐标 | --- | --- |
-T |
--time |
测试总时长,分钟 | 10 分钟 | --- |
-C |
--component |
控件顺序遍历 | --- | 需指定应用名 |
-r |
--record |
录制 | --- | 需指定录制文件 |
-R |
--replay |
回放 | --- | 需指定回放文件 |
-p |
--screenshot |
控件测试截图 | 关 | --- |
5.2 实战模板
bash
# 控件顺序遍历 + 截图(最常用专项)
wukong special -C com.example.myapp -p
# 休眠唤醒专项(反复灭屏亮屏)
wukong special -k -T 5
# 固定坐标滑动(起点 100,200 → 终点 100,800,往返)
wukong special -S -s 100,200 -e 100,800 -b
# 固定坐标点击
wukong special -t 500,500 -c 50
# 录制操作序列
wukong special -r /data/local/tmp/record.txt
# 回放操作序列
wukong special -R /data/local/tmp/record.txt
六、专注测试 wukong focus ------ 死磕某个控件
专注测试继承 exec 的全部参数,额外两个:
| 参数 | 全称 | 含义 |
|---|---|---|
-n |
--numberfocus |
每个控件注入的次数 |
-f |
--focustypes |
需要专注的控件类型(英文逗号隔开) |
bash
# 对按钮类控件每个注入 50 次
wukong focus -f button,switch -n 50 -c 200
# 对输入控件+滑块死磕
wukong focus -f text_input,slider -n 100 -T 10
常见控件类型参考(以
wukong focus -h实际输出为准):
button、checkbox、image、list、radio、scroll_bar、slider、switch、tab、text、text_input、toggle等。
七、⚠️ 新手必踩的 6 个坑(重点记)
-s含义分家 :exec里是--seed(随机种子);special里是--start[x,y](滑动起点坐标)。敲错直接语法报错或行为异常。-k含义分家 :exec里是--keyboard(键盘比例);special里是--spec_insomnia(休眠唤醒专项)。别混。-b/-p互斥:白名单和黑名单不能同时用。-c/-T互斥:要么按次数,要么按时间,二选一。-e/-E必须配-b:想限定 ability 白/黑名单,必须先-b指定应用,否则不生效。- 比例是小数不是百分比 :
-a 0.28是 28%,不是 28。写成-a 28会出问题。
记忆口诀:
exec 的 s 是种子(seed)、k 是键盘(key);special 的 s 是起点(start)、k 是休眠唤醒(sleep)。
八、报告与结果分析
wukong 运行时会打印日志,结束后生成报告(依赖 DFX 子系统收集异常)。
bash
# 运行期间实时看日志(建议另开一个 shell 观察)
hdc shell hilog | grep wukong
# 异常日志落盘(崩溃/冻屏排查)
hdc shell hilog > wukong_run.log
# 拉取报告/截图目录(报告默认在设备 /data/... 或沙箱目录,视版本而定)
hdc file recv /data/wukong ./wukong_report
关注的重点异常类型:
- JS Crash:ArkTS/JS 层崩溃
- CPP Crash:Native 层崩溃
- AppFreeze:应用冻屏/卡死
- Resource Leak:资源(fd/线程/内存)泄漏
- App Killed:应用被系统杀掉
实操建议:复现问题用相同
-s种子,相同种子会生成相同的随机事件序列,方便研发复现。
九、新手标准作业流(SOP)
bash
# Step 1 连接 & 进 shell
hdc shell
# Step 2 看版本 + 列应用
wukong -v
wukong appinfo # 抄下要测的 bundleName
# Step 3 跑一轮快速随机测试(先小剂量探路)
wukong exec -b com.example.myapp -a 0.3 -t 0.7 -c 50
# Step 4 没问题再上压力(长时间/多次数)
wukong exec -b com.example.myapp -a 0.3 -t 0.7 -T 60 -s 10
# Step 5 收集日志 & 报告
# (另开终端)
hdc shell hilog | grep wukong
十、一句话速记卡(贴显示器上)
wukong exec 随机压测(整机/指定应用) ← 最常用
wukong special 遍历/截图/休眠唤醒/录回放
wukong focus 死磕某类控件
-c 次数 -T 分钟 -i 间隔ms -s 种子
-b 白名单 -p 黑名单(互斥)
-a 拉起比 -t 点击比 -C 控件比(小数!)
exec:-s种子 -k键盘 | special:-s起点 -k休眠
同种子=可复现;-e/-E 必带 -b
参考来源
- OpenHarmony 官方仓库:ostest_wukong
- 华为开发者文档:HarmonyOS 应用上架运营流程 - 稳定性测试工具 wukong