• Home
Name Date Size #Lines LOC

..--

JSPressTest.jsD12-May-20243.4 KiB11895

NativePressTest.pyD12-May-20244.8 KiB13195

RebootPressTest.pyD12-May-20242.5 KiB6138

readme.mdD12-May-20247.3 KiB159140

utils.pyD12-May-20242.2 KiB7145

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日志,如果有异常即测试过程中出现了异常