前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Jmeter入门】2.JMeter实现前后端接口性能测试

【Jmeter入门】2.JMeter实现前后端接口性能测试

作者头像
辉哥
发布2021-04-16 11:32:29
1.7K0
发布2021-04-16 11:32:29
举报
文章被收录于专栏:区块链入门区块链入门

1. 摘要

本文讲解如何使用JMeter实现前后端接口的性能测试。JMeter入门实践可参考《【NGINX入门】16.使用JMeter压力测试工具测试NGINX限流配置实践》 《【Jmeter入门】1.JMeter界面及监听器介绍》

2. 实践内容

2.1 接口请求实例

1. “用户定义的变量” 的应用

以获取学生信息接口(stu_info) 为例,添加一个“用户定义的变量”,设置变量"host" 以及值,这样在获取学生信息接口(stu_info)就可以通过"${host}"取得“服务器名称或IP”的值。

登陆接口(login)接口也可以应用“用户定义的变量”的方法,如上图所示,在“用户定义的变量”中添加"username", "password" 变量及对应的值, 应用到登陆接口(login)接口请求中即可。

2. "HTTP Cookie 管理器"的应用

以金币充值接口(gold_add)为例,建立一个HTTP请求改名“金币充值”,选取请求方式POST, 输入对应的host, path以及同请求一起发送的参数和值。

由于此接口有权限验证,需要admin用户才可以做操作,需要添加cookie, 因此需要添加"HTTP Cookie 管理器"以传递Cookie。

添加"HTTP Cookie 管理器" 方法如下图所示, 右键“金币充值” -> “添加” -> “配置元件” -> "HTTP Cookie 管理器"

设置Cookie 的名称(即username 的值),值(即login Response 中的sign 值),域(已在“用户定义的变量”中设置,只需输入变量即可,格式为${host})

最后可以通过“察看结果数”的响应数据查看结果。

3. 建立接口间的关联

以下以登陆接口(login)和金币充值接口(gold_add)为例,在这两个接口间建立关联,让金币充值接口(gold_add)可以实时取得登陆接口(login)的"sign" 值,不必再“HTTP Cookie 管理器”中手动输入最新的sign 值。

从“察看结果树”可以看出,登陆接口(login)的Response 结构为Json格式, sign 在 login_info 里面一层。

3.1 应用"jp@gc - JSON Path Extractor" 来实现

右键“登陆” -> “后置处理器 -> "jp@gc - JSON Path Extractor"

通过“察看结果数”得到Response 的结果后, 将“JSONPath Expression” 输入"$.login_info.sign", 设置变量"sign2", 给金币充值接口(gold_add)用

因此需要在“HTTP Cookie 管理器”中将{username}的值输入 {sign2},代替之前手动输入的那一串码。

3.2 右键“登陆” -> “后置处理器 -> "正则表达式提取器"

输入对应的值, "jp@gc - JSON Path Extractor" 中类似,将“引用名称”输入"sign2",以保证和“HTTP Cookie 管理器”的一致。将正则表达式中的式用login 接口返回的 "sign": "cd2b43f1688e472e3a516b5a2c6831e8", 中的一串码用(.*) 替换即可。

各参数的含义参考下表:

|

参数

|

释义

|

| --- | --- |

|

引用名称

|

在HTTP等请求中,引用此数据,需要用到的名称

|

|

正则表达式

|

用于将需要的数据提取出来

|

|

模板

|

表示使用提取到的第几个值:

:表示取所有值

:表示随机取值

:表示取第1个

:表示取第二个

以此类推:

:表示取第n个

|

|

匹配数字(0代表随机)

|

0 代表随机取值,1 代表全部取值

|

|

缺省值

|

如果正则表达式没有搜找到值,则使用此缺省值

|

4. 设置断言

以“增加学生”接口(add_stu)为例,增加响应断言,以验证添加的数据是否成功。如下图所示设置

通过“察看结果数”可以看到“增加学生” 金币结果为绿色,同时响应数据里的确有断言中的设置的"1000"。

5. “HTTP信息头管理器”的使用

以下图中的“获取所有学生信息” 为例,右键“获取所有学生信息” -> “添加” -> “配置元件” -> "HTTP Cookie 管理器" , 输入对应的名称和值即可。

**注意: ** 这里的值需要输入完整的url, 包括http:// (eg, 输入http://api.test.cn)

6. POST 文件的使用方法

与其他POST请求中添加key-value, json 数据不同的是,这个需要在HTTP 请求中点击“Flies Upload” tab, 点击“添加”, 然后通过“浏览”上传本地的文件。

注意: 参数名称必须为"file"。

7. "CSV Data Set Config" 和 “函数助手对话框”的使用

以增加学生接口(add_stu)为例,在本地创建一个文件,添加name 和sex的值,对脚本设置5个线程或者循环5次,以加入这5个用户。

右键“线程组” -> “添加” -> “配置元件” -> "CSV Data Set Config",如果仅应用于“增加学生”接口的话,可以直接在“增加学生”接口下面创建"CSV Data Set Config"。

根据下图添加对应的,"Variable Names" 输入"name" 和"sex", 以逗号隔开,为避免插入的数据乱码,将file encoding 设置为utf-8。

由于"CSV Data Set Config"中的变量名为name 和sex,因此在“增加学生”接口的"Body Data" 中将值分别替换为

{sex}。

由于“phone”的唯一性,每次插入一条学生信息时phone 都要求不一样,所以对后面8位用随机函数来实现。

8. 数据库的应用

以下是JMeter 驱动数据库列表:

<colgroup style="margin: 0px; padding: 0px;"><col width="317" style="margin: 0px; padding: 0px;"><col width="470" style="margin: 0px; padding: 0px;"><col width="313" style="margin: 0px; padding: 0px;"></colgroup>

|

数据库

|

驱动

|

数据库url

|

|

mysql

|

com.mysql.jdbc.Driver

|

jdbc:mysql://host:port/{dbname}?allowMultiQueries=true

|

|

oracle

|

org.postgresql.Driver

|

jdbc:postgresql:{dbname}

|

|

PostgreSQL

|

oracle.jdbc.driver.OracleDriver

|

jdbc:oracle:thin:user/pass@//host:port/service

|

|

MSSQL

|

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

|

jdbc:sqlserver://IP:1433;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

|

以下以mysql 数据库为例。

添加一个"JDBC Connection Configuration", 根据上表中对mysql的要求设置下图的值。

image

添加一个"JDBC Request", 由于在Query 中有insert 和select, 所以Query Type 需要选择"Callable Statement", 如果是单个的select 或者insert,可以选取对应的Select Statement 和Update Statement。

通过察看结果数看到"JDBC Request" 请求成功,响应数据里返回insert 和select 的结果。

登陆mysql 数据库,查询发现和Jmeter 中通过察看结果数看到的结果一致。

****注意点:修改Jmeter 中的中文乱码要将"\bin" 路径下的"jmeter.properties" 文件中设置为 "sampleresult.default.encoding=utf-8",如下所示。**

对于Jmeter 里中文显示不出来的问题,可以打开"\bin" 路径下的"jmeter.properties" 文件,如下图所示,将这几个JS开头的注释去掉。

对于以上两个问题,修改后,需将Jmeter 重启才能起效。


本文转载自 用Jmeter进行接口测试

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 摘要
  • 2. 实践内容
    • 2.1 接口请求实例
      • 1. “用户定义的变量” 的应用
      • 3. 建立接口间的关联
      • 4. 设置断言
      • 6. POST 文件的使用方法
      • 7. "CSV Data Set Config" 和 “函数助手对话框”的使用
      • 8. 数据库的应用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档