Jmeter进行接口测试
原文地址:https://www.cnblogs.com/nancyzhu/p/8035042.html
web接口测试工具:
手工测试的话可以用postman ,自动化测试多是用到 Jmeter(开源)、soupUI(开源&商业版)。

下面将对前一篇Postman做接口测试中的接口用Jmeter来实现。
一、Jmeter 的使用步骤
打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。
在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”, 建立线程组。

右键“线程组” -> “添加” -> “Sample” -> “HTTP请求”, 输入“服务器名称或IP”,对应的端口号,http默认端口号80,可以不写。
以下请求为GET, 所有“方法”那选择“GET”, 输入对应的路径,添加参数及值。

注意: “服务器名称或IP”中不用输入http://, 请求时会自动加入(eg, 输入api.test.cn).

右键“线程组” -> “添加” -> “监听器” -> “察看结果数”, 添加“察看结果数”, 以察看运行后的结果,如果所示。

这是一个简单的接口请求例子。
二、接口请求实例
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等请求中,引用此数据,需要用到的名称 |
|
正则表达式 |
用于将需要的数据提取出来 |
|
模板 |
表示使用提取到的第几个值: |
|
匹配数字(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" 中将值分别替换为${name}, ${sex}。

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

8. 数据库的应用
以下是JMeter 驱动数据库列表:
|
数据库 |
驱动 |
数据库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的要求设置下图的值。

添加一个"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进行接口测试的更多相关文章
- jmeter做接口测试
jmeter做接口测试有两种方式: 1. 2.
- Jmeter用于接口测试中【接口耦合关联的实现】
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...
- Jmeter用于接口测试中,关联如何实现
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...
- 怎样用JMeter做接口测试?
本文介绍JMeter如何做web service测试,一般来说web服务,一般指的是HTTP请求相关的内容.这里就介绍一下如何利用JMeter做基于HTTP的web接口测试.接口也叫API(Appli ...
- 使用jmeter进行接口测试
目录 jmeter介绍 jmeter安装 修改UTF-8 jmeter主要测试组件 jmeter元件作用域与执行顺序 使用Jmeter进行接口测试 jmeter介绍 JMeter是Apache基金会J ...
- 如何用Jmeter做接口测试
Jmeter介绍&测试准备: Jmeter介绍:Jmeter是软件行业里面比较常用的接口.性能测试工具,下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库. 前期准备:测试 ...
- 使用jmeter做接口测试----柠檬不萌!
一.乱码解决方案 1.jmeter查看结果树乱码 (1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上 sampleresult.default.encoding= ...
- 使用Jmeter做接口测试(学生信息的6个接口)
使用Jmeter做接口测试,案例中涉及到接口有:获取学生信息.登录.添加学生信息.学生金币充值.获取所有学生信息.文件上传. 一.获取学生信息(get请求) 服务器名称或IP:输入被请求服务器的名称或 ...
- 利用Jmeter做接口测试
本文作者:大道测试团队-孙云 1.在安装jmeter之前先配置好JDK,再配置jmeter环境变量. 2.启动jmeter 启动jmeter: 双击Jmeter解压路径(apache-jmeter-3 ...
- jmeter 单接口测试方案(接口无业务关联)
前言 前面开了一篇讲了Jenkins+jmeter+ant的使用,但没有说到具体怎么投入到项目使用,主要介绍了接口测试定义,流程和环境部署,所以我今天要说的就是我是怎么将这个方案投入到实际中使用的.这 ...
随机推荐
- 不同git仓库版本控制
场景: 我们有一个开源项目托管在github上面,现在打算在gitlab上进行私有托管开发,当适合发布一个版本的时候提交到github. Git合并特定commits 到另一个分支 实现如下: 1.获 ...
- NodeMCU入门(3):断线自动重连,指示灯显示连接状态
准备工作 1.NodeMCU模块 2.ESPlorer v0.2.0-rc6 事件监听器 NodeMCU采用了事件响应的方式.也就是说,只需为事件设置一个回调函数,当事件发生时,回调函数就会被调用. ...
- Codeforces 524E Rooks and Rectangles 线段树
区域安全的check方法就是, 每行都有哨兵或者每列都有哨兵,然后我们用y建线段树, 维护在每个y上的哨兵的x的最值就好啦. #include<bits/stdc++.h> #define ...
- BZOJ1266 [AHOI2006]上学路线route Floyd 最小割 SAP
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1266 题意概括 一个无向图,第一问:从1~n的最短路. 第二问,删除价值总和最小的边,使得1~n的 ...
- 浅谈vue之动态路由匹配
在日常开发过程中,可能会遇到一些类似于新闻详情页的内容,需要把所有详情页映射到同一组件上,这是动态路由匹配的应用场景之一.在使用的过程中,也遇到过一些小坑,此篇做个简要的总结说明: 基本使用 { pa ...
- sicp 习题
1.11 求f(n)=f(n-1)+2*f(n-2)+3*f(n-3) #lang racket (define (fff n) (define (fff-iter a b c n) (if (= n ...
- Struts2 架构图
Struts2架构图 请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher:Filt ...
- [Coding Study]——目录
Coding Study Source Code for cnblogs This is the source code for coding study, you can see my Coding ...
- Android的onLayout、layout方法讲解
onLayout方法是ViewGroup中子View的布局方法,用于放置子View的位置.放置子View很简单,只需在重写onLayout方法,然后获取子View的实例,调用子View的layout方 ...
- 基于Grunt构建一个JavaScript库
现在公认的JavaScript典型项目需要运行单元测试,合并压缩.有些还会使用代码生成器,代码样式检查或其他构建工具. Grunt.js是一个开源工具,可以帮助你完成上面的所有步骤.它非常容易扩展,并 ...