1 2 3

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报告的地方,也需要文件名不存在,会自创

 

 

 

posted @ 2021-04-12 14:55  teacher-程  阅读(1767)  评论(0编辑  收藏  举报
levels of contents