Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | - | - | ||||
JSPressTest.js | D | 12-May-2024 | 3.4 KiB | 118 | 95 | |
NativePressTest.py | D | 12-May-2024 | 4.8 KiB | 131 | 95 | |
RebootPressTest.py | D | 12-May-2024 | 2.5 KiB | 61 | 38 | |
readme.md | D | 12-May-2024 | 7.3 KiB | 159 | 140 | |
utils.py | D | 12-May-2024 | 2.2 KiB | 71 | 45 |
readme.md
1# 稳定性测试工具<a name="ZH-CN_TOPIC_0000001115694144"></a> 2 3- [简介](#section11660541593) 4- [目录](#section161941989596) 5- [约束](#section119744591305) 6- [说明](#section06487425716) 7 - [反复开关机压力测试执行步骤使用说明](#section129654513264) 8 - [Native的测试用例进行反复压力测试使用说明](#section129654513265) 9 - [JS的测试用例进行反复压力测试使用说明](#section129654513266) 10 11## 简介<a name="section11660541593"></a> 12 13稳定性测试工具提供了一系列针对openharmony系统进行压力测试的方法,以便能够发现系统级、模块级的一些低概率的稳定性问题。 14 15支持特性: 16 17- 支持对系统整机进行反复开关机压力测试。 18- 支持对Native的测试用例进行反复压力测试。 19- 支持对js的测试用例进行反复压力测试。 20 21## 目录<a name="section161941989596"></a> 22 23``` 24xts_tools/reliability 25├── utils.py # 测试需要的基础方法 26├── RebootPressTest.py # 执行反复开关机压力测试的工具 27├── NativePressTest.py # 执行Native的测试用例进行反复压力测试的工具 28├── JSPressTest.js # 执行JS接口的的测试用例进行反复压力测试的工具 29``` 30## 约束<a name="section119744591305"></a> 31 32测试工具环境依赖 33 341. python版本\>=3.7.5 352. 运行操作系统:Windows版本\>=Win10,Linux为Ubuntu18.04 36 37## 说明<a name="section06487425716"></a> 38 39## 反复开关机压力测试执行步骤<a name="section129654513264"></a> 401. 修改测试工具代码 41 RebootPressTest.py文件中关键部分介绍如下 42``` 43 DeviceKey = "1501003847544634520655ef935dc727" # 被测设备的设备识Key,通过hdc_std list targets命令获取 44 hdcPath = "D:\\tools\\hdc\\hdc_std.exe" # hdc_std工具目录 45 rebootLoop = 300 # 总测试次数,一般建议个人级测试执行300次 46 rebootWaitTime = 60 # 设备重启至恢复正常等待时间 47 rebootMaxWaitTime = 300 # 设备重启至恢复正常最大等待时间,一般超过这个时间则认为设备已经出现异常,需要定位问题 48``` 492. 执行反复开关机压力测试 50 执行python RebootPressTest.py开始测试 513. 观察测试结果 52 执行过程中会打印过程中的一些日志信息,正常如下所示 53``` 54 ------------------------TEST START--------------------------- 55 cmdRet is 1501003847544634520655ef935dc727 56 cmdRet is start ability successfully. 57 Current Time is:2021-07-03 17:20:45.962538 58 Will reboot round 1, total time is 300 59``` 60 如果执行出现了异常,则会抛出异常信息 61``` 62 The device xxx is not ready after reboot for 300 seconds. #重启后系统长时间不开机 63 或 The device xxx can not start APP after reboot. #重启后系统关键能力不可用 64``` 65## Native的测试用例进行反复压力测试执行步骤<a name="section129654513265"></a> 661. 按照https://gitee.com/openharmony/xts_acts#%E7%94%A8%E4%BE%8B%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC 链接的描述设计可靠性测试用例并完成编译 672. 修改测试工具代码 68 NativePressTest.py文件中关键部分介绍如下 69``` 70 hdcPath = "D:\\tools\\hdc\\hdc_std.exe" #hdc工具存放路径 71 testFilePath = "d:\\test\\" #测试用例存放路径 72 testFile = "hilogtest" #测试用例文件名 73 testTime = 6 * 3600 #测试时间长度,默认测试6小时 74 processNum = 5 #测试线程数量,默认5个线程 75``` 762. 执行Native的测试用例进行反复压力测试 77 执行python NativePressTest.py开始测试 783. 观察测试结果 79 执行过程中会打印过程中的一些日志信息,正常如下所示 80``` 81 ------------------------TEST START--------------------------- 82C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python.exe D:/test/pyhikey/NativePressTest.py 83abs path is D:\test\pyhikey 84Start to PressTest Process with cmd start D:\tools\hdc\hdc_std.exe shell "cd /data/local/tmp/;/data/local/tmp/hilogtest --gtest_repeat=-1 > /dev/null " 85``` 86 如果执行出现了异常,则会抛出异常信息,一般有两类异常:测试用例本身异常退出、系统中其他进程异常退出 87``` 88Exception found after Test,please check faultlog path 89Traceback (most recent call last): 90 File "D:\test\pyhikey\NativePressTest.py", line 126, in <module> 91 raise Exception("Exception found after Test,please check faultlog path") 92Exception: Exception found after Test,please check faultlog path 93 94Process finished with exit code 1 95``` 96问题日志:Native稳定性测试完成之后,异常日志会从设备中导出并保存在NativePressTest.py文件所在目录下的faultlog目录下,请根据日志中的调用栈信息进行问题定位。 97 98## JS的测试用例进行反复压力测试执行步骤<a name="section129654513266"></a> 991. 按照https://gitee.com/openharmony/xts_acts#js%E8%AF%AD%E8%A8%80%E7%94%A8%E4%BE%8B%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC%E9%80%82%E7%94%A8%E4%BA%8E%E6%A0%87%E5%87%86%E7%B3%BB%E7%BB%9F 链接的描述设计JS可靠性测试用例及其测试环境 1002. 将JSPressTest.js测试工具放到测试用例工程的pages/index目录下,和index.js同目录,目录及文件效果如下图所示 101``` 102├── BUILD.gn 103│ └──entry 104│ │ └──src 105│ │ │ └──main 106│ │ │ │ └──js 107│ │ │ │ │ └──default 108│ │ │ │ │ │ └──pages 109│ │ │ │ │ │ │ └──index 110│ │ │ │ │ │ │ │ └──index.js # 入口文件 111│ │ │ │ │ │ │ │ └──JSPressTest.js # JS测试用可靠性测试工具 112│ │ │ │ │ └──test # 测试代码存放目录 113``` 114 1153. 在index.js文件中添加工具依赖,将可靠性测试工具引入,如下所示 116// 引入可靠性测试工具 117import {Core, ExpectExtend} from 'deccjsunit/index' 118import {PressureTest} from './JSPressTest' 119 1203. 在index.js文件的onShow方法下,添加如下的代码,并将功能测试入口注释掉,如下所示 121``` 122 onShow() { 123 console.info('onShow finish') 124 const core = Core.getInstance() 125 const expectExtend = new ExpectExtend({ 126 'id': 'extend' 127 }) 128 core.addService('expect', expectExtend) 129 core.init() 130 const configService = core.getDefaultService('config') 131 configService.setConfig(this) 132 require('../../../test/List.test') 133 //core.execute() #将功能测试入口注释掉 134 var press = new PressureTest(core); 135 press.setPressTimes(10000); 136 press.run(); 137``` 138 1394. 按照标准系统的测试用例执行方法执行测试即可 140 141FAQ: 1421. 按照测试时长维度设置压测时间 143 调用接口press.setPressTimeout(timeout: int)设置压测时间,单位s 144``` 145 var press = new PressureTest(core); 146 press.setPressTimeout(10000); 147 press.run(); 148``` 149 1502. 按照测试次数维度设置压测次数 151 调用接口press.setPressTimes(times: int)设置压测时间,单位s 152``` 153 var press = new PressureTest(core); 154 press.setPressTimes(10000); 155 press.run(); 156``` 157 1583. 测试结果检查 159 测试完成之后,检查/data/log/faultlog/temp/目录下是否有cppcrash日志,如果有异常即测试过程中出现了异常