一、性能测试的流程
1、前期准备工作
1)梳理好测试场景,按照以下顺序处理
登录、产品列表、API执行
2)确认目标,一般测试主导,将相关人员集中后讨论,所有达成一致后开始测试,当讨论后还是有不同意见,最终以架构师结果为准
2、测试工具技术引入
1)loadruuner(负载运行器)——HP(惠普)包含:LR/QTP/QC,最高可负载1000
2)JMeter:二次开发——平台
3)locust(蝗虫)——协程
4)自己开发工具
3、性能测试计划
1)需要的人力
2)做什么
3)什么时候开始和结束
4)使用什么技术
4、测试设计与开发
1)工具/代码如何写
2)开发——具体的脚本
5、测试执行与管理,数据收集
依据配置的场景执行
数据收集:
1)数据库资源——IOPS
2)Linux——CPU memory(内存)
3)nginx——连接数
4)Response Time(响应时间)/throughput(吞吐量)等资源
6、测试分析
二、性能测试的方法
1、验收负载测试
在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求
2、负载测试
在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量
3、压力测试
该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点:
1)检查系统在处于压力情况下时应用的性能表现
2)等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)
3)这种方式一般用于测试系统的稳定性
4、配置测试
被测环境软硬件环境参考的调整,达到最优的分配原则
5、可靠性测试
模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或其他的问题,并发测试的特点是:
6、故障演练
公司出于测试团队合作的能力,操作使系统90%以上出现异常,排练员工处理问题的能力
7、容灾恢复测试
故意破坏系统,查看程序自行恢复情况
三、JMeter性能测试场景设置
JMeter执行原理
JMeter通过线程组来驱动多个(也可以理解为LR工具里面的虚拟用户)运行测试脚本对目标服务器发起大量的网络请求,在每个客户端上可以运行多个线程组,也就是说⼀个测试计划里面可以包含N个线程组
1、线程属性
线程数:⼀个线程可以理解为对应模拟⼀个用户,所以线程数越多,也可认为模拟的用户数越多
Ramp-Up时间(秒):每秒执行线程数=线程数/Ramp-Up
如设置线程组为50,秒设置为10,这表示开始执行后,每秒启动5个线程;如果设置为0,全部设置的会立即启动,不建议将循环次数设置为永远
2、调度器
调度器:这个理解为何时开始
持续时间:表示完成需要的时间,设置的时间不能小于每秒执行结果的时间
启动延迟:从当前时间延迟多长时间开始运行测试,也就是说点击执行后,仅仅是做初始化的场景,不会执行测试,等待延迟到达后开始运行测试,执行的时间为持续时间设置的时间
四、聚合报告各个值
毫秒为单位,一般放置线程组下
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:每秒从客户端发送的请求的数量
练习