鸿蒙系统 wukong 测试指令详解

鸿蒙系统 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 之后基本不用管

推送旧方法(备用,仅老版本):

bash 复制代码
hdc_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 实际输出为准):

buttoncheckboximagelistradioscroll_barsliderswitchtabtexttext_inputtoggle 等。


七、⚠️ 新手必踩的 6 个坑(重点记)

  1. -s 含义分家exec 里是 --seed(随机种子);special 里是 --start[x,y](滑动起点坐标)。敲错直接语法报错或行为异常。
  2. -k 含义分家exec 里是 --keyboard(键盘比例);special 里是 --spec_insomnia(休眠唤醒专项)。别混。
  3. -b / -p 互斥:白名单和黑名单不能同时用。
  4. -c / -T 互斥:要么按次数,要么按时间,二选一。
  5. -e / -E 必须配 -b :想限定 ability 白/黑名单,必须先 -b 指定应用,否则不生效。
  6. 比例是小数不是百分比-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

参考来源

相关推荐
云端漫步19873 小时前
HarmonyOS NEXT AI 智能生活助手:设置中心开发
人工智能·华为·生活·harmonyos
用户0934077735144 小时前
HarmonyOS WPS Open SDK 实践:关文档后怎么把结果拿回本应用
harmonyos
less_121386 小时前
HarmonyOS WPS Open SDK:OpenFileRequest 只读与可编辑模式控制
深度学习·harmonyos·wps
程序员黑豆9 小时前
使用AI编程开发鸿蒙应用:从环境搭建到实战示例
前端·harmonyos
程序员黑豆12 小时前
鸿蒙应用开发:一次开发多端部署之响应式布局完全指南
前端·harmonyos
条tiao条18 小时前
MVVM架构与ArkUI状态管理
华为·架构·harmonyos·鸿蒙·mvvm
程序员黑豆20 小时前
鸿蒙应用开发:一次开发多端适配与自适应布局实战
前端·harmonyos
三翼鸟数字化技术团队21 小时前
GN (generate ninja) 学习手册
harmonyos
程序员黑豆1 天前
鸿蒙应用开发:网络请求三种方式详解(http / rcp / axios)
前端·harmonyos