JMeter做http接口功能测试
1. 普通的以key-value传参的get请求
e.g. 获取用户信息
添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。
2. 以Json串传参的post请求
e.g. 获取用户余额
添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Body Data标签;写入Json串参数,注意Json格式;运行并查看结果。
*注意:
Json传参时,往往参数相对复杂,规模较大,很多时候是Json串再嵌套Json串,在写入body的时候如果哪里格式不对会影响传参,而JMeter本身是不能对Json进行格式校验的(Postman可以进行简单的Json校验),我们可以借助这个网站来校验你的Json串的格式,www.bejson.com 再把确保格式正确的Json串填入body。
3. 请求时需要http权限验证
e.g. 修改用户余额
添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;
添加授权管理器,右击线程组->添加->配置元件->HTTP授权管理器;
打开HTTP授权管理器,在基础URL添加路径;填写用户名、密码(接口文档会给出);添加域即请求的服务器域名或IP;其他默认;
运行请求并查看结果。(该接口暂时有问题请求返回500,只要掌握需要权限验证的接口如何做就好)
4. 请求时需要添加请求标头
e.g. 获取用户信息2
添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;
添加HTTP信息头管理器,右击线程组->添加->配置元件->HTTP信息头管理器;
打开HTTP信息头管理器,参照接口文档填写好header信息;
运行请求并查看结果。
5. 请求时需要添加Cookie
e.g. 修改用户余额2
添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;
添加HTTP Cookie管理器,右击线程组->添加->配置元件->HTTP Cookie管理器;
打开Cookie管理器,参照接口文档填写好Cookie信息;
发送请求并查看结果。
6. 请求通过某个接口上传文件
e.g.上传文件
添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Files Upload标签,添加文件全名(包含绝对路径,也可以点击浏览按钮添加),写入参数名;发送请求并查看结果。
JMeter的参数化
1. 指定参数值
这种方法常用来解决线程组中多个请求共用相同的数据,比如我们以上所有请求都有相同的IP地址,当地址改变时可以一改全改。
添加用户定义的变量,右击线程组->添加->配置元件->用户定义的变量;
打开用户定义的变量,添加变量,写好名称和值;
脚本中用到该值的所有地方都可以引用这个变量名了,引用变量的格式为 ${变量名};
2. 借助函数生成参数
测试过程中,有时候数据不适合被指定,可选择借助函数来生成,以下是最常用的几种。
- 用函数生成随机数:(__Random)
在Jmeter中点击 选项->函数助手对话框;
在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到你需要的字符串了;
尝试在请求中使用生成的随机数,把刚拷贝的字符串粘贴到请求的参数里;
发送请求,查看请求中参数值的情况,参数生效了。
- 用函数生成当前时间:(__time)
- 用函数生成通用的唯一识别码:(__UUID)
3. 文件传参
用于读取在文件中维护的参数,如参数文件内容如下;
注意,Jmeter读取文件总的参数是从第一行就开始了的,千万不要犯下面的错误。
在Jmeter中右击线程组->添加->配置元件->CSV Data Set Config;
打开设置窗口,写入参数文件的全名(含绝对路径),变量名,Delimiter就用默认的逗号,表示在准备参数文件时参数表的列之间用逗号隔开;
在请求中引用参数时应该是酱紫的:${username} ${pwd},用它们来顶替对应的参数值。
4. 关联传参
在线程组内,当你想用一个请求的响应结果作为另一个请求的入参时就需要用到关联。
- 用正则表达式关联
思路是先从某个请求的响应数据中提取你需要的值,在把这个值在另一个请求中入参,操作如下:
在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器;
在正则表达式提取器中填写 引用名称,不说也知道用途;正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*); 注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;
模板通常固定填$1$;
匹配数字1代表区匹配的第一个值;
缺省值是在匹配失败时取得的值,通常用来检查匹配是否成功;
a. 关于正则表达式
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表+号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0次或1次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0次、1次或者多次)
(.*):贪婪模式,匹配尽可能多的字符
(.*?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。
用${age}入参给另一个请求,查看结果传参成功。
- 用Json Path Extractor 插件关联
只针对Json格式的Response 取值,右击请求添加->后置处理器->JSON Path Extractor;
在JSON Path Extractor中填入引用名和JSONPath Expression;
在另一个请求中入参,也和上面的结果一样转参成功。
注意,JSON Path Extractor这个插件只能在Jmeter3.x以上的版本安装。
Jmeter添加断言检查结果
右击请求添加->断言->响应断言;
添加并写入希望在响应结果中看到的内容;
发送请求,查看结果;
Jmeter操作Mysql
测试计划添加.jar包 mysql-connector-java-5.1.7-bin.jar用于使Jmeter可以读取Mysql;
线程组添加 JDBC Connection Configuration (添加->配置元件-> JDBC Connection Configuration)用于配置Jmeter和Mysql的连接;
JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;
线程组添加JDBC Request(添加->Sampler-> JDBC Request) 用于写sql来操作Mysql;
发送请求,成功访问Msql。
JMeter做http接口功能测试的更多相关文章
- 学习总结——JMeter做http接口功能测试
JMeter对各种类型接口的测试 默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59):本地配好了JMeter ...
- 学习总结——JMeter做WebService接口功能测试
用JMeter作WebService接口功能测试(可以借助SoapUI来完成) SoapUI里面的操作: Wsdl文件或链接导入或添加到SoapUI打开待测请求:运行请求:取URL SOAPActi ...
- 学习总结——JMeter做http接口压力测试
JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做 ...
- 黑羽压测 做 API接口功能测试
做功能测试 黑羽压测 是一款性能测试工具,但是我们也可以使用它,很方便的做 API接口功能测试 . 点击下方链接,观看 讲解视频 https://www.bilibili.com/video/av60 ...
- JMeter做http接口压力测试
测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个 ...
- 学习总结——Postman做http接口功能测试
Postman做各种类型的http接口测试 首先,做接口测试前要有明确的接口文档(e.g. http://test.nnzhp.cn/wiki/index.php?doc-view-59) ,假设已经 ...
- Postman做http接口功能测试
首先,做接口测试前要有明确的接口文档(e.g. http://test.nnzhp.cn/wiki/index.php?doc-view-59) ,假设已经在PC上安装好了Postman. 1. 普通 ...
- 用JMeter作WebService接口功能测试(可以借助SoapUI来完成)
SoapUI里面的操作: Wsdl文件或链接导入或添加到SoapUI打开待测请求:运行请求:取URL SOAPAction .报文. JMeter里面的操作: 为线程组添加SOAP/XML-RPC ...
- 分别用postman和python做post请求接口功能测试
前几天,在做一个post请求的接口功能测试的时候,发现数据始终无法入库, 认真加仔细检查了请求的url.方式.参数,均没有问题 找到技术确认,原来是需要传json格式数据 在头信息中加上类型,body ...
随机推荐
- Python入门 [输出,注释,列表,元祖,集合,字典,if,while,for]
print("Hello Python") #输出 ''' 多行注释 用 三个引号 ''' a=1 #赋值 变量首字母只能书字母下划线 第二个字符数字,字母,下划线 声明一个列表 ...
- Could not write to output file 'c:\Windows\Microsoft.NET ASP.NET Files\xx' -- 'Access is denied
网上有IIS7的解决方法,是给"C:\Windows\Temp"文件夹加上添加用户IIS_IUSRS的完全控制权限. 但我这个老机器是IIS6的,没有IIS_IUSERS用户,只能 ...
- 黄聪:AngularJS中的$resource使用与Restful资源交互(转)
原文:http://blog.csdn.net/he90227/article/details/50525836 1.AngularJS中的 $resource 这个服务可以创建一个资源对象,我们可以 ...
- Java课程设计(2019版)
参考资料 Java课程设计参考资料(2018-12-26更新) Java课程设计常见问题(程序部署.数据库.JSP) 项目开发参考-阿里巴巴Java开发手册(正式版) 更多参考资料请查看QQ群文件中的 ...
- js 处理Json 时间带T 时间格式
对于后台传过来的json数据是带T时间格式的坑处理的一些做法总结 new Date(data[j].addtime).toISOString().replace(/T/g, ' ').replace( ...
- 记一次包含iframe的需要滚动的元素不能滚动到底部的问题
一个包含上头部.下部模块(包含左右两边模块:侧边栏.内容区域)的页面 前提条件,内容区域: 1.元素高度需要自适应屏幕高度 2.里面内容足够长时,可以滚动 3.包含了一个iframe嵌入的内容很长的页 ...
- 量化交易(Quantitative Trading)
什么是量化交易 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,用数量模型验证及固化这些规律 ...
- Mina2 udp--zhengli
一.包与类名. 1.所有类和方法严格使用驼峰法命名.例:SSLFilter 更名为 SslFilter.NIO传输类在命名时增加 Nio 前缀.因为NIO 并不是 socket/datagram 传输 ...
- Java学习——加法器
package cys; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.aw ...
- console.log()换行和document.write()换行
<!DOCTYPE html><html ><head><meta charset="utf-8"><title>ddd ...