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 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该错误不影响测试流程,无需处理。