zoukankan      html  css  js  c++  java
  • jmeter接口测试教程

    一、jmeter接口请求方法介绍

    http的组成部分:

    请求url、请求方法get/post常用的、请求头header、请求body、响应response;

    http和https的本质区别:https增加了ssl,加密处理,没有证书是不能通过抓包来获取数据的;

    1.1get请求

    get请求的传参格式

    window打开cmd输入命令:jmeter打开

     添加线程组》request请求》get请求方式,参数要放在parameters中,不能放body里,为的是在请求接口时直接拼在路径后面

    1.2 post请求

    需要把参数放到body里面,不能在请求路径里面暴露出来,为了安全性,如果参数中有中文那么content encoding编码格式必须要:utf-8,否则请求后会乱码

    二、jmeter变量

    2.1用户定义的变量

    test-plan测试计划页面,用户定义的变量位置如下图

    后续需要用到这个变量值时,可以直接用${url}直接调用了

    2.2用户参数

    添加》前置处理器》User Parameters

     

    2.3函数生成变量

     

    2.4BeanShell变量

    菜单》前置处理器》BeanShell

    vars:

    使用方法:
    vars.get(String key),从jmeter中获得变量值
    vars.put(String key, String value),数据存到jmeter变量中

    在第一个请求中添加脚本处理器,脚本如下,vars.put是固定语法输出待提取的脚本的,id是输出的字段,需要调用该字段则用${id},字段和value之间需要用,分割,且value值需要双引号;其他请求(第二个接口)也可以直接调用该处理结果;

     

    线程组》取样器》添加debug sampler,查看结果树,可以查看变量的值

     

    2.5数据文件变量:

     

     是否忽略首行,选择了false表时不忽略,如果在文件中首行是参数字段,那么需要忽略:true,首行直接取value

     

    2.6配置元件用户定义的变量

     

    2.7jmeter正则表达式提取器

    菜单位置:后置处理器

    引用名称:其他地方引用的变量名称,可自定义;

    正则表达式:()括号表示提取字符串中的部分值,前后是提取的边界内容;(.+?)表示"id":后的是需要提取的信息,括号表示需要提取的信息,点.是任意字符,+是表示数据中满足条件后会再次查后面的字符是否满足条件5和1,满足则一起返回51,直到不满足条件的数据终止,再往后面继续查,中断后再满足的条件的数据算第二个数组,?表示循环查询数据只要满足.+条件则返回数据,不满足则返回空,即0次,那么51会展示5和1,两个数组;

     

     runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。

    runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。

    colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次),是最小匹配;

    模板:正则表达式的提取模式。如果正则表达式有多个提取结果,则结果是数组形式,模板$1$,$2$等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推。若只有一个结果,则只能是$1$;

    匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

    我们在第一个请求中添加正则提取器、然后再新建一个请求,入参的value是第一个请求正则中的变量名称{id}

     

     没加?则提取到冒号:后全部的字段

    图1待提取的响应

     表达式

     提取结果

     加了问好?提取到括号后的字符截至

     

     表达式扩展:

    d:数字

    d{8}:匹配到的数字次数,达到条件则返回

    [131159110]d{8}表示获取字符串里面开头数字符合[131159110]限定的,即1、3、5、9、0,然后8个连续的数字,则就匹配成功

     

    (131|159|110)d{8}表示获取字符串开头为131|159|110的

     

    三、jmeter配置元件请求头默认值(添加多个接口共用的部分)

    四、jmeter cookie管理

    线程组》配置元件》cookie管理器

    添加cookie是为了将想要存储的数据存储在cookie里,设置cookie方式如下

     

    五、jmeter 授权管理

    如果请求的接口加了用户信息的认证,那么没有认证信息的传参,则不会有响应数据,如何设置认证信息,如下

    线程组》配置元件》HTTP Authorization Manager

     在请求头中会带经过MD5编码后的信息,可以用base64解码查看

    六、jmeter断言

    线程组添加响应断言:设置中用响应文本,包含字段,断言信息配置response中的字段,包含该字段则响应成功,否则响应失败,在查看结果树中可以查看原因,通过则展示请求通过的响应数据;

    如下是断言失败的情况

    七、jmeter接口测试数据分离

    多个接口请求,请求地址不同,请求参数不同,用if控制器,如果是get请求则如下:

    循环控制器(Loop Controller): 作用:指定其子节点运行的次数;

    把需要用到的路径参数、传参等信息放到文件中

    因为首行定义了名字,所以我们需要忽略首行

    if控制器判断如果方法是get方法,interpret需要勾选,为了性能更好,勾选后必须用函数助手生成公式

    __jexl3和__groovy方法

    ${__groovy("${methods}"=="Get",)}

    如果不勾选,则输入公式:"${methods}"=="Get"

     断言是响应数据中有true则响应成功

     

    八、jmeter HTML测试报告dashboard report

    生成步骤:

    打开cmd 进入jmeter 目录bin目录

    执行命令:

    -n 是无GUI模式

    -t 是脚本路径

    -l(小L)是存放测试数据的文件,文件名必须不存在,会自创,查看结果树,聚合报告等都在里面

    -e是生成html报告

    -o是存放html报告的地方,也需要文件名不存在,会自创

     

  • 相关阅读:
    http://www.cnblogs.com/CBDoctor/p/4459750.html
    java枚举使用详解
    在Spring3中使用注解(@Scheduled)创建计划任务
    数据库建模软件ERStudio-表关系建模详解
    使用ERStudio创建数据表与ER图
    Eclipse plugin插件开发 NoClassDefFoundError
    window.open被IE拦截的解决办法
    【技术贴】解决Eclipse中SVN图标不显示
    电脑问题交流QQ群
    Maven开源中国镜像
  • 原文地址:https://www.cnblogs.com/T-CYP/p/14633861.html
Copyright © 2011-2022 走看看