我所接触过的性能测试,主要包括以下几个方面
- web系统性能测试
- 数据处理性能测试
- 接口性能测试
- app客户端性能测试
- 数据库性能测试
1.web系统性能测试
性能测试工具:loadrunner,jemter,badboy,
性能测试项:负载测试,压力测试,并发测试,疲劳强度测试,大数量测试
性能测试指标:
请求相应时间:
3/5/10
原则,网络响应时间+应用程序响应时间
事务响应时间
用户并发数
吞吐量
TPS:每秒钟能够处理处理的或者交易的数量
点击率
资源利用率:cpu,内存,load average,物理磁盘读写
性能测试实例-loadrunner
1.录制脚本
- 创建事务
- 设置集合点
- 参数化输入
- IP欺骗
- 关联(动态数据)
- 设置检查点(text、img)
2.创建场景
runtime setting
- miscellaneous:多线程,事务,执行方法
- network:模拟各种带宽网络
- preference:快照,检查点
- cotentcheck:自定义页面
- thinktime
- TD
选择场景
- Manual Scenario:该项要完全手动的设置场景
- Goal—Oriented Scenario:面向目标的场景
场景设置
- 设置集合点
- 设置集合点策略
3.分析结果
2.数据处理性能测试
性能测试工具:python,awk
性能测试项:大数据
性能测试指标:cpu,内存,硬盘,load average,数据处理正确性
性能测试实例-python
1.自动部署测试环境
2.自动产生测试数据-4G,存入期望结果
visit_log = "|%s|%s|%s|tesss|%s|" % ("a1","a2","a3","a4")
syslog.syslog(syslog.LOG_CRIT, visit_log)
3.执行程序,执行监控程序,产生测试结果
资源监控(shell)
cpu
while true
do
date >>cpu
top -bn 10 |grep Cpu >>cpu
sleep 120
done
do
date >>cpu
top -bn 10 |grep Cpu >>cpu
sleep 120
done
load average
while true
do
uptime>>load_average
sleep 60
done
do
uptime>>load_average
sleep 60
done
memory
while true
do
date>>mem
top -bn 10 |grep Mem>>mem
sleep 120
done
do
date>>mem
top -bn 10 |grep Mem>>mem
sleep 120
done
df -lh
4.对比测试结果,生成测试报告
3.接口性能测试
性能测试工具:jmeter,ab(apache)
性能测试项:并发测试
性能测试指标:请求响应时间,资源利用率
性能测试实例-ab
ab -n1000 -c 10 http://www.test/index.php
-n:请求总数 -c 并发总数 -v 设置显示信息的详细程度
Server Software: 被测软件服务名称
Server Hostname: 主机名
Server Port: 服务端口
Document Path: url绝对路径
Document Length: 16026 bytes http响应数据正文长度
Concurrency Level: 10 并发数
Time taken for tests: 1.071 seconds
Complete requests: 100 请求总数
Failed requests: 0 请求失败数
Write errors: 0
Total transferred: 1688472 bytes 所有请求的响应数据长度总和
HTML transferred: 1656544 bytes 所有请求的响应数据中正文数据的总和
Requests per second: 93.34 [#/sec] (mean) 吞吐率,相当于 LR 中的 每秒事务数
Time per request: 107.139 [ms] (mean) 用户平均请求等待时间,相当于 LR 中的 平均事务响应时间
Time per request: 10.714 [ms] (mean, across all concurrent requests) 服务器平均请求处理时间,相当于LR中平均请求响应时间
Transfer rate: 1539.03 [Kbytes/sec] received 请求在单位时间内从服务器获取数据的长度(Total transferred / Time taken for tests),这个统计选项可以很好的说明服务器在处理能力达到极限时其出口带宽的需求量
性能测试实例-jmeter
4.app客户端性能测试
性能测试工具:monkey,robotium,Emmagee
性能测试项:操作响应
性能测试指标:cpu,内存,电量,成功率
性能测试实例-monkey
随机测试,适合开发人员初步测试
adb shell monkey -p com.xy.android.junit -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v -v 10000 > java_monkey_log.txt
-p:指定有效的package
-s: 指定产生随机事件种子值,相同的种子值产生相同的事件序列
--ignore-crashes:忽略崩溃
--ignore-timeouts:忽略超时
--ignore-timeouts:忽略超时
--monitor-native-crashes:跟踪本地方法的崩溃问题
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0
性能测试实例-robotium
1.设计场景,编写测试脚本
连续点击10次返回键
for(int k=0; k<Configuration.performance_num;k++){
solo.clickOnMenuItem(Configuration.MY_ACCOUNT_HELP);
solo.goBack();
}
solo.clickOnMenuItem(Configuration.MY_ACCOUNT_HELP);
solo.goBack();
}
连续刷新列表100次
ListView listview1 = (ListView) solo.getView(R.id.history_lv);
int location1[]=new int[2];
listview1.getLocationOnScreen(location1);//获取listiew的坐标
//坐标是从左上角开始的如果listview铺满整个界面那么坐标可能接近(0,0)
for(int j=0; j<Configuration.performance_pull_num;j++){
solo.drag(location1[0]+10,location1[0]+10,location1[1],location1[1]+listview1.getHeight(),3);
}
int location1[]=new int[2];
listview1.getLocationOnScreen(location1);//获取listiew的坐标
//坐标是从左上角开始的如果listview铺满整个界面那么坐标可能接近(0,0)
for(int j=0; j<Configuration.performance_pull_num;j++){
solo.drag(location1[0]+10,location1[0]+10,location1[1],location1[1]+listview1.getHeight(),3);
}
2.adb shell 监测手机资源
adb shell top
adb shell vmstat -d 2
adb shell cat /proc/cpuinfo cat/proc/meminfo
3.执行测试,生成测试报告
性能测试实例-Emmagee
网易提供的功耗检测软件,安装在手机端,打开app,随机测试,会自动生成测试结果
5.数据库性能测试