性能测试工具 三、Jmeter 基础 - 配置原件、取样器、监听器

Maple · 2020年01月09日 · 最后由 jierong01 回复于 2020年01月17日 · 2342 次阅读

配置原件

重要元器件: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 请求。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

希望你可以坚持下去,把我带飞

希望你可以坚持下去,把我带飞 +1,点赞

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册