• 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安装目录下binjmeter.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都赋予访问数据库权限

  • 相关阅读:
    == 与 equals 之区别
    值传递和引用传递
    try-catch-finally容易犯的错误
    设计模式之备忘录模式
    设计模式之观察者模式 Observer
    设计模式之状态模式 State
    设计模式之模板方法模式 templateMethod
    设计模式之策略模式 Strategy
    Java过滤器与SpringMVC拦截器之间的关系与区别
    SpringMVC中使用Interceptor拦截器
  • 原文地址:https://www.cnblogs.com/bendouyao/p/8550461.html
Copyright © 2020-2023  润新知