集成monkey功能, 以及在手工测试app端功能时,自动收集相关数据,并生成HTML报告。
1、采用python脚本来驱动测试;
2、调用android
SDK adb与monkey命令,进行数据采集和稳定性测试;
3、采集数据写入文件和数据库;
4、附带android其他小脚本,便于测试过程中使用;
5、根据实际情况修改配置文件后进行数据采集,生成静态HTML报告,数据一目了然
代码目录结构:
1、配置文件
只需保证配置文件内容正确即可。
配置文件存放在src/config/目录下,名称是:config.ini。配置文件各参数介绍,参考如下:
[PERFORMANCE]
package_name = com.xxxxx.xxxx
activity = com.xxxxx.xxx.xxxxxPager
start_no = 10
interval = 5
capture_num = 100
isROOT = True
[MONKEY]
#种子数
throttle = 500
#事件数
event_number = 10000
#事件延迟时间
event_delay_time = 600
#事件分布比,填写正整数,且总和不能超过100
pct_touch = 30
pct_motion = 30
pct_nav = 0
pct_trackball = 0
pct_majornav = 10
pct_syskeys = 10
pct_appswitch = 10
pct_anyevent = 10
[CAPTURE_FILE]
#性能数据采集后记录到文件
cpu_info_file = cpu_info.txt
cpu_load_file = cpu_load.txt
mem_info_file = mem_info.txt
flow_info_file = flow_info.txt
2、SQLIte数据库表设计说明
表名 |
字段 |
字段说明 |
cpu_data |
|
|
|
capture_time |
采集时间点 |
|
occupancyRate |
总的cpu消耗百分比 |
|
user |
user百分比 |
|
kernel |
kernel百分比 |
|
|
|
cpu_load |
|
|
|
capture_time |
采集时间点 |
|
lavg_1 |
1分钟平均负载 |
|
lavg_5 |
5分钟平均负载 |
|
lavg_15 |
15分钟平均负载 |
|
nr_running |
在采样时刻,运行队列的任务的数 |
|
nr_threads |
在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务) |
|
last_pid |
最大的pid值,包括轻量级进程,即线程 |
|
|
|
flow_data |
|
|
|
capture_time |
采集时间点 |
|
download |
wifi下载流量 |
|
upload |
wifi上传流量 |
|
down_flow_diff |
本次download-上一次download,差值为两个采集时间点下载流量的实际消耗 |
|
up_flow_diff |
本次upload-上一次upload,差值为两个采集时间点上传流量的实际消耗 |
|
|
|
mem_data |
|
|
|
capture_time |
采集时间点 |
|
mem_percent |
内存实际消耗百分比(PSS/MemoryTotal) |
3、创建表SQL语句
表名 |
SQL语句 |
cpu_data |
CREATE
TABLE [cpu_data] (
[capture_time] DATETIME NOT NULL,
[occupancyRate] CHAR NOT NULL,
[user] CHAR NOT NULL,
[kernel] CHAR NOT NULL); |
|
|
cpu_load |
CREATE
TABLE [cpu_load] (
[capture_time] DATETIME NOT NULL,
[lavg_1] CHAR NOT NULL,
[lavg_5] CHAR NOT NULL,
[lavg_15] CHAR NOT NULL,
[nr_running] INT,
[nr_threads] INT,
[last_pid] CHAR); |
|
|
flow_data |
CREATE
TABLE [flow_data] (
[capture_time] DATETIME NOT NULL,
[download] CHAR NOT NULL,
[upload] CHAR NOT NULL,
[down_flow_diff] CHAR,
[up_flow_diff] CHAR); |
|
|
mem_data |
CREATE
TABLE [mem_data] (
[capture_time] DATETIME NOT NULL,
[mem_percent] CHAR NOT NULL); |
4、涉及的第三方模块
模块名称
|
安装命令
|
模块说明
|
progressbar
|
pip
install progressbar
|
进度条
|
configobj
|
pip install configobj
|
读取配置文件
|
matplotlib
|
pip
install matplotlib
|
绘图使用
|
dateuti
|
pip install python-dateutil
|
绘图使用
|
numpy
|
pip
install numpy
|
绘图使用
|
|
|
|
执行src目录下run_performance.py,即可进行性能数据的收集工作,在数据收集期间,请手工进行app端的功能测试,这样的数据采集才具有意义。
src目录下,执行run_monkey.py,可调用monkey命令进行稳定性测试,产生的日志信息记录在report目录下。
说明:
可在进行monkey稳定性过程中,进行性能数据收集操作,这样采集的数据为monkey稳定性测试期间被测app的性能数据。
测试报告在report目录下Performance_Results.html文件,部分截图详见附件