【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins

 目录

【本文简介看之前请详细的看完介绍】

本文是全网首发的【全栈接口测试进阶系列教程】jmeter接口测试工具从入门到入职,

接口系列包含

接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话可以给博主分享的博文的话来一个点赞评论关注三连,你们的三连是博主更新的最大动力,

一:JMeter 安装及配置环境变量

1、什么是JMeter?

2、安装准备

3、配置环境变量

  配置JAVA JDK环境变量

  配置JMeter环境变量:

二:jmeter目录详解以及全局配置文件jmeter.propties

一.【目录详解】

    一、目录

    二、jMeter 的脚本生成

    三、jmeter的组件:

    四、jmeter的脚本增强:选项→函数助手对话框(可以自定义)

 三:jmeter常用的10大组件以及组件的执行顺序和作用域

一、Jmeter重要组件:

1)配置元件---Config Element:

2)前置处理器--- Pre Processors:  

3) 计时器---Timer:  

4) 采样器---sampler:  

5)后置处理器---Post Processors:

6)断言---Assertions:

7)监听器---Listener:

8) 逻辑控制器---Controller:  

二、组件执行顺序:

三、组件作用域: 

四、特殊说明:

四:jmeter进行接口测试的步骤详解

运行

JMeter进行接口测试流程

1.测试计划,

2.线程组,在测试计划上鼠标右击 – 添加 – 线程(用户)- 线程组。

3.HTTP请求默认值,线程组上鼠标右击 – 添加 – 配置元件 – HTTP请求默认值

4.HTTP信息头管理,线程组上鼠标右击 – 添加 – 配置元件 – HTTP信息头管理

5.HTTP请求,线程组上鼠标右击 – 添加 – 取样器 – HTTP请求

6.断言,

五:jmeter执行接口测试实战之不同请求方式,不同参数类型,(键值对,json,文件上传)接口请求

一.不同请求方式

2.不同参数类型

一、用户定义变量

二、用户参数

三、user.properties文件

四、txt/csv 文件参数化

五、从数据库中获取

六、BeanShell参数化

三.(键值对,json,文件上传)接口请求boby类型

普通的以key-value传参的get请求

 六:执行接口测试实战之接口测试业务闭环

Jmeter的接口测试详细步骤并实现业务闭环

一、首先是了解Jmeter接口测试用到的组件

二、详细流程

1、配置元件→用户定义的变量:定义全局变量

2、配置元件→HTTP Cookie管理器

3、配置元件→HTTP请求默认值

4、监听器→查看结果树展示请求的结果

5、右键添加线程组

6、接下来先是登陆接口的测试

七:jmeter执行接口测试之接口管理处理(正则表达式和jsonpath)

jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

一、前言

二、使用正则表达式提取器实现接口关联

1、在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->正则表达式提取器

2.在后面的接口中使用${ access_token}引用

3.使用调试取样器检查是否提取成功

三、使用json提取器实现接口关联

json提取器的使用步骤

1.在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->JSON提取器

2.替换变量为${ 变量名} 

3.使用 调试取样器 检查是否提取到了

四、扩展:返回复杂json数据的提取

八:jmeter接口测试实战之动态参数处理

JMeter动态参数的定义和调用

一.动态参数使用的条件

二.JMeter和Postman定义动态参数的区别

JMeter的动态参数

Postman的动态参数

三.JMeter定义动态参数

四.JMeter调用动态参数

九:jmeter接口测试实战之断言(响应断言,json断言,beanshell断言)

十:jmeter接口测试实战之接口调试(调试取样器以及结合fiddler调试)

1、jmeter设置http请求-高级-代理服务器-fiddler 的ip和端口

2、fiddler 设置断点

3、设置过滤-只过滤测试服务器请求

4、jmeter请求后,fiddler 可修改接口参数,再继续请求

十一:jmeter接口测试实战之csv数据驱动文件处理

一、前言

二、Jmeter 中 CSV 如何参数化测试数据并实现自动断言

三、Jmeter实现数据驱动测试

1、说明:

2、项目实例:

十二:jmeter接口测试实战之带请求头的接口测试实战

一、HTTP request(请求)详解

通过工作经验总结,我们可以得到以下几点:

请求头详解

二、HTTP response 详解

响应头详解

十三:jmeter接口加密(md5,base64等)

jmeter通过base64加解密&MD5加密

准备jar包#

通过jmeter函数进行base64加解密#

加密#

解密#

通过beanshell进行base64加解密#

通过jmeter函数digest进行MD5加密#

JSR223 实现python加解密#

JSR 简介#

Jmeter JSR223 Sampler#

Jmeter 扩展Python语言支持#

Jmeter 配置JSR223 Sampler#

Base64加解密#

十四:jmeter接口测试实战之beanshell内置变量和语法规则 

一、什么是beanshell

二、BeanShell常用的内置变量  

 十五:beanshell调用java和class文件

一、于是想到通过引入jar包的方式,通过beanshell脚本来调用,获取变量值。步骤:1、使用ide ,新建一个maven工程2、新建类,编写方法,读取excel文件,并根据变量获取相应的值

测试通过后,生成Jar包

​编辑二、生成完jar包后,可双击检测及通过解压工具确定是否正常 ,jar包内的文件是否可正常 展示,通过cmd命令,运行一下jar包,查看是否能正常使用

三、在jmeter中调用 jar包,将jar包入到apache-jmeter-5.5\lib\ext 中,此方法不需要在测试计划中添加jar包引入。添加BeanShell Sampler:如下图:import 语句:包名+类名调用方法直接使用:类名.方法名

十六:jmeter接口测试实战之jdbc数据库查询

1、数据库 的IP+端口+ 登录的账号和密码

2、数据库jdbc连接jar包

开始操作了!!!!!**3、复制jar包所在路径,黏贴到jmeter的测试计划的 library

4、右键线程组添加配置元件。 连接数据库,填写IP+端口+库名 ——+登录账户与密码

5、右键线程组添加jdbc请求 

 6、使用sql查询语句查询数据库数据

​编辑7、如果报错“Cannot load JDBC driver class ‘com.mysql.jdbc.Driver’”没有找到jdbc连接驱动。则手动添加jar包到jmeter安装目录的lib目录里,再在 测试计划,点击 “浏览”添加该jdbc连接jar包

8、运行命令——从数据库成功查询出结果+​编辑

9、使用 正则表达式提取数据传给下个接口使用

 十七:jmeter接口测试实战之beanshell实现数据库查询断言

一、总体思路概述

二、jmeter发起接口请求

三、针对接口请求添加json提取器

1.添加json提取器

2.设置json提取器

四、配置数据库发起数据库请求

1、配置数据库连接元件

2、数据库请求,请注意该请求需要放在查询接口请求之前

五、脚本调试

1.添加调试取样器,用来查看各个变量的值是否正确

2.添加察看结果树,用来查看请求结果

3.执行测试,查看各个变量的值是否正确

六、使用Beanshell 断言完成接口结果和数据库结果的校验

十八 :jmeter代理服务器实现脚本录制

1、打开Jmeter,选择【测试计划】,鼠标右击,依次【添加】->【Treads(Users)】->【线程组】,添加一个线程组。

​编辑2、选择【工作台】,鼠标右击,依次【添加】->【非测试元件】->【HTTP代理服务器】,即可以添加上HTTP代理服务器。

3、对“HTTP代理服务器”进行设置,分别设置端口(如:8899),目标控制器(如:测试计划->线程组),以及分组(如:Put each group in a new transaction controller),其他为默认值。

十九:执行基于微服务架构的dubbo协议接口测试实战

方法一:启用telnet,Telnet(用的较少) 配置Telnet

方法二:python借助dubbo进行接口调用 (常用)

二十:非gui方式运行以及jmeter+ant+jenkins接口自动化持续集成

一、简介

二、集成环境搭建

3、安装Ant:

4、安装Jenkins

三、Python开发http接口(这个可以不关注)

四、Jmeter设计接口测试的脚本以及用例场景

五、连接ant和jmeter配置(注意点)

六、build文件配置

七、创建job构建脚本

1、创建配置如下:

2、构建

 重点:600G的学习资料,懂的都懂


一:JMeter 安装及配置环境变量

1、什么是JMeter?

  Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter还可以做接口测试和性能测试。

2、安装准备

  JMeter    官方下载地址:Apache JMeter - Download Apache JMeter

  Java JDK 1.8  官方下载地址:Java Downloads | Oracle

  Jmeter 与JDKL下载完成后直接安装即可。安装完成后就可以配置JDK的环境变量

3、配置环境变量

  配置JAVA JDK环境变量

    1、在环境变量中新建一个系统变量,变量名为JAVA_HOME,变量值:C:\Program Files\Java\jdk1.8.0_341,该地址为自己本地安装JDK的路径。

      

     2、在系统变量中新建一个系统变量。

       变量名:CLASSPATH

       变量值:%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jara; 

       如果系统变量中存在该变量可直接将变量值添加在该变量中就可以,注意要用‘;’ 分隔。

      

     3、在系统变量Path中新增俩个变量值,分别是%JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin

      

     4、验证 java jdk的环境变量是否配置成功,打开cmd命令窗口输入java -version ,回车后展示java 版本号即可

      

下面分享我整理的这份2023年可能是最全的自动化测试工程师发展方向知识架构体系图。

码尚教育软件测试全职业生涯进阶从零到测试开发VIP课程| ProcessOn免费在线作图,在线流程图,在线思维导图

 

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励,也方便你下次能够快速查找,感谢。

如果你想获取该文章配套的视频视频教程以及练手的接口。请狠狠点击文章末尾推广小卡片

并把所需的资料的文章链接发给我即可领取

如果你想获取简历模板+面试技术宝典+求职视频+上千份测试真题,

请狠狠点击文章末尾推广小卡片

并把所需的资料的文章链接发给我即可领取

 

  配置JMeter环境变量:

    1、在环境变量中新建一个系统变量。变量名:JMETER_HOME,变量值:D:\JMeter\apache-jmeter-5.4.1 (JMeter的安装目录)。

      

    2、在系统变量中选择CLASSPATH变量编辑,在变量值后面添加上  %JMETER_HOME%\lib\jorphan.jar; 然后保存即可。

      

     3、在系统变量Path 中新建一个,将%JMETER_HOME%\bin添加在里面,然后保存即可。

      

     4、验证JMeter的环境变量是否配置成功,打开cmd命令窗口输入jmeter ,回车可打开jmeter即可。

      

二:jmeter目录详解以及全局配置文件jmeter.propties

一.【目录详解】

jmeter的目录结构和重要文件讲解


    一、目录


       (一)bin目录
           1、ApacheJmeter.jar
           2、jmeter.bat
           3、jmeter.properties(配置文件) 改参数
           4、jmeter-server.bat
       (二)docs
           1、api(二次开发有关)
       (三)extras
       (四)lib目录
           1、该目录是jmeter启动时的默认的claspath。这就意味着在使用jmeter进行测试的过程种,是需要import操作的。(报错:xx class not found)的类都不洗达成jar包放入lib目录。
           2、ps:lib目录改变,不许重启jmter才会生效
           3、ext 目录(存放jmeter第三方组件和插件)
       (五)printable_docs(帮助文档)


    二、jMeter 的脚本生成


        (一)借助第三方工具录制生成:
           1、badboy
           2、blazemeter
        (二)使用自带的http代理服务器方式生成:
           1、第一步:添加线程--线程组
           2、第二步:添加配置元件 --http cookie 管理器
           3、第三步:添加非测试元件 --http 代理服务器  (老版本在工作台
           4、第四步:配置http代理服务器并启动
               (1)端口:由用户指定,在jmeter所在机器中未被占用即可。和被测试的服务器端口没有任何关系。
               (2)目标控制器:是用来指定用于存放脚本的组件,建议选择测试计划--线程组
               (3)过滤器
           5、第五步:在客户端进行设置,使得客户端的请求通过代理。
                (1)internet--连接--局域网设置
                          · 地址: 填写jmeter 代理服务器所在机器的ip地址。
                          · 端口: 填写jmeter 代理服务器所设置的端口。
                (2)排除模式: .*www\.baidu\.com.*
        (三)抓包手写
            1、熟悉协议
            2、熟悉抓包工具
            3、熟悉接口测试工具


    三、jmeter的组件:

 jmeter 的脚本是由不同的组件构成的;同一种类型的组件的图标是相同的
        (一)测试计划:自带组件,jmeter所有的其他类型组件都是必须位于该组件下
        (二)线程组(接口测试不需要做区分,性能测试需要做区分):必选组件,jmeter是通过该组件来控制线程的数量(执行脚本的线程),循环次数`
        (三)逻辑控制器:可选组件,是用来控制脚本的一些执行逻辑
        (四)取样器:Sampler,即请求,属于必加组件。我们要去实现接口测试,则需要根据接口类型选择取样器
        (五)其他组件:配置元件,定时器,前置处理器,后置处理器,断言,监听器,这六大类组件都是辅助组件,都是用来服务取样器组件的
            1、①配置元件:是用来完成一些基础配置工作的。
               ②http cookie 管理器:是用来实现cookie管理功能
               ③http 信息头管理器:是用来添加http的信息头    
            2、定时器:和时间控制有关的组件
            3、前置处理器:处理在请求之前的一些组件
            4、后置处理器:运行在请求之后的组件
            5、断言:是用来实现检查点、断言的组件
            6、监听器:日志组件,用来管理日志  
        (六)作用域:   是 jmeter中,六大辅助组件对于取样器组件的生效规则。 定义:辅助组件对于其父级组件,所有同级组件,所有同级组件的子组件有效
            1、其中:定时器、前置处理器是运行在作用域内的每一个请求之前,和组件的先后无关,运行次数等于请求的次数
            2、后置处理器、断言是运行在作用域内的每一个请求会后,和组件的先后无关,运行次数等于请求的次数
            3、模块控制器,交替控制器(接口测试),随机控制器(性能测试)


    四、jmeter的脚本增强:选项→函数助手对话框(可以自定义)


        (一)参数化
            1、实现方式:函数方式,文件方式
            2、参数调用格式:统一格式:${参数名}
        (二)自动跳转首页:①HTTP信息头管理器    ②正则表达式提取器  正则表达式:  引用名称:verify  ( RegExp Tester →  Regular expression) 正则表达式:var   ='(.*?)'  ,var modeing  模板:$1$   匹配数字(0代表随机):1
        (三)测试计划→ Debug  Sampler
        (四)查看结果树→ 仅错误日志
        (五)汇总报告  ,聚合报告
        (六)事务控制器的顺序不能改变
        (七)检查点
            1、检查点的作用
            2、响应断言的使用
        (八)同步定时器

二.全局配置文件jmeter.propties

在%JMETER_HOME%\bin(or $JMETER_HOME/bin)目录下存在多个配置文件:

  jmeter.properties

  system.properties

  update.properties

  user.properties

  reportgenerator.properties

  saveservice.properties

  log4j2.xml

  其中最重要的是jmeter.properties.下面对其常用的一些配置项的设置进行总结与说明.

  1 GUI语言

  #language=en

  language=zh_CN  #简体中文

  功能:设置JMeter GUI界面的显示语言

  说明:若没有设置,则使用JVM(Java虚拟机)设置的locale语言.

  在Linux中可以设置JVM的locale:

  [root@localhost ~]# locale

  LANG=zh_CN.UTF-8

  LC_CTYPE="zh_CN.UTF-8"

  LC_NUMERIC="zh_CN.UTF-8"

  LC_TIME="zh_CN.UTF-8"

  LC_COLLATE="zh_CN.UTF-8"

  LC_MONETARY="zh_CN.UTF-8"

  LC_MESSAGES="zh_CN.UTF-8"

  LC_PAPER="zh_CN.UTF-8"

  LC_NAME="zh_CN.UTF-8"

  LC_ADDRESS="zh_CN.UTF-8"

  LC_TELEPHONE="zh_CN.UTF-8"

  LC_MEASUREMENT="zh_CN.UTF-8"

  LC_IDENTIFICATION="zh_CN.UTF-8"

  LC_ALL=

  [root@localhost ~]# vi /etc/sysconfig/i18n

  [root@localhost ~]# cat !$

  cat /etc/sysconfig/i18n

  LANG="zh_CN.UTF-8"

  [root@localhost ~]#

  注意:此配置项只能在jmeter.properties中设置才有效.

  2 GUI图标放大比例设置

  JMeter GUI界面布局

  当JMeter以GUI模式运行时,窗口主要由三部分构成:

  1)功能区

  上方菜单栏,下方工具栏。菜单栏展示了JMeter提供的功能菜单,而工具栏中的图标

  是常见功能的快捷方式。

  2)视图区

  以树状结构呈现JMeter元素,其中“Test Plane”是树的根节点,每一个节点就是一个JMeter元素。

  在此区域可以添加、删除节点或者通过拖曳调整节点的位置。

  3)内容区

  当在视图区选中一个JMeter元素节点时,内容区则会相应地显示该元素的内容。

  这时可以对其内容进行查看、设置等操作。

 GUI图标放大比例设置

  jmeter.hidpi.mode=true          #开启视网膜模式

  jmeter.hidpi.scale.factor=1.2   #将图标放大1.2倍

  3 功能区工具栏图标大小设置

  #工具栏图标默认size: 22x22

  #可用size: 22x22, 32x32, 48x48

  jmeter.toolbar.icons.size=32x32

  4 视图区目录树图标大小设置

  #目录树图标默认size: 19x19

  #可用size: 19x19, 24x24, 32x32, 48x48

  jmeter.tree.icons.size=24x24

  5 内容区编辑字体设置

  #调整JMeter内容区的编辑字体

  jsyntaxtextarea.font.family=consolas  #默认Hack,太难看,使用经典的consolas

  jsyntaxtextarea.font.size=18  #这两个配置项必须同时设置才有效

  6 响应数据编码设置

  #响应数据编码默认为ISO-8859-1(即Latin-1)

  sampleresult.default.encoding=UTF-8  #设置为UTF-8,避免出现乱码

  7 添加JMeter元素快捷键设置

  #配置添加JMeter元素时使用的快捷键,最多支持10个.

  #在windows上可以使用 Ctrl+0  Ctrl+1 ... Ctrl+9

  #在macOS上可以使用 Command+0 Command+1 ... Command+9

  gui.quick_0=ThreadGroupGui     #新增线程组

  gui.quick_1=HttpTestSampleGui  #新增HTTP取样器

  gui.quick_2=RegexExtractorGui  #新增正则表达式提取器

  gui.quick_3=AssertionGui       #新增响应断言

  gui.quick_4=ConstantTimerGui   #新增常量定时器

  gui.quick_5=TestActionGui      #新增测试活动

  gui.quick_6=JSR223PostProcessor  #新增JSR223 后置处理程序

  gui.quick_7=JSR223PreProcessor   #新增JSR223 预处理程序

  gui.quick_8=DebugSampler         #新增调试取样器

  gui.quick_9=ViewResultsFullVisualizer #新增察看结果树

  8 HTTP Request Post Content-Type设置

  # Should JMeter add to POST request content-type header if missing:

  # Content-Type: application/x-www-form-urlencoded

  # Was true before version 5.0

  post_add_content_type_if_missing=true

  说明:此配置项在JMeter5.0以前默认值为true,以后版本默认为false,故在5.0以后的版本中

  发送POST请求,将参数放在"body data"中,且没有设置

  Content-Type时,默认为Content-Type值为"text/plain",而不是"application/x-www-form-urlencoded".

  9 日志级别设置

  从JMeter3.2开始,日志级别不再在jmeter.properties中设置,而是通过apache log4j2

  配置文件log4j2.xml中设置日志级别:

      <Root level="info">

        <AppenderRef ref="jmeter-log" />

        <AppenderRef ref="gui-log-event" />

      </Root>

  #将level的值改为对应的日志级别,默认为info,也可以在GUI界面临时设置日志级别

  log4j2定义了8个级别的日志,优先级从高到低依次为:

  OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL

  ALL   用于打开所有日志记录

  TRACE 追踪日志

  DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的

  INFO  消息在粗粒度级别上突出强调应用程序的运行过程

  WARN  表明会出现潜在错误的情形

  ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行

  FATAL 指出每个严重的错误事件将会导致应用程序的退出

  OFF   用于关闭所有日志记录

 三:jmeter常用的10大组件以及组件的执行顺序和作用域

一、Jmeter重要组件:

1)配置元件---Config Element:

  用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同一个作用域的任何采样器前。

2)前置处理器--- Pre Processors:  

 前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。

3) 计时器---Timer:  

 定时器会让作用域内的每一个采样器都在执行前等待一个固定时长,如果不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。如果为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。

4) 采样器---sampler:  

 采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。

5)后置处理器---Post Processors:

  后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。

6)断言---Assertions:

  用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符

7)监听器---Listener:

  监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还可以将测试数据导入到文件之中,以供后续分析。

8) 逻辑控制器---Controller:  

 逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。

  

二、组件执行顺序:

测试计划的元素执行是有序的,通过以下方式执行: 1–配置元件(Config Element) 2–前置处理器(Pre Processors) 3–定时器(Timer) 4–取样器(sampler) 5–后置处理器(Post Processors,只在有结果可用情况下执行) 6–断言(Assertions,只在有结果可用情况下执行) 7–监听器(Listener,只在有结果可用情况下执行)

三、组件作用域: 

元件收集其作用范围的每一个sampler元件的信息并呈现,在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是: 

  • 采样器(sampler):元件不和其它元件相互作用,因此不存在作用域的问题。
  • 逻辑控制器(Logic Controller):元件只对其子节点中的取样器 和 逻辑控制器作用。
  • 除采样器 和 逻辑控制器 元件外,其他6类元件,如果是某个sampler的子节点,则该元件只对其父子节点起作用。
  • 除采样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。

四、特殊说明:

 配置元件(Config Elemnet)-->用户自定义变量组件(User Defined Variables):这个组件不管放在哪个位置,它定义的变量都会被整个线程所共享。

例如:

下面这个例子,测试计划定义如下:

1、定义了三个sampler:one、Debug Sampler、two

2、在one下面定义了一个用户自定义变量:在这里添加了一个变量,名为hello,值为world

3、一个监听器:查看结果树

目的:测试在sampler one下定义的变量是否能被sampler two和debug sampler所引用

one:

User Defined Variables:

two:

运行结果:

由上可知:在one下面定义的用户变量,在debug sampler和two处都能正常使用。

四:jmeter进行接口测试的步骤详解

运行

  1. 进入解压路径如E: \apache-jmeter-5.2\bin,双击jmeter.bat启动运行

  2. 启动后默认为英文版本,可通过Options – Choose Language – Chinese(Simplified) 设置为中文版

JMeter进行接口测试流程

1.测试计划

可以理解为被测项目,下面可以添加一系列待测接口。

可自定义名称,便于自己理解。

2.线程组,在测试计划上鼠标右击 – 添加 – 线程(用户)- 线程组。

一个线程组可以当做一个虚拟用户组,线程组中每个线程都可以裂解为一个虚拟用户。这个在性能测试中会用到,接口测试暂时不用关注,默认值为1即可。

3.HTTP请求默认值,线程组上鼠标右击 – 添加 – 配置元件 – HTTP请求默认值

进行接口测试时需要填写协议,IP地址及端口号,为了避免重复操作,可在线程组下添加HTTP请求默认值,填入协议、IP地址和端口号,这样后续的HTTP请求中就不用每次都填写了。

4.HTTP信息头管理,线程组上鼠标右击 – 添加 – 配置元件 – HTTP信息头管理

如果请求参数非json格式,可以不用添加此元件。

该元件是针对传入参数为json格式,需添加名称为Content-Type,值为application/json

5.HTTP请求,线程组上鼠标右击 – 添加 – 取样器 – HTTP请求

HTTP请求主要包括请求方法、请求路径和请求参数。

由于协议、IP地址、端口号已经在HTTP请求默认值进行了设置,所以此处可以为空。

(1)传入非json格式的参数,可以直接在HTTP请求面板中【参数】下进行添加:填写参数名称与对应的值

(2)传入json格式参数,如果参数值存在中文的情况,内容编码需为utf-8格式,避免乱码情况的发生

6.断言,

主要目的是检查接口是否访问成功。断言的方式比较多,包含响应断言、JSON断言,大小断言,JSR223断言等等,一共提供15种断言方式,一般常用的主要是响应断言,也可以用JSON断言。对于复杂的接口,可借助BeanShell断言。

这里主要介绍响应断言的用法。

HTTP请求上鼠标右击 – 添加 – 断言 – 响应断言

 详情如图:

Apply to 指断言的作用范围,一般情况下发出一个请求只触发一个请求,所以默认勾选Main sample only即可。下面针对四种选项做个说明:

(1)     Main sample and sub-samples:作用于主请求和子请求

(2)     Main sample only:仅仅作用于主请求

(3)     Sub-sample only:仅仅作用于子请求

(4)     J Meter Variable:作用于j meter变量(输入框填写变量名称)

响应字段 主要包含响应文本、响应代码、响应信息、响应头、请求头、URL样本、文档(文本)、忽略状态、请求状态,下面针对每种方式做个说明:

(1)     响应文本,一般匹配返回的json数据,需要结合模式匹配规则进行校验

根据响应文本的测试模式”records”(*?)匹配到内容,只要包括这些内容,则判断接口执行通过。

(2)  响应代码,匹配返回码,如200,404,500等

(3)  响应信息,匹配响应信息,如OK, Sucess字样

(4)  响应头,匹配响应头

(5)  请求头,匹配请求头

(6)  URL样本,匹配请求的url链接,如果有重定向则包含请求url和重定向url

(7)  文档(文本),匹配响应数据的文本格式

(8)  忽略状态,一个请求有多个响应断言,第一个响应断言选中此项时,如果第一个响应断言失败时可以忽略此响应结果,继续进行下一个断言。如果下一个断言成功则还是判定事务是成功的

(9)  请求数据,匹配请求数据

实际比较常用的是响应文本、响应代码、响应信息,这三种还是无法满足的则继续补充其他字段。

模式匹配规则,有包括、匹配、相等、字符串、否、或者。

(1)     包括,响应内容包括需要匹配的内容就表示响应成功,可结合正则表达式进行

(2)     匹配,响应内容要完全匹配需要匹配的内容就表示响应成功,可结合正则表达式进行

(3)     相等,响应内容要完全等于需要匹配的内容才代表响应成功,不支持正则表达式

(4)     字符串,响应内容包含需要匹配的内容才代表成功,不支持正则表达式

(5)     否,相当于取反,如果结果是True,勾选上“否”那结果就是False

(6)     或者,可以用于将多个断言模式进行连接,只要一个模式匹配,断言就代表成功

测试模式,其实就是填写自己的预期值。

7.监听器-察看结果树,主要用于查看接口执行情况,以树形结构显示接口访问结果,包含取样器结果、请求与相应数据。

线程组上鼠标右击 – 添加 – 监听器 – 察看结果树

监听器还包含其他形式如汇总报告、聚合报告、后端监听器等,接口测试主要用到的就是察看结果树。

通过察看结果树可以了解接口执行情况,如果执行失败需要看下错误信息。

至此,使用J Meter进行常用的接口测试就结束了,实际使用过程遇到的特殊情况可以及时反馈(其实和Postman测试接口大同小异~)

五:jmeter执行接口测试实战之不同请求方式,不同参数类型,(键值对,json,文件上传)接口请求

一.不同请求方式

JMeter做接口测试的时候,请求有三种类型可选择

1、Parameters:键值对,有空格会报错(URIsyntaxException)
2、Body Data:Json或xml格式

json
{“key”:“46a848a99aac2731d080b42a5b5f6ef4”,“city”:“邯郸”}
xml
<xml><key></key></xml>
1
3、Files Upload:处理文件上传的请求
File path:文件的绝对地址
Parameter Name:参数名称(如file)
MIME type:多媒体类型,根据文件后缀查找
三个参数必填,否则报错

注意:
Parameters界面有内容时切换至Body Data界面会报错,这两种方式只能二选一,而Files Upload不受影响

2.不同参数类型

前言:
在使用Jmeter做接口测试,性能测试过程中,经常会遇到参数化问题 。这里小编提供几种常用的参数化方法。

想了解更多相关知识请关注我吧!点击下方蓝思字体领取或者添加V:mashang-zz(备注:999)全套【软件测试/自动化测试】海量资料免费领取


一、用户定义变量

一般用于变化不是特别大,但是还是需要进行参数化的变量,如:IP,端口等
1、点击线程租-配置元件-用户定义的变量,在页面输入需要参数化的变量和值。

2、在对应需要使用上述变量的地方引入,后续可通过查看结果树查看

也可直接在测试计划中直接添加用户定义变量,操作同上,不再重复。

二、用户参数

1、点击线程组-添加-前置处理器-用户参数
每次迭代更新一次:如果有多个用户/使用变量时勾选,如果不勾选,所有线程用的是同一个值,需要不同的线程用不同的值,需要勾选此选项

2、在Http请求中使用参数

三、user.properties文件

1、进入Jmeter安装目录的bin目录下,找到user.properties文件

2、用Notepad编辑器,打开user.properties文件,并在文件末尾添加需要定义的变量的参数,并保存关闭该文件

3、重新启动jmeter,使用函数助手中的函数,点击选项-函数助手对话框,选择函数__P。
属性名称:与user.properties文件中变量名一致
默认值:如果user.properties文件中没有设置要使用的参数值,优先使用该默认选项,如果文件中已设置就优先使用文件中的参数值

4、生成并复制函数字符串:${__P(ip,192.168.100.100)},在Http请求中使用参数

四、txt/csv 文件参数化

txt/csv 文件参数化方法是在性能测试中最常用的测试方法,将参数化的数据提前保存在以.txt 或者以.csv 结尾的文件中,多个参数使用,隔开
1、点击线程组-添加-配置元件-CSV Data Set Config

image.png


2、在当前测试计划存储的同一目录入,新增 01_定损打开定损单测试数据.csv文件,内容如下:

五、从数据库中获取

1、以mysql为例,先要下载mysql驱动mysql-connector-java-5.1.12-bin.jar 下载地址:Index of /pub/mysql/Downloads
2、将上述jar包放到Jmeter的lib目录下
3、点击线程组-添加-配置元件-JDBC Connection Configuration,建立JDBC连接。
4、添加“Sampler”-“JDBC Request”,在SQL Query中输入查询语句
5、JDBC Request请求中添加“后置处理器”->“正则表达式提取器”,以提取上一步中的参数。

六、BeanShell参数化

通过使用BeanShell内置对象vars可以对变量进行存取操作
vars.get("name"):从jmeter中获得变量值
vars.put("key","value"):数据存到jmeter变量中,vars.put 中均为字符串
1、点击 线程组-添加-Sampler-BeanShell Sampler,在Script区域,构造变量accidentNo

代码如下:
//获取本次生成的随机数并赋值给JMeter变量
String randStr="

{__threadNum}${__counter(,)}";
vars.put("randStr",randStr);
log.info("本次生成的随机数为:" + randStr);

String accidentNo="acc_"+randStr;
vars.put("accidentNo",accidentNo);
2、在Http请求中使用参数变量

三.(键值对,json,文件上传)接口请求boby类型

JMeter对各种类型接口的测试

默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的运行环境;

打开JMeter,添加一个线程组和该线程组的查看结果树。以下的几种接口请求我们都在这个线程组中添加和运行。

如果你的JMeter返回数据是乱码,解决办法是,在JMeter安装路径的bin目录下,打开文件jmeter.properties,把Sampleresult.default.encoding的值改为 utf-8 即可。

  1. 普通的以key-value传参的get请求

e.g. 获取用户信息

添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。

  1. 以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。

  1. 请求时需要http权限验证

e.g. 修改用户余额

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加授权管理器,右击线程组->添加->配置元件->HTTP授权管理器;

打开HTTP授权管理器,在基础URL添加路径;填写用户名、密码(接口文档会给出);添加域即请求的服务器域名或IP;其他默认;

运行请求并查看结果。(该接口暂时有问题请求返回500,只要掌握需要权限验证的接口如何做就好)

  1. 请求时需要添加请求标头

e.g. 获取用户信息2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加HTTP信息头管理器,右击线程组->添加->配置元件->HTTP信息头管理器;

打开HTTP信息头管理器,参照接口文档填写好header信息;

运行请求并查看结果。

  1. 请求时需要添加Cookie

e.g. 修改用户余额2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加HTTP Cookie管理器,右击线程组->添加->配置元件->HTTP Cookie管理器;

打开Cookie管理器,参照接口文档填写好Cookie信息;

发送请求并查看结果。

  1. 请求通过某个接口上传文件

    e.g.上传文件

    添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Files Upload标签,添加文件全名(包含绝对路径,也可以点击浏览按钮添加),写入参数名;发送请求并查看结果。

JMeter的参数化

  1. 指定参数值

这种方法常用来解决线程组中多个请求共用相同的数据,比如我们以上所有请求都有相同的IP地址,当地址改变时可以一改全改。

添加用户定义的变量,右击线程组->添加->配置元件->用户定义的变量;

打开用户定义的变量,添加变量,写好名称和值;

脚本中用到该值的所有地方都可以引用这个变量名了,引用变量的格式为 ${变量名};

  1. 借助函数生成参数

测试过程中,有时候数据不适合被指定,可选择借助函数来生成,以下是最常用的几种。

用函数生成随机数:(__Random)
在Jmeter中点击 选项->函数助手对话框;

在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到你需要的字符串了;

尝试在请求中使用生成的随机数,把刚拷贝的字符串粘贴到请求的参数里;

发送请求,查看请求中参数值的情况,参数生效了。

用函数生成当前时间:(__time)

用函数生成通用的唯一识别码:(__UUID)

  1. 文件传参

用于读取在文件中维护的参数,如参数文件内容如下;

注意,Jmeter读取文件总的参数是从第一行就开始了的,千万不要犯下面的错误。

在Jmeter中右击线程组->添加->配置元件->CSV Data Set Config;

打开设置窗口,写入参数文件的全名(含绝对路径),变量名,Delimiter就用默认的逗号,表示在准备参数文件时参数表的列之间用逗号隔开;

在请求中引用参数时应该是酱紫的:${username} ${pwd},用它们来顶替对应的参数值。

  1. 关联传参

在线程组内,当你想用一个请求的响应结果作为另一个请求的入参时就需要用到关联。

用正则表达式关联
思路是先从某个请求的响应数据中提取你需要的值,在把这个值在另一个请求中入参,操作如下:

在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器;

在正则表达式提取器中填写 引用名称,不说也知道用途;正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*); 注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;模板通常固定填$1$;匹配数字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的接口测试详细步骤并实现业务闭环

这篇文章主要介绍了Jmeter的接口测试详细步骤并实现业务闭环,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

一、首先是了解Jmeter接口测试用到的组件

  • 1、测试计划:Jmeter的起点和容器
  • 2、线程组:代表一定的虚拟用户
  • 3、取样器:发送请求的最小单元
  • 4、逻辑控制器:控制组件的执行顺序
  • 5、前置处理器:在请求之前的操作
  • 6、后置处理器:在请求之后的操作
  • 7、断言:判断请求是否成功
  • 8、定时器:是否延迟或者间隔发送请求
  • 9、配置元件:请求期的配置信息
  • 10、监听器:负责收集测试结果

执行顺序:测试计划→线程组→配置元件→前置处理器→定时器→取样器→后置处理器→断言→监听器

作用域:
组件会作用于他的同级父级组件,同级组件及同级组件的子组件(可以通过查看结果树来验证作用域,如下图所示)

二、详细流程

1、配置元件→用户定义的变量:定义全局变量

2、配置元件→HTTP Cookie管理器

客户端第一次访问服务器,服务器就会生成Cookie,然后通过响应头里的Set-Cookie传输到客户端,然后保存客户端。第2-N次访问服务器时,那么在请求头里面通过Cookie把我们保存在本地的Cookie信息传输到服务器以实现鉴权。
Web的接口测试基本都要加Cookie

3、配置元件→HTTP请求默认值

4、监听器→查看结果树
展示请求的结果

5、右键添加线程组

6、接下来先是登陆接口的测试

简单控制器右键→取样器→HTTP请求

在HTTP请求(登陆请求)右键→后置处理器→Json提取器:这个主要用来提取请求返回结果中需要的数据,下图中设置的就是获取登录的返回值中的token,后并设置变量名为“Authorization”,后面测试别的接口的时候需要调用这个值。

需要验证Json提取器是否起作用,可以通过右键添加取样器Debug Sampler,这样查看结果树中就会展示提取器中获取详细信息。

右键添加→断言→响应断言,在应用场景中的断言包括状态断言和业务断言,状态断言主要用于检测响应的状态是否和预期一致,业务断言测试请求或者响应中返回值是否满足业务需求。
【状态断言】:下图为检测响应状态是否为200

【业务断言】:下图为测试请求响应中否包含token

通过右键添加→监听器→断言结果,可以查看添加的断言的结果

以上就是Jmeter的登录接口测试的一个正常流程,根据设计的接口测试用例增加请求测试

七:jmeter执行接口测试之接口管理处理(正则表达式和jsonpath)

jmeter实现接口关联的两种方式(正则表达式提取器和json提取器)

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍了jmeter实现接口关联的两种方式,感兴趣的小伙伴们可以参考

一、前言

在开展接口测试或者是接口面试的过程中,我们会发现很多接口需要依赖前面的接口,需要我们动态从前面的接口返回中提取数据,也就是我们通常说的关联。

关联通俗来讲就是把上一次请求的返回内容中的部分截取出来保存为参数,用来传递给下一个请求使用。

二、使用正则表达式提取器实现接口关联

正则表达式提取器,见名知意就是使用正则表达式的方法把我们需要提取的内容通配出来。

原理:通过左右二边不变的边界来提取中间变的返回值

如上图:需要提取access_token

{"access_token":"31_qz2HtPalsk5Ey1ToWJaZ6Kaojf8y-BhxTHEmuO111m8_Gc_77HRvMuG4ltbd9gHskqi0XAq8phQys9K8awso4iq-VSr0bArrd-zC-nY0Ltudp-HcPZV7y291YjLYoeJBHW2zhB7-lWYzeTsqFKOhAHANSW","expires_in":7200}

1、在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->正则表达式提取器

引用名称:即下一个请求要引用的参数名称,如填写access_token,则可用${ access_token}引用它。

正则表达式:()括起来的部分就是要提取的。.代表任意字符,+表示一次或多次,*代表出现任意次。

模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$,$3$等等,表示解析到的第几个值给access_token。本处只有1个,所有使用$1$。

匹配数字:0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。

2.在后面的接口中使用${ access_token}引用

3.使用调试取样器检查是否提取成功

添加调试取样器-->运行测试-->通过查看结果树里面的 调试取样器 查看结果

如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

三、使用json提取器实现接口关联

 使用场合:接口关联,当前一个接口返回的数据类型为json格式的数据,需要从返回的json数据中提取数据。

 可以将返回的值复制到 www.bejson.com-->json菜单-->json视图-->json数据中,然后点击试图查看,如下图:

json提取器的使用步骤

1.在需要获得数据的请求“1.获取access_token” 上右击添加一个后置处理器-->JSON提取器

Name of created varialies:即下一个请求要引用的参数名称,如填写access_token,则可用${ access_token}引用它。

JSON Path  expressions:填写jsonpath,格式:$. 节点名称   根节点用 “.” 表示

Match Numbers:0代表随机,-1代表所有,其余正整数代表将在检查的内容中,第几个匹配的内容提取出来。

Default Values:找不到时默认值,一般设置为NOT FOUND

Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”

2.替换变量为${ 变量名} 

3.使用 调试取样器 检查是否提取到了

四、扩展:返回复杂json数据的提取

如图:{"tag":{"id":193,"name":"newdream20200324"}}

 JSON提取器配置如下: $.tag.name

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值