性能测试相关知识(二) Jmeter的应用
1、性能测试的方法
1.1验收负载测试:
在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求。
1.2负载测试
在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量。
1.3压力测试
该发放是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut
OOM OverstackExpection(堆栈异常).压力测试的特点:
1、检查系统在处于压力情况下时应用的性能表现
2、等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)
3、这种方法一般用于测试系统的稳定性
1.4配置测试
被测环境软硬件环境参数的调整,达到最优的分配原则。
1.5并发测试
并发测试指的是模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,并发测试的特点是:
1、发现系统中可能隐藏的并发访问的问题
2、关注系统可能存在的并发问题,如内存泄漏,线程锁,资源争用情况
3、使用的测试工具如profiler等
1.6可靠性测试
给系统一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。
1.7故障演练
故意的在过程中 让程序出现问题,看程序自己能不能平稳的过渡 考验的是团队的合作能力
1.8灾难恢复测试
灾难恢复测试指的是,故意把数据删除了 看程序怎么进行自我数据恢复
2、JMeter性能测试
2.1JMeter执行原理
JMeter通过线程组来驱动(也可以理解称为LR工具里面的虚拟用户)运行测试脚本对目标服务器发起大量的网络请求
在每个客户端上可以运行多个线程组,也就是说一个测试计划里面可以包含N个线程组。
2.2线程属性
2.2.1线程数
线程数指的是模拟的用户数 可以用于并发场景来运用,线程数越多,则模拟用户数就越多
2.2.2Ramp-Up
每秒执行多少个用户 计算方式为 线程数/Ramp-Up=每秒执行的线程数
如下图所示 即为每秒执行5个线程组
2.3持续时间
持续时间指的是测试计划持续多长时间
2.4启动延迟
从当前时间延迟多久时间开始运行测试,也就是说点击执行后,仅仅是做初始化的场景,不会执行测试,等待延迟到达后开始运行测试,执行的时间为持续时间设置的时间。
举例说明 每秒能处理5个线程 启动延迟设置为5秒 则 启动延迟结束后 瞬间发送延迟5*5=25个线程 后续每1秒执行5线程
2.5聚合报告
右键测试计划选择添加监听器当中的 聚合报告
需要注意的是聚合报告和线程组是平级 且需要放在线程组的上面
其中所有参数的含义如下表所示
Label:取样器名称 Samples:取样器运⾏次数 Average:单个请求的平均响应时间 Median:50%请求的响应时间 90%Line:90%请求响应时间 95%Line:95%请求响应时间 99%Line:99%请求的响应时间 Min:请求的最⼩响应时间 Max:请求的最⼤响应时间 Std.Dev:响应时间的标准⽅差 Error%:事务错误率 Throughput:吞吐率,也就是TPS KB/sec:每秒数据包流量 Avg.Bytes:平均数据流量 Received KB/sec:每秒从服务器端接收到的数据量 SentKB/sec:每秒从客户端发送的请求的数量
2.6响应时间图
右键线程组 选择添加监听器里的响应时间图
在运行测试后 在查看响应时间图