第一章 jmeter基础知识
一.Jmeter工具中的组件
1.测试计划:Jmeter测试的起点。容器。
2.线程组:代表一定的用户
3.取样器:发送请求的最小单元
4.逻辑控制器:处理请求逻辑
5.前置处理器:请求之前的操作
6.后置处理器:请求之后的操作,可以用来进行数据提取
7.断言:判断请求结果是否正确
8.定时器:延迟请求
9.配置元件:配置请求
10.监听器:收集测试结果
二.组件作用域
下面这三个在配置元件中是默认一般必须存在的。
结论1:组件能作用于同级组件
结论2:组件能作用于同级组件下的子组件
结论3:组件能作用于父组件
三.目前市面上的接口
1.基于webservice的协议接口,使用xml来传输数据
2.基于dubbo的协议接口,使用json来传输数据
3.基于http的协议接口,使用json来传输数据
四.Jmeter接口测试实战
接口关联
1.正则表达式提取器
1)变量名:可以随意定义
2)正则表达式,要包括有左边界和右边界以及(.*?),而且必须唯一
3)$1$ 表示取第一个正则,$2$表示取第二个正则
4)匹配数字,表示取第一个匹配到的值
5)默认值,没有匹配到就使用默认值
2.Json提取器
jsonpath的语法规则:只适用于json数据
{"name":"11","code":"code11"}
$代表根目录
.代表子节点
$.name $.code
$.*:代表将根目录下的所有子节点值的获取
3.取数组的值通过 [下标],下标从0开始
1.变量名
2.是json path表达式
3.匹配数字,表示取第一个匹配到的值
4.默认值,没有匹配到就使用默认值
四.接口断言
常用的断言有:响应断言,json断言,和beanshell断言
1.响应断言
如何校验数据库?
用beanshell来实现
第二章 性能测试
一.性能测试的目的
性能测试是通过性能测试工具(Jmeter,loadrunner)通过特定方式,对系统施加一定的压力;正常,异常负载以及峰值来对系统进行实施压力,得到各项性能指标,保证系统的性能需求。
价值和目的:
1.评估系统的能力
2.识别系统的弱点:瓶颈,弱点
3.检查系统隐藏的问题
4.检验系统的稳定性和可靠性
二.性能测试指标理解透彻以及测算
1.指标
【虚拟用户数】:可以理解成线程,一个线程=一个虚拟用户
【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互。一般通过集合点来实现。
【事务】:一个接口,多个接口,或一个流程都可以是事务。事务代表一个完整的功能,有由测试人员决定。一般把一个流程作为一个事务。
【场景】:性能测试的用例,
【响应时间RT】response time,
平均响应时间:
中位数:
90%:从小到大排序,第90位的时间
95%
99%
基准测试:一般设定一个用户请求接口,为200-500ms.
压力测试:N个用户并发请求接口,一般设置为2s.
【TPS】:是系统的重要性能指标,用于衡量系统在一定时间内能够处理的事务数
transaction
如果一个接口是一个事务的话,TPS的数量=吞吐量
计算公式:总的事务数/总的运行时间=每一秒能完成多少个事务
(1)没有更详细的数据:根据二八定律(80%的事务在20%的时间完成)计算
TPS=(总的事务数*80%)/(总的运行时间*20%)
(2)如果有更详细的数据:根据业务的增长等,分情况计算
【QPS】:每一秒的查询率
【HPS】:每一秒的点击率(客户端的)
【吞吐量】:用来衡量网络成功传输的数据量,单位Byte/s
【资源利用率】:服务器的资源:CPU,内存,磁盘,网络
三.性能测试流程
1.需求的分析以及需求确定(指标值,场景,环境,人员)
2.性能测试计划和方案制定
基准测试:怎么做
负载测试:
压力测试:
稳定性测试:
3.性能测试准备阶段
人力,硬件,软件,环境折算
干净,保持各个版本一致
4.测试执行阶段
脚本生成和增强
场景设计
指标监控
性能瓶颈定位和性能调试
5.测试报告和总结
四.性能脚本的生成以及完善和增强
1.通过jmeter代理服务器录制脚本
1)设置客户端的代理,
控制面板-> internet选项->连接-> 局域网设置->勾上代理输入jmeter所在电脑的ip个端口8888, 端口一般默认8888,
2)录制脚本
2.完善脚本以及增强脚本
token:一般用于鉴权
jmeter的聚合报告中的吞吐量=TPS
1)逻辑控制器:事务控制器,仅一次控制器,吞吐量控制器
量=TPS
吞吐量控制器:
Based on:
Percent...:默认,按百分比来分配流量
Total..:代表总次
2)定时器:尽量少用
3)集合点:在jmeter中叫同步定时器,用于实现并发
4)使用线程组
如下图:
其中线程属性中
线程数:代表虚拟用户数
Ramp -up:代表多久加载完这些线程数
循环数:3,每个线程发送的总请求数:100*3=300个
五.Jmeter的插件安装以及监控使用
1.下载一个插件管理包jmter-plugins-manger版本的jar包,放到jmeter的lib/ext的目录下,重启jmeter
六.实际性能压测的场景设置
场景:性能测试用例
一般大部分公司的并发量很难超过500,京东淘宝除外。如果有5000以上,1万,十万,百万一定要做集群。
1.单接口的基准测试:使用一个用户测试接口5分钟
目的:在没有任何压力的情况下,查看各项性能指标。
第三章:压力测试
一.关注哪些参数:
1.响应时间
135,258原则
2.TPS
每秒通过的事务数
3.错误率
90%的正确率就可以接受,如果是对应的银行,金融的不行,需要有对应的容错机制
4.CPU和内存的使用情况
CPU:占有率最好不超过80%,有20%的空闲
磁盘:读写操作频率不要过高
二.如何设置场景
负载测试:逐步增加并发数
稳定性测试:持续时间确定。查看该时间段内的性能情况
用聚合报告查看压力测试结果