三、Jmeter 基础-配置原件、取样器、监听器
配置原件
重要元器件:CSV数据文件设置,HTTP信息头管理器,HTTP Cookie管理器,HTTP默认请求值,用户自定义变量
CSV 数据文件设置
设置csv数据文件
-
文件名:你的csv数据文件路径,还支持txt,bat等
-
文件编码:例如可以是UTF-8,那么jmeter就会以UTF-8读取文件
-
变量名称:以逗号分隔的名称列表,它与CSV文件中的列相匹配
-
忽略首行:如果第一行是列名而不是测试数据,就选择True忽略掉列名
-
分隔符:默认为','也可以设置为其他值(建议使用默认)
-
是否允许带引号:默认为False,如果测试数据中带有引号则设置为Ture
-
遇到文件结束符再次循环:默认为True,意思读完最后一行在回来读取第一行
-
遇到文件结束符停止线程:读完最后一行停止线程
-
线程共享模式:定义如何在并发线程之间分配值
HTTP信息头管理器
请求页面或接口时附加的协议头(调试脚本报错,问题可能出在请求头上),常用的信息头如下(我在工作中经常用到的)
# | 协议 | 说明 |
---|---|---|
1 | Accept | 可接受的响应内容类型 |
2 | Host | 表示服务器的域名以及服务器所监听的端口号 |
3 | Content-Type | 请求体的MIME类型 |
4 | Referer | 表示浏览器所访问的前一个页面 |
5 | User-Agent | 浏览器的身份标识字符串 |
6 | Connection | 客户端(浏览器)想要优先使用的连接类型 |
7 | Accept-Encoding | 可接受的响应内容的编码方式 |
HTTP Cookie管理器
在做登录后的页面请求,登录成功后HTTP Cookie管理器会写入cookies,保证后面的请求是登录状态
注意:如果在一个测试计划内有多个Cookie Manager ,Jmeter目前无法指定哪个被使用。所以,一个测试计划内最好只有一个cookie manager。并且,一个manager里的 cookie 并不能被其它manager所引用。所以在使用多个Cookie Managers 时要谨慎。
HTTP请求默认值
使用HTTP请求默认值,作用域内的HTTP请求无需设置IP和端口,只需设置路径,运行时自动把HTTP请求默认值和HTTP请求进行拼接。
好处在于如果想切换环境,只需更改HTTP请求默认值。
用户自定义变量
变量管理器,放在线程组下相当于全局变量,调用变量方式:${变量名}
-
名称:变量名
-
值:变量的值
取样器
重要元器件:HTTP请求,JDBC Connection Configuration,JDBC Request
HTTP请求
脚本中运用最多的元器件,使用也比较简单,按照抓包或者接口文档对号入座即可
-
协议:http或https
-
服务器名称或IP:服务器域名或者IP
-
端口:如果服务器名称是域名可省略,是IP则那就查看下具体端口号
-
方法:GET,POST,PUT,DELETE等
-
路径:接口或页面路径,例如/login
-
参数:key-value形式
-
消息体数据:json数据提交在此设置
-
文件上传:上传文件才用,一般用的不多
JDBC Connection Configuration和JDBC Request
Variable Name Bound to Pool
-
Variable Name:变量名绑定到池的唯一标识。与JDBC request中的相对应,决定JDBC取样的配置。简单理解就是在JDBC request的时候确定去哪个绑定的配置
Connection Pool Configuration(建议默认)
-
Max Number of Connections:数据库连接池的最大连接数,一般可设置为0,意思是每个线程都使用单独的数据库连接,线程之间数据库连接不共享
-
Max Wait (ms):在连接池中取回连接最大等待时间
-
Time Between Eviction Runs (ms):数据库空闲清理的间隔时间
-
Auto Commit:自动提交sql语句
Database Connection Configuration
-
Database URL: jdbc:mysql://服务器地址:3306/数据库名
-
JDBC Driver class:数据库JDBC驱动类名:com.mysql.jdbc.Driver
-
Username:数据库连接用户名
-
password:数据库连接密码
Variable Name Bound to Pool
-
Variable Name ....:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致
SQL Query
-
Query Type:此处支持方式多样,可以用于添加或者筛选数据,根据需要和Query配合使用
-
Query:填写的sql语句未尾不要加“;”
-
Parameter valus:参数值,顺序替代Query中的?;
-
Parameter types:参数类型
-
Variable names:保存sql语句返回结果的变量名 ,用于作为参数供调用
-
Result variable name:创建一个对象变量,保存所有返回的结果 ,供调用
-
Query timeout:查询超时时间
-
Handle result set:定义如何处理由callable statements语句返回的结果
JDBC Request取样器和JDBC Connection Configuration配置原件一起使用,前者主要用于连接数据库,前者用于执行sql语句保存变量供调用
监听器
重要元器件:查看结果树,聚合报告
查看结果树
左侧展示执行过的所有的取样器,成功显示绿色否则显示红色(没加断言绿色不一定代表成功)
右侧展示请求和响应的明细,有点类似浏览器F12Network下的详细信息或者Fiddler抓包详情
聚合报告
统计每一个请求的请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量
-
Label:请求的名称,就是我们在进行测试的httprequest sampler的名称
-
#样本:总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次;
-
平均值:默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间 ,单位是毫秒
-
中位数: 50%用户的请求的响应时间,中位数
-
90%百分位:90%的请求的响应时间
-
95%百分位:95%的请求的响应时间
-
99%百分位:99%的请求的响应时间
-
最小值:最小的响应时间
-
最大值:最大的响应时间
-
异常%:错误率=错误的请求的数量/请求的总数
-
吞吐量: 默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
-
接收KB/sec: 每秒从服务器端接收到的数据量
-
发送KB/sec: 每秒从服务器端接收到的数据量
特别说明:90% 百分位参数正确的含义
一组数由小到大进行排列,找到他的第90%个数(假如是3),那么这个数组中有90%的数将小于等于3 。
用在性能测试的响应时间也将非常有意义,也就是90%请求响应时间不会超过3 秒。
总结
本章节介绍的元器件比较多,我经常用到的是篇幅中介绍的监听器和配置元件下所有,以及HTTP请求。