性能测试理论
- 理解性能测试
- 性能衡量标准
- 吞吐量(TPS):指的是服务端返回给客户端的数据量。吞吐率:单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量。它是衡量网络性能的重要指标,通常情况下,吞吐率用“字节数/秒”来衡量,当然,你可以用“请求数/秒”和“页面数/秒”来衡量。其实,不管是一个请求还是一个页面,它的本质都是在网络上传输的数据,那么来表示数据的单位就是字节数。以用户的角度出发还有两个概念:事物和TPS
- 并发量:系统能够支持的用户数是系统容量的重要标志,并发用户数用于度量系统在高并发量访问下,系统的并行处理能力,一般如果系统中存在死锁、资源争用,在并发访问下,由于请求处于队列等待中,系统响应就会随着时间变慢。到底多少并发量系统还可以比较正常的返回请求,这个要看产品的实际情况
- 响应时间-2/5/10原则:在2秒之内给客户响应被用户认为是“非常有吸引力”的用户体验。在5秒之内响应客户被认为“比较不错”的用户体验,在10秒内给用户响应被认为“糟糕”的用户体验。如果超过10秒还没有得到响应,那么大多用户会认为这次请求是失败的
- 事物成功率:单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般以事务成功率来度量
- 性能测试分类(我接触过的)
- 稳定性测试(最佳并发用户数):固定的某个值的压力,测试出系统最稳定情况下的性能如何
- 容量测试:不断增加服务器压力直至服务器崩溃,从而测试出服务器的最大容量
- 性能测试流程:
- 明确测试类型:稳定性测试or容量测试
- 明确测试目标(以稳定性测试为例):
- 理想的是系统能够支持多少数量的并发,并运行稳定(thread group)
- 理想的是系统的吞吐量维持在什么水平,并运行稳定 (throughput timer)(1000个用户,30分钟完成登录,吞吐量应该可以达到每秒1000/(30*60))
- 理想的系统在某一压力情况下,可运行稳定的持续时间
- 测试环境准备
- 设计测试场景:要尽量和客户真实操作场景保持一致
- 编写测试脚本
- 执行测试脚本
- 分析测试报告
- 请求响应时间,事物成功率
Pls refer to the file tab for 'Performance-test-with-JMeter'
问题
- 在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能 http://www.cnblogs.com/puresoul/p/4844539.html
- JMeter分布式测试:一台机器作为调度机(master),其他机器做为执行机(slave)
- JMeter中文乱码(默认编码为:ISO-8859-1)
- POST Body Data 中文乱码问题 : 进入jmeter.properties中,找到jsyntaxtextarea.font.family这个选项,取消前面的#号,使其使用Hack字体即可,当然,你也可以换成 宋体以及其他支持的字体集。
- jmeter-察看结果树-响应数据中的中文显示乱码 :
- 进入jmeter.properties中,sampleresult.default.encoding的值改为utf-8
- 在http请求上加一个后置处理器Post Processors->Bean Shell PostProcessor
- 修改Jmeter支持的最大线程数,如下:(没有找到具体最大支持的线程数,但是有地方数1000就会崩溃,这个时候可以使用第一个问题中提到的Jmeter分布式测试方法进行测试)
set HEAP= 最大值应该设置为剩余内存的50%
set NEW=-的MAX一般设置为HEAP最大值的50%
实例:修改/bin/jmeter.bat文件,找到这2行
set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m--改为:
set HEAP=-Xms256m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m - 其他:http://www.cnblogs.com/yangxia-test/p/4137519.html