跳至主要內容

jmeter操作详解(一)

薇念约 3117 字

Jmeter操作详解(一)

一、Jmeter介绍

Jmeter是采用java语言开发的一款用来进行互联网接口自动化测试和性能测试的工具

1、安装JDK(1.8)

待完善...

2、安装Jmeter

待完善...

3、Jmeter目录结构

image-20221107101031040

  • backups:jmeter自动备份的数据,可以在其中寻找一些忘记保存的数据;
  • bin:jmeter可执行文件目录,启动jmeter时,就是启动bin目录下的Apachehmeter.jar,jmeter.bat,jmeter.sh文件;
  • docs:jmeter的接口文档,二次开发的工程师需要学习查看;
  • extras:jmeter的第三方功能,里面集成了使用ant来生成html测试报告的功能;
  • lib:jmeter的本地以来包库,一旦删除,会影响jmeter的运行;
  • licenses:jmeter的证书;
  • pritable_docs:jmeter的操作手册。如果要想自学jmeter,可以查看这个pritable_docs中的英文文档自学。

4、Jmeter安装第三方插件

  • jmeter安装插件的网址:https://jmeter-plugins.org/install/Install/

  • 获取插件最简单的方法就是安装Plugins Manageropen in new window。然后点击复选框即可安装任何其他插件了

  • 操作步骤:

    下载**plugins-manager.jaropen in new window**并放入lib/ext目录,然后重启 JMeter。

    image-20221107102240021

    然后重启jmeter,即可生效,在选项最后即可看见

    image-20221107102338087

    做性能测试时需要添加以下常用的插件。Installed Plugins是已经安装的插件;Available Plugins是可安装的插件。

    image-20221107102531253

    插件安装成功,下面这个页面即可验证,点击测试计划,选择添加,选择监听器即可

    image-20221107102711682

二、Jmeter基础

1、jmeter入门操作,5个步骤

  • 添加线程组
  • 在线程组中添加HTTP请求
  • 在线程组中添加查看结果树
  • 配置HTTP取样器
  • 运行,查看结果

2、jmeter三个重要组件介绍

  • 线程组:jmeter是基于线程来运行的,线程组主要用来管理线程的数量,线程的执行策略。
  • HTTP请求:HTTP请求时jmeter接口测试的核心部分,主要使用HTTP取样器来发送接口请求
  • 查看结果树:通过HTTP取样器发送接口请求后,服务器返回的结果需要通过查看结果树进行查看

3、线程组

  • 添加方法:测试计划--添加--线程(用户)--线程组

    image-20221107104014596

  • 在取样器错误后要执行的动作

    • 继续
    • 启动下一进程循环
    • 停止线程
    • 停止测试
    • 立即停止测试
  • 线程属性

    • 线程数:启动的线程数量,也是用户数量
    • Ramp-Up时间(秒):每个线程启动的间隔时间,注意,第一个线程,0秒启动
    • 循环次数
    • 延迟创建线程知道需要:修复Ramp-UP时间(秒)的Bug在设置的功能
  • 调度器配置(设置线程启动的策略)

    • 持续时间:所有线程运行的最大时间。

      注意:如果启动线程给服务器发送请求,由于发送请求后,会阻塞线程,让线程等待服务器响应,所以,如果服务器没有返回响应数据之间,线程会进入等待状态,从而无法停止,导致超过设置的最大时间。

    • 启动延迟:启动线程要等待的时间

4、HTTP请求

  • 添加方法:线程组--添加--取样器--HTTP请求

    image-20221107110332116

    • 协议:填写URL协议部分的内容。http或者https或者其他协议。
    • 服务器名称或IP:IP
    • 端口号:填写URL中端口部分的内容。http协议默认端口为80端口,https协议默认端口为443.(8080端口一般用于webcahe,与80端口完全时不一样的。比如说linux服务器里面apache默认跑80端口,而apache-tomcat默认跑8080端口)
    • HTTP请求
      • 方法:get,post,常用的两种
      • 路径:设置资源路径和查询参数
      • 内容编码:设置请求数据的编码类型,utf-8为常用的
      • 参数:设置查询参数和请求体数据。当请求方法时get请求时,参数是查询参数,当请求方法是post时,参数是请求体数据(表单格式请求体)
      • 消息体数据:自定义的请求体数据,与参数只能选择一个填写
      • 文件上传:定义要上传的文件

5、查看结果树

  • 添加方法:线程组--添加--监听器--查看结果树

  • 作用:发送请求后,可以再查看结果树中,查看取样器的运行结果。运行结果包括了经过jmeter处理之后的请求数据和响应数据

    image-20221107114043529

    • 文件名:选择把结果保存到文件,不写时就不保存(比如执行接口测试自动化需要将脚本保存到需要运行的路径中)
    • Text:可以选择查看响应数据的方式
    • 查找:搜索查看结果树,左侧侧边栏的接口信息
    • 取样器结果:在选择了Text格式查看数据时会显示,主要查看一些综合信息,包括接口请求时间,数据包大小等等
    • 请求:查看接口的所有请求数据,包括请求行,请求头和请求体。这个数据经过jmeter处理,所有可以用来分析处理请求的过程中有没有出现问题
    • 响应:查看接口的所有响应数据,包括状态,响应头,响应体

6、总结

jmeter的线程组,HTTP请求和查看结果树是进行接口自动化测试最重要的三个组件,单个组件必须联合使用。

三、Jmeter元件

1、Jmeter的八大元件

  • 取样器:jmeter接口测试的核心,我们发送接口请求的配置都必须在取样器中完成

  • 逻辑控制器:可以控制jmeter其他元件的运行方式。主要又循环,IF条件等功能

  • 监听器:用来采集取样器运行完成后的运行结果

  • 定时器:主要对各个接口请求

  • 前置处理器:取样器运行之前,要执行的元件。比如说,发送HTTP接口请求之前,先运行前置处理的代码

  • 后置处理器:取样器运行之后,要执行的元件,比如说发送HTTP接口请求,并接受到响应数据之后,执行的元件

    image-20221107143658483

2、Jmeter的作用域

Jmeter是典型的树形结果,也就是父子关系的结果。Jmeter的作用域主要是对取样器生效

  • 取样器:元件不和其他元件相互作用,因此不存在作用域的问题
  • 逻辑控制器:对逻辑控制器下的所有子元件和取样器起作用
  • 其他六大元件:其他6个元件如果是取样器的子节点,则该元件支队父节点的取样器生效
  • 如果其该元件的父节点不是取样器,那么对父节点下的所有子节点生效,包括子节点子节点

3、Jmeter的执行顺序

  • 执行顺序规则
    • 按照深度遍历的规则,先把每个节点下的所有元件都执行完毕,才会执行下一个
    • 同级节点顺序
      • 配置元件
      • 前置处理器
      • 定时器
      • 取样器
      • 后置处理器
      • 断言
      • 监听器
  • 特殊规则
    • 用户定义的变量配置元件。会始终优先执行
    • 数据库配置元件也会始终优先执行

四、Jmeter接口核心测试

jmeter设置请求头和cookie

1、jmeter设置请求头

  • 定义:其实就是请求头,它会随着我们的HTTP请求一起发送到服务器

  • 作用:用于储存请求时需要包含的信息头

  • 应用场景:需要传输cookie,token或其他某些i西南西,或者需要伪造请求头的时候

  • 添加方法:取样器-添加-配置元件-HTTP信息头管理器

    image-20221107151318266

2、jmeter设置Cookie

  • 作用:该组件用来管理Cookie,实现自动管理保存服务器返回的Cookie的功能

  • 应用场景:存储并发送cookie

  • 添加方法:取样器-添加-配置元件-HTTP Cookie管理器

    image-20221107151804453

jmeter参数化

1、参数化:用变量代替数据的过程,就是参数化。主要有以下四种设置方法:

  • 用户自定义的变量

  • 用户参数

  • CSV数据文件设置

  • jmeter函数

    引用变量格式:${变量名}

2、用户定义的变量

用户自定义的变量有两种

  • 一种是通过测试计划面板中的用户定义的变量设置,用户定义的变量对所有测试计划都会生效
  • 另一种是在线程组下选择添加,再选择配置元件,再选择用户定义的变量

3、用户参数

  • 定义:jmeter的线程就是用户,用户参数就是传递给线程的变量
  • 作用:在变量名的情况下,可以对每个线程设置不同的变量值
  • 应用场景:比如,我们需要测试3个不同的手机号登录,那么可以设置一个手机号phone,然后分别设置phone不同的属性值。这样可以实现每个线程运行时,采用不同手机号码的功能了,这个业务可以实现大量手机号码的并发登录场景
  • 添加方法:线程组-添加-前置处理器-用户参数

4、CSV数据文件设置(重点)

  • 作用:CSV数据文件设置,主要用来读取外部的数据文件,实现数据驱动测试
  • 添加方法:线程组-添加-配置元件-CSV数据文件设置

image-20221107160418200

  • 界面名词解释

    • 文件名:要读取的数据文件名称

    • 文件编码:读取数据文件时,采用的编码,该编码需要与文件名保持一致

    • 变量名称(西文逗号间隔):读取数据时,接受数据的变量,按列来接受,多个用列用多个变量接受,每个变量之间用英文逗号做分隔符

    • 忽略首行:不读取第一行的数据。一般CSV数据文件中的第一行都是标志数据的key,所以可以忽略

    • 分隔符:按照数据文件的分隔符进行填写,主要用来分割每一列

    • 是否允许带引号:默认选False,选True的时候,会自动去掉双引号

    • 遇到文件结束符再次循环:文件所有数据加载完之后,是否从头再次读取

    • 遇到文件结束符停止线程:文件读取完毕之后,是否停止当前运行的线程

    • 线程共享模式:线程共享数据的模式

      • 所有线程共享:所有线程都能共享访问CSV读取出来的数据
      • 当前线程组:当前线程组中的所有线程,共享访问CSV读取出来的数据
      • 当前线程:每个线程单独访问CSV读取出来的数据
      • 编辑:自定义功能,目前无法使用
  • 操作步骤(截图后续完善)

    • 设置接口数据文件

      image-20221107161527192

    • 进行CSV数据文件设置,关联CSV读取出来的变量username,phone

    • 设置线程组,将线程数改成3,运行程序,查看结果

    • 查看结果树,如三个请求都登录成功,说明使用jmeter的http请求,使用了外部文件的数据,实现了数据驱动

5、jmeter函数(未完成,后续完善)

  • 作用:jmeter提供了内部的函数功能,可以生成特殊的测试数据。例如时间戳,随机数等。jmeter函数用法可以参考函数助手对话框,然后利用函数助手对话框中生成的函数,把数据填写到接口的请求中。

  • 函数助手对话框打开方式:Tools-函数助手对话框

    image-20221107162558935

  • 将生成的表达式放在HTTP请求中(截图后续完善)

jmeter生成HTML测试报告

1、安装ant

2、安装ant支持jmeter的jar包

3、配置ant的build.xml和jmeter-results-detail-report_21.xsl配置文件

4.生成HTML测试报告