jmeter测试接口

Posted study!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter测试接口相关的知识,希望对你有一定的参考价值。

 

jmeter可以做各种接口请求,还可以将所有接口流程化,写好测试脚本后,同时运行所有接口。

一、get请求

  示例:首先,新建一个线程组

在线程组上,新建一个http请求(接口请求)

 

为了对接口请求结果观察,再添加一个监听器:查看结果树

对http请求进行编辑,填写对应的信息,运行

 

或者参数写在parameters中

 

 

点击运行,查看结果树,点击对应请求查看结果。

响应数据中有乱码,解决办法:将jmeter安装目下bin目录下的jmeter.properties打开,将sampleresult.default.encoding=ISO-8859-1替换为sampleresult.default.encoding=utf-8,同时将该行前的#去掉,重启jmeter即可

 

 

 二、post请求

  需要将请求方法改为post,参数按要求填写到parameters中,或者body data中(如果入参事json数据,填写到body data中)

填好后,点击运行--查看结果树。

如果body data中json数据写中文有乱码时,如下,解决办法:jmeter安装目录下bin\\jmeter.properties中修改默认字体:#jsyntaxtextarea.font.family=Hack 改 jsyntaxtextarea.font.family=宋体 去掉#,重启jmeter

 

三、添加cookie

  有些接口的操作,前提必须是已经登录,这时就需要在接口中添加cookie。在上面登录接口测试中,响应结果中会包含一个cookie,将他添加到需要添加的接口中即可.可用正则表达式提取,也可用插件提取

  用插件提取:

1、先从网上下载一个插件https://jmeter-plugins.org/wiki/JSONPathExtractor/,下载后解压以后将lib和lib/ext中的jar包放到安装目录的lib文件夹下重启jmeter,

在登录请求下添加后置处理器--json path extractor,然后将登陆响应数据中对应的cookie用该插件存起来,如下:

 

然后在  学生金币充值  请求中添加cookie管理器(在特定请求下添加,则cookie只作用于该请求,如果放到线程组下,则作用于该县城租下所有请求)

 

 运行即可成功。

如果返回的json数据时多层嵌套的,则可以这样取:

比如返回数据这样想取到stu_info数组中的第一个id,怎在json path extarctor中$.stu_info[0].id取值

在其他地方用${id}调用即可

 

用正则表达式提取:在登录请求后,添加正则表达式提取器

 

 

学生金币充值仍需添加cookie。然后运行。成功。

四、添加header

在接口请求中需要添加请求头携带信息时,可添加信息头管理器,然后再信息头管理器中填写相应内容即可。

 

 

 五、上传和下载文件

jmeter中请求需要上传文件

jmeter下载文件

   下载文件链接为http://img4.duitang.com/uploads/item/201307/03/20130703195830_uwerd.thumb.700_0.jpeg

   下载的话,有一步是要把文件保存到咱们本地的,这个jmeter没有现成的东西可以用,就得咱们自己写beanshell来实现,把文件保存到本地。

然后再添加Sampler-BeanShell Sampler,写上下载并保存文件代码

import java.io.*;
 
byte[] result = prev.getResponseData();  //这个是获取到请求返回的数据,prev是获取上个请求的返回
 
String file_name = "C:\\\\Users\\\\Administrator\\\\Desktop\\\\下载.jpg"; //代表存放文件的位置和文件名
 
File file = new File(file_name);
 
FileOutputStream out = new FileOutputStream(file);
 
out.write(result);
 
out.close(); 

之后点击运行,即可将对应url路径的图片下载到桌面

 

 

 六、参数化

参数化可以让用户在脚本运行时,选取不同的数值进行代入,更接近实际。同时当某一数值在脚本中多次使用时,用参数化可以避免改动多处情况。只需要改动参数对应的取值,即可同步更新整个脚本中对应参数 

1、文件参数化

 例如:正常注册接口,一次只能注册一个用户,如果用上参数化,将需要注册的信息都放到文件里,在脚本运行的时候可以一个一个连续读取,那么就能同时注册多个用户。这里对应的参数都用一个变量代替,而变量的值来源于参数文件。

这里用csv文件对参数进行参数化: 首先需要准备好文件。对应参数填写数据。

 

 

准备好数据以后就可以使用了。在请求上添加一个csv data set config

 

 

 

 

这部分已经配好了,因为文件中有6条数据,如果想要6条数据都被执行的话,就要执行6次,所以还需要在线程组处进行配置

 

 到此配置完成,点运行成功。

2、用户自定义变量参数化

 例:将服务器ip地址进行参数化:

 1、在线程上添加用户自定义变量

接下来所有用到服务器ip地址的地方,都可以用${host}代替

 

 3、函数助手

jmeter提供了一些函数,可以帮助用户对进行参数化

 

 比如在刚才的username后随机增加一个数字,就可以这样使用,直接复制即可取值

函数助手中提供了很多好用的函数,需要的话可以一一实验

七、关联

因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联。 

一般关联用于保存动态的数据。比如一个请求要用到登录的sessionid,但是因为每次登录sessionid都是会变化的。这时候就可以用关联的方法将sessionid提取出来。然后再在请求中引用。

上例写的添加cookie时,就是用到关联技术保存cookie。然后再引用。

 八、断言

断言就是用来验证结果是否正确。可以对响应结果中做一些判断

比如登录的响应数据中包含sign关键字。我们就可以添加一个断言,验证结果是否含有sign

上面示例表示结果中包含 sign。如果结果中包含,则断言通过;如果结果中不包含,则会显示断言失败。可以更好地找到失败原因。

九、jmeter访问数据库

jmeter不能直接访问数据库,必须先添加对应的jar包。

打开测试计划页面,添加需要访问数据库对应的jar包,比如连接mysql数据库,先加上

 

在对应的线程组或线程上进行数据库配置

 

 按照如下图示,对数据库进行配置

 

 

配置完成后,可对数据库进行操作。新建一个jdbc request

query type选择select,只能写select语句

 

选择callable  增删改查语句都可以写

连接mysql时出错:is not allowed to connect to this MySql server 不允许远程访问解决办法:

在mysql命令窗口执行命令GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;,给所有的ip都赋予访问数据库权限

 

以上是关于jmeter测试接口的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter组件之-Test Fragment(测试片段)

jmeter接口测试

jmeter用java代码怎样编写接口测试源码

不会代码的时候,如何使用 jmeter 完成接口测试

不会代码的时候,如何使用 jmeter 完成接口测试

不会代码的时候,如何使用 jmeter 完成接口测试