• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# wukong稳定性工具使用指导
2<!--Kit: Test Kit-->
3<!--Subsystem: Test-->
4<!--Owner: @qkfg-->
5<!--Designer: @qkfg-->
6<!--Tester: @caixincen-->
7<!--Adviser: @Brilliantry_Rui-->
8## 功能介绍
9
10wukong是系统自带的一种命令行工具,支持Ability的随机事件注入、控件注入、异常捕获、报告生成和对Ability数据遍历截图等特性。通过模拟用户行为,对系统或应用进行稳定性压力测试。wukong分为随机测试、专项测试和专注测试。
11
12随机测试是指随机测试界面内容,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、打印运行日志和生成报告。
13
14专项测试主要提供对指定应用控件进行测试,支持的能力包括:shell启动、顺序遍历及截图、测试休眠睡醒、录制回放、打印运行日志和生成报告。
15
16专注测试主要提供对指定控件的注入测试,支持的能力包括:shell启动、拉起整机应用、多种注入方式、设置随机种子、设置专注控件类型、设置注入控件次数、打印运行日志和生成报告。
17
18## 实现原理
19
20wukong部件架构图以及部件内子模块职责如下所述。
21![Alternate text](figures/wukongRandomTestFlow.png)
22
23- 命令行解析:支持命令行获取参数并解析命令行参数。
24- 运行环境管理:根据命令行初始化wukong整体运行环境。
25- 系统接口管理:检查并获取指定的mgr,注册controller和dfx的faultlog的回调函数。
26- 随机事件生成:通过random函数生成指定种子数的随机序列,生成事件。
27- 事件注入:根据支持的事件类型向系统注入事件,依赖窗口、多模、安全等子系统。
28- 异常捕获处理/报告生成:通过DFX子系统获取运行中的异常信息并记录log,生成报告。
29
30## 约束与限制
31
321. wukong测试工具在API 9版本开始预置使用。
33
342. 所有命令执行前需完成<!--RP1-->[hdc环境配置](../dfx/hdc.md)<!--RP1End-->,并进入shell模式。
35<!--Del-->
363. 在低于API 9版本,不能随版本编译,使用时需自行编译后推送至被检测设备,具体步骤如下。
37
38   ```bash
39   # 构建方式
40   ./build.sh --product-name rk3568 --build-target wukong
41
42   # 推送方式
43   hdc shell mount -o rw,remount /
44   hdc file send wukong /
45   hdc shell chmod a+x /wukong
46   hdc shell mv /wukong /bin/
47   ```
48<!--DelEnd-->
49## 功能特性及命令说明
50
51| 命令           | 说明                                           |
52| -------------- | ---------------------------------------------- |
53| version | 获取wukong版本信息。                             |
54| help    | 获取wukong帮助信息。                             |
55| appinfo | 查询支持拉起应用bundleName和对应的mainAbility名。 |
56| special | wukong专项测试。                                   |
57| exec    | wukong随机测试。                                   |
58| focus   | wukong专注测试。                                   |
59
60### 执行命令
61
62- 进入shell模式
63
64  ```bash
65  #若连接单个设备,则直接输入如下命令进入shell模式
66  C:\Users>hdc shell
67  $
68  #若同时连接多个设备,则需先获取sn号,先输入hdc list targets获取sn号,然后进入shell模式
69  C:\Users>hdc list targets
70  15xxx424axxxx345209d94xxxx8fxx900
71  C:\Users>hdc -t 15xxx424axxxx345209d94xxxx8fxx900 shell
72  $
73  ```
74
75- 获取应用的bundle name和ability name
76
77  ```bash
78  $ wukong appinfo
79  BundleName:  com.ohos.adminprovisioning
80  AbilityName:  com.ohos.adminprovisioning.MainAbility
81  BundleName:  com.ohos.callui
82  AbilityName:  com.ohos.callui.MainAbility
83  ```
84- 执行查看帮助命令
85
86  ```bash
87  C:\Users>hdc shell
88  $ wukong help        #wukong帮助菜单
89  usage: wukong <command> [<arguments>]
90  These are common wukong command list:
91    help                       wukong help information
92    -v/--version               wukong version
93    exec                       run random test
94    special                    run special test
95    focus                      run focus test
96    appinfo                    show all app information
97  $ wukong exec -help   #wukong随机测试帮助菜单
98  usage: wukong exec [<arguments>]
99  These are wukong exec arguments list:
100    -h, --help                 random test help
101    -a, --appswitch            appswitch event percent
102    -b, --bundle               the bundle name of allowlist
103    -p, --prohibit             the bundle name of blocklist
104    -d, --page                 block page list
105    -t, --touch                touch event percent
106    -c, --count                test count
107    -i, --interval             interval
108    -s, --seed                 random seed
109    -m, --mouse                mouse event percent
110    -k, --keyboard             keyboard event percent
111    -H, --hardkey              hardkey event percent
112    -S, --swap                 swap event percent
113    -T, --time                 test time
114    -C, --component            component event percent
115    -r, --rotate               rotate event percent
116    -e, --allow ability        the ability name of allowlist
117    -E, --block ability        the ability name of blocklist
118    -Y, --blockCompId          the id list of block component
119    -y, --blockCompType        the type list of block component
120    -I, --screenshot           get screenshot(only in random input)
121    -B, --checkBWScreen        black and white screen detection
122    -U, --Uri                  set Uri pages
123    -x, --Uri-type             set Uri-type
124  $ wukong special -help    #wukong专项测试帮助菜单
125  usage: wukong special [<arguments>]
126  These are wukong special arguments list:
127    -h, --help                 special test help
128    -t, --touch[x,y]           touch event
129    -c, --count                total count of test
130    -i, --interval             interval
131    -S, --swap[option]         swap event
132                                option is -s| -e| -b
133                                -s, --start: the start point of swap
134                                -e, --end: the end point of swap
135                                -b, --bilateral: swap go and back
136    -k, --spec_insomnia        power on/off event
137    -T, --time                 total time of test
138    -C, --component            component event
139    -p, --screenshot           get screenshot(only in componment input)
140    -r, --record               record user operation
141    -R, --replay               replay user operation
142    -u, --uitest               uitest dumpLayout
143  ```
144
145## 随机测试
146
147### 命令参数
148
149| 命令            | 功能                                 | 必选 | 说明                                     |
150| --------------- | ------------------------------------ | ---- | ---------------------------------------- |
151| -h,--help       | 获取当前测试的帮助信息。               | 否   |  -                        |
152| -c,--count      | 设置执行次数,与测试总时间-T冲突。二者取其一。   | 否   | 单位次数,默认10次。                       |
153| -i,--interval   | 设置执行间隔。                         | 否   | 单位ms,默认1500ms。                       |
154| -s,--seed       | 设置随机种子。                         | 否   | 配置相同随机种子,会生成相同随机事件序列。 |
155| -b,--bundle[bundlename,……,bundlename]     | 设置本次测试的允许应用名单,与-p冲突。 | 否   | 默认测试当前设备所有应用(应用名称用英文逗号隔开)。                 |
156| -p,--prohibit[bundlename,……,bundlename]   | 设置本次测试的禁止应用名单,与-b冲突。 | 否   | 默认不禁止任何应用(应用名称用英文逗号隔开)。                       |
157| -d,--page[page,……,page]                   | 设置本次测试的禁止页面名单。 | 否  | 系统默认禁止pages/system页面(页面名称用逗号隔开)。 |
158| -a,--appswitch  | 设置应用随机拉起测试比例。             | 否   | 默认10%。                                  |
159| -t,--touch      | 设置屏幕随机触摸测试比例。            | 否   | 默认10%。                                  |
160| -S,--swap       | 设置屏幕随机移动测试比例。             | 否   | 默认3%。                                   |
161| -m,--mouse      | 设置屏幕随机鼠标测试比例。            | 否   | 默认1%。                                   |
162| -k,--keyboard   | 设置屏幕随机键盘操作测试比例。         | 否   | 默认2%。                                   |
163| -H,--hardkey    | 设置随机物理按键测试比例。              | 否   | 默认2%。                                   |
164| -r,--rotate     | 设置随机屏幕旋转测试比例。               | 否   | 默认2%。                                   |
165| -C, --component | 设置随机控件测试比例。                 | 否   | 默认70%。                                  |
166| -I, --screenshot | 控件测试截图。                 | 否   | - |
167| -T,--time       | 设置测试总时间,与设置执行次数-c冲突。二者取其一。 | 否   | 单位分钟,默认10分钟。         |
168| -e, --allow ability   |  设置允许测试的ability。 | 否 | - |
169| -E, --block ability   |  设置禁止测试的ability。 | 否 | - |
170| -Y, --blockCompId     |  设置不进行注入的CompId。 | 否 | - |
171| -y, --blockCompType   |  设置不进行注入的CompType。 | 否 | - |
172| -B, --checkBWScreen   |  设置启用黑白屏检测。 | 否 | - |
173| -U, -uri              |  设置应用拉起页面uri。 | 否 | - |
174| -x, -uriType          |  设置应用拉起页面uriType。 | 否 | - |
175
176### 使用示例
177
178- 设置100次事件注入
179
180  ```bash
181  $ wukong exec -s 10 -i 1000 -a 0.28 -t 0.72 -c 100
182  ```
183
184  命令中各参数含义:
185  | 命令           | 参数值      |说明        |
186  | -------------- | -------------- | -------------- |
187  | wukong exec | -           | 主命令。                |
188  | -s     | 10           | 参数设置随机种子,10为种子值。  |
189  | -i  | 1000           | 参数设置应用拉起间隔为1000ms。 |
190  | -a  | 0.28          | 参数设置应用随机拉起测试比例28%。    |
191  | -t  | 0.72           | 参数设置屏幕随机touch测试比例为72%。    |
192  | -c  | 100           | 参数设置执行次数为100次。         |
193
194- 指定页面压测
195
196  ```bash
197  > 显示启动
198  > hdc_std shell
199  $ wukong exec -b bundlename -e abilityname -U uri
200
201  > 隐式启动
202  > hdc_std shell
203  $ wukong exec -b bundlename -U uri -x uriType
204  ```
205
206- 设置允许测试和禁止测试的ability
207  ```bash
208  $ wukong exec -b com.ohos.settings -e com.ohos.settings.MainAbility -E com.ohos.settings.AppInfoAbility
209  ```
210  >  **说明**
211  >
212  > 若配置-e、-E则须配置-b来指定应用。
213
214## 专项测试
215
216### 命令参数
217
218| 命令                | 功能                   | 必选 | 说明                |
219| :------------------ | ---------------------- | ---- | :------------------ |
220| -h, --help          | 获取当前专项测试的帮助信息。 | 否   |  -    |
221| -k, --spec_insomnia | 休眠唤醒专项测试。       | 否   | -                   |
222| -c, --count         | 设置执行次数。           | 否   | 单位次数,默认10次。          |
223| -i, --interval      | 设置执行间隔。           | 否   | 单位ms,默认1500ms。  |
224| -S, --swap          | 滑动测试。               | 否   | -                   |
225| -s, --start[x,y]    | 设置滑动测试起点坐标。   | 否   | 坐标均为正值。           |
226| -e, --end[x,y]      | 设置滑动测试终点坐标。   | 否   | 坐标均为正值。          |
227| -b, --bilateral     | 设置往返滑动。           | 否   | 默认不往返滑动。      |
228| -t, --touch[x,y]    | 点击测试。               | 否   | -                   |
229| -T, --time          | 设置测试总时间。         | 否   | 单位分钟,默认10分钟。 |
230| -C, --component     | 控件顺序遍历测试。       | 否   | 需要设置测试应用名称。 |
231| -r, --record     | 录制。       | 否   | 需要指定录制文件。 |
232| -R, --replay    |  回放。      | 否   | 需要指定回放文件。 |
233| -p, --screenshot    |  控件测试截图。      | 否   | - |
234
235### 测试命令
236
237```bash
238$ wukong special -C [bundlename] -p
239```
240
241## 专注测试
242
243### 命令参数
244
245| 命令            | 功能                                 | 必选 | 说明                                     |
246| --------------- | ------------------------------------ | ---- | ---------------------------------------- |
247| -n,--numberfocus       | 设置每个控件注入的次数。               | 否   | 单位次数。                 |
248| -f, --focustypes       | 设置需要专注的控件类型。               | 否   | 以英文逗号隔开。                         |
249| -h,--help       | 获取当前测试的帮助信息。               | 否   |  -                       |
250| -c,--count      | 设置执行次数,与设置执行时间-T冲突。二者取其一。   | 否   | 单位次数,默认10次。                       |
251| -i,--interval   | 设置执行间隔。                         | 否   | 单位ms,默认1500ms。                       |
252| -s,--seed       | 设置随机种子。                         | 否   | 配置相同随机种子,会生成相同随机事件序列。 |
253| -b,--bundle[bundlename,……,bundlename]     | 设置本次测试的允许应用名单,与-p冲突。 | 否   | 默认测试当前设备所有应用(应用名称用英文逗号隔开)。                 |
254| -p,--prohibit[bundlename,……,bundlename]   | 设置本次测试的禁止应用名单,与-b冲突。 | 否   | 默认不禁止任何应用(应用名称用英文逗号隔开)。                       |
255| -d,--page[page,……,page]                   | 设置本次测试的禁止页面名单。 | 否  | 系统默认禁止pages/system页面(页面名称用逗号隔开)。 |
256| -a,--appswitch  | 设置应用随机拉起测试比例。             | 否   | 默认10%。                                  |
257| -t,--touch      | 设置屏幕随机触摸测试比例。            | 否   | 默认10%。                                  |
258| -S,--swap       | 设置屏幕随机移动测试比例。             | 否   | 默认3%。                                   |
259| -m,--mouse      | 设置屏幕随机鼠标测试比例。            | 否   | 默认1%。                                   |
260| -k,--keyboard   | 设置屏幕随机键盘操作测试比例。         | 否   | 默认2%。                                   |
261| -H,--hardkey    | 设置随机物理按键测试比例。              | 否   | 默认2%。                                   |
262| -r,--rotate     | 设置随机屏幕旋转测试比例。               | 否   | 默认2%。                                   |
263| -C, --component | 设置随机控件测试比例。                 | 否   | 默认70%。                                  |
264| -I, --screenshot | 控件测试截图。                 | 否   | - |
265| -T,--time       | 设置测试总时间,与设置执行次数-c冲突。二者取其一。 | 否   | 单位分钟,默认10分钟。         |
266| -e, --allow ability   |  设置允许测试的ability。 | 否 | - |
267| -E, --block ability   |  设置禁止测试的ability。 | 否 | - |
268| -Y, --blockCompId     |  设置不进行注入的CompId。 | 否 | - |
269| -y, --blockCompType   |  设置不进行注入的CompType。 | 否 | - |
270| -B, --checkBWScreen   |  设置启用黑白屏检测。 | 否 | - |
271
272### 使用示例
273
274```bash
275$ wukong focus -s 10 -i 1000 -a 0.28 -t 0.72 -c 100
276```
277
278命令中各参数含义:
279| 命令           | 参数值      |说明        |
280| -------------- | -------------- | -------------- |
281| wukong focus | -           | 主命令。                |
282| -s     | 10           | 参数设置随机种子,10为种子值。  |
283| -i  | 1000           | 参数设置应用拉起间隔为1000ms。 |
284| -a  | 0.28          | 参数设置应用随机拉起测试比例28%。    |
285| -t  | 0.72           | 参数设置屏幕随机touch测试比例为72%。    |
286| -c  | 100           | 参数设置执行次数为100次。         |
287
288
289## 查看测试结果
290
291### 测试结果输出路径
292
293执行完测试指令后,会自动生成测试结果,测试结果输出根路径如下:
294
295- 2022/9/22之前的DevEco Studio版本,结果存放路径为:/data/local/wukong/report/xxxxxxxx_xxxxxx/
296- 2022/9/22之后的DevEco Studio版本,结果存放路径为:/data/local/tmp/wukong/report/xxxxxxxx_xxxxxx/
297
298### 测试报告文件目录
299
300| 类型                                 | 描述               |
301| ------------------------------------ | ------------------ |
302| exception/                           | 存放本次测试产生的异常文件。 |
303| screenshot/                          | 存放测试遍历的截图。  |
304| wukong_report.csv                    | 测试报告统计汇总。       |
305| wukong.log                | 测试操作历程。       |
306
307### 查看操作日志
308
309wukong支持通过hdc命令将日志获取到本地,查看操作历程。
310
311```bash
312# wukong.log文件对应路径如下
313/data/local/tmp/wukong/report/xxxxxxxx_xxxxxx/wukong.log
314
315# 查看wukong测试报告文件目录操作如下
316$ cd /data/local/tmp/wukong/report/20170805_170053
317$ ls
318data.js  exception  wukong.log  wukong_report.csv
319
320# 开启shell窗口,用hdc file recv获取wukong日志
321C:\Users\xxx>hdc file recv /data/local/tmp/wukong/report/20170805_170053/wukong.log C:\Users\xxx\Desktop\log
322[I][2024-01-03 20:08:02] HdcFile::TransferSummary success
323FileTransfer finish, Size:76492, File count = 1, time:16ms rate:4780.75kB/s
324```
325
326## 常见问题
327### failed to connect to AAMS
328 **错误描述**
329
330failed to connect to AAMS.
331
332 **可能原因**
333
334AAMS被hypium或者dev testing的UIViewer占用了,AAMS同一时间只能被一个程序连接。
335
336 **解决方案**
337
338结束占用AAMS的进程,或直接重启设备。
339### Errorcode:(4005)
340 **错误描述**
341
342Errorcode:(4005).
343
344 **可能原因**
345
346因屏幕显示区域大小变化,导致无障碍获取页面信息失败。
347
348 **解决方案**
349
350该错误不影响测试流程,无需处理。
351### Errorcode:(4007)
352 **错误描述**
353
354Errorcode:(4007).
355
356 **可能原因**
357
358因屏幕显示区域大小变化,导致无障碍获取页面信息失败。
359
360 **解决方案**
361
362该错误不影响测试流程,无需处理。