接口测试-02-Jmeter

  1. Jmeter 介绍
  2. 1. Jmeter 是什么?
    1. 1.1 概念
      1. 作用:
      2. 优点:
  • 1.5 缺点
  • 1.6 总结
  • 2. 了解:配置 JMeter 运行环境( JDK 、 JRE 、 JVM )
    1. 2.1 JDK
    2. 2.2 JRE
    3. 2.3 JVM
    4. 2.4 JAVA 跨平台原理【扩展】
  • Jmeter 工具安装
    1. 2. Jmeter 下载与安装
    2. 2.1 官网下载地址 :
      1. http://jmeter.apache.org/download_jmeter.cgi
      2. 下载示意图:
  • 2.2 启动 JMeter 的两种方式:
    1. 进入bin目录
  • 3 Jmeter 常用目录文件介绍
    1. 3.1 Bin 目录
    2. 3.2 docs 目录 ( 了解开源 )
    3. 3.3 printable_docs 目录
  • Jmeter 工具功能界面布局
    1. 熟悉测试计划面板
  • 1. 主界面布局
    1. JMeter的主界面布局分为标题栏、菜单栏、工具栏、树形标签栏和内容栏
  • 2. 使用 JMeter 进行接口测试
  • 遗留的问题:
    1. 使用 JMeter 的解决方案
  • 3. Test Plan( 测试计划 )
    1. 作用:
  • 4. Threads(User) 线程组 【重点】
    1. 4.1 thread group( 线程组 )
      1. 线程属性
      2. 调度器配置
    2. 4.2 案例
      1. 效果图:
      2. 组件设置细节:
  • 4.3 组件详解
  • 4.3 - HTTP 请求
    1. 作用 :
    2. 参数详解:
      1. Body Data 选项作用:
    3. HTTP 请求总结:
  • 4.3 察看结果树
    1. 作用:
    2. 说明:
    3. 察看结果树总结:
    4. 4.4 线程组总结:
  • 元件
  • 元件结论:
  • Jmeter 各元件中需要掌握元件
    1. 整理出各大元件常用的重点组件
  • 1. 配置元件( config Element )
  • 2. 前置处理器( Per Processors )
  • 3. 定时器( Timer )
  • 4. 取样器( sample )
  • 5. 后置处理器( Post Processors )
    1. 1) 正则表达式提取器
  • 6. 断言( Assertions )
    1. 1) 响应断言
  • 6. 监听器( Listener )
    1. 1) 察看结果树
    2. 2) 聚合报告
    3. 3) 断言结果
  • 8. 逻辑控制器
  • Jmeter 工具核心知识点
    1. 目标
  • Jmeter 参数化
    1. 学习掌握Jmeter中常用参数化方式
  • 1. 为什么要参数化?
  • 1.1 需求新增 10 条数据
    1. 学院-新增
    2. 1) 请求方法:POST
  • 问题 :
  • 2. 什么是参数化?
  • 在 Jmeter 中参数化常用方式:
  • 1. CSV Data Set Config (数据集配置)
    1. 1.1 实施方案分析
      1. 1. 基于测试计划->线程组
  • 1.2 组件要点分析
    1. 1. 线程组:循环次数 10
  • 1.3 CSV Data Set Config 参数配置图
  • 1.4 HTTP 信息头管理器 参数配置图
  • 1.5 CSV Data Set Config- 总结:
    1. 1. 参数化概念
  • Jmeter 介绍

    1. Jmeter 是什么?

    1.1 概念

    Jmeter:是Apche公司使用Java平台开发的一款测试工具。

    作用:
    1
    2
    3
    4
    5
    6
    接口测试
    性能测试:内在 ---> 程序的算法 (程序运行的时间效率)
    压力测试:外在 ---> 外在负载 (用户量)
    Web自动化测试
    数据库测试
    JAVA程序测试
    优点:
    1
    2
    3
    4
    开源、免费
    支持多协议:http https ftp ftps
    小巧
    功能强大

    1.5 缺点

    1. 不支持IP欺骗

    2. 不支持前端测试。使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成

    Web2.0应用的测试

    1.6 总结

    1
    2
    3
    4
    JMeter概念
    JMeter作用
    JMeter优点
    JMeter缺点

    2. 了解:配置 JMeter 运行环境( JDK 、 JRE 、 JVM )

    2.1 JDK

    JDK概念:java开发工具包,程序员使用。包含JRE和JVM。

    1
    2
    3
    下载方式:
    1. 官网下载地址:http://www.oracle.com/
    2. 百度搜索“JDK”关键字

    2.2 JRE

    JRE概念:JAVA程序运行环境,包含JVM和JVM运行时所需要的资源。

    1
    2
    3
    下载方式:
    1. 官网下载地址:http://www.oracle.com/
    2. 百度搜索“JRE”关键字

    2.3 JVM

    JVM概念:Java虚拟机

    1
    无需下载,JDK或者JRE包含。

    2.4 JAVA 跨平台原理【扩展】

    总结: 对于测试人员,我们要记住,如果使用JMeter,必须要安装JDK或者JRE。

    Jmeter 工具安装

    2. Jmeter 下载与安装

    2.1 官网下载地址 :

    http://jmeter.apache.org/download_jmeter.cgi
    下载示意图:

    注意:下载后,解压文件到任意目录,避免在一个有空格的路径安装Jmeter,这将导致远程测试出现问题

    2.2 启动 JMeter 的两种方式:

    进入bin目录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1. 双击 ApacheJMeter.jar文件;

    2. 双击 Jmeter.bat文件;

    i. 出现Jmeter不是内部或外部命令在环境变量PATH中添加Jmeter路径bin目录,
    比如(E:\测试\Tools\apache-jmeter-3.1\bin)
    ii. 出现'findstr' 不是内部或外部命令,在PATH中添(%SystemRoot%/system32;%SystemRoot%;)

    3. 两种打开方式的区别
    4. 发送桌面快捷方式

    3 Jmeter 常用目录文件介绍

    3.1 Bin 目录

    1
    2
    3
    4
    5
    6
    7
    Jmeter.bat:windows系统中JMeter的启动文件
    ApacheJMeter.jar Java环境下的JMeter启动文件
    Jmeter.log:日志文件
    Jmeter.sh:linux系统中JMeter的启动文件
    Jmeter.properties:系统配置文件
    Jmeter-server.bat:windows分布式测试要用到的服务器配置
    Jmeter-serve:linux分布式测试要用到的服务器配置

    3.2 docs 目录 ( 了解开源 )

    docs:是JMeter的java Doc,可打开api\index.html页面来查看;

    3.3 printable_docs 目录

    printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中usermanual 下 component_reference.html 是最常用到的核心元件帮助文档。

    注意: lib 文件夹也是一个常用文件夹,使用时再讲。

    Jmeter 工具功能界面布局

    熟悉测试计划面板

    1. 主界面布局

    JMeter的主界面布局分为标题栏、菜单栏、工具栏、树形标签栏和内容栏
    1
    2
    3
    4
    5
    标题栏:主要显示计划信息及JMeter版本。
    菜单栏:全部的功能的都包含在菜单栏中。
    工具栏:工具栏中的按钮在菜单栏都可以找到,工具栏就相当于菜单栏常用功能的快捷按钮
    树形标签栏:树形标签栏通常用来显示测试用例(计划)相关的标签。
    内容栏:配合树形标签栏显示,树形标签中点击哪个标签,内容栏中就显示相应的内容和操作。

    11

    2. 使用 JMeter 进行接口测试

    遗留的问题:

    1
    2
    3
    1. 需求对我们学院查询执行 100 次,如何去做?

    2. 50个请求同时请求如何操作?

    使用 JMeter 的解决方案

    1
    2
    3
    4
    5
    1. 添加【测试计划】
    2. 基于添加的测试计划添加【线程组】,循环次数设置为 100
    3. 在【取样器】中基于线程组添加HTTP请求
    4. 在【监听器】基于线程组添加【察看结果树】
    5. 在监听器基于线程组添加【聚合报告】

    3. Test Plan( 测试计划 )

    12

    作用:

    1
    2
    3
    1. 本次测试所需要的【组件】都是基于测试计划添加;

    2. 本次测试所有组件的设置与执行都基于测试计划;
    • 组件:完成指定功能代码段的封装;

    • 选项:独立运行每个线程组

    • 进程:是每个正在运行的应用程序。

    • 线程:按照进程的指令去执行指定的代码。

    • 线程组(多线程):多个线程的组合。

    • 线程组(多线程)的执行顺序是并行的。

    • 勾选:让本次测试计划中所有线程组保持从上到下顺序执行

    • 并发执行:多个线程同时进行 特点:执行结束的顺序和启动顺序不一定一致

    • 顺序执行:按照线程的启动顺序挨个执行

    • 默认情况下,线程组中的线程是并发执行的,每一个线程都要执行组内的http请求

    Add directory or jar to classpath :

    1
    加载第三方jar包;比如:测试数据库时使用,加载数据库驱动jar包。

    4. Threads(User) 线程组 【重点】

    1
    2
    3
    1) thread group(线程组)
    2) setup thread group【特殊线程组】
    3) teardown thread group【特殊线程组】

    4.1 thread group( 线程组 )13

    作用 : 添加测试中使用的大多数组件

    线程属性
    1
    2
    3
    4
    线程数:虚拟用户数
    Ramp-Up Period(in serconds):启动虚拟全部用户数所需要的时间
    循环次数 :指定次数或勾线永远
    调度器:勾选后,调度器配置才能使用;
    调度器配置
    • 持续时间(秒):设置脚本压测持续时间

    • 启动延迟(秒):启动延迟时间

    提示:为了理解setup thread、teardown thread两个线程组我们结合案例理解下

    4.2 案例

    1
    2
    通过thread group、setup thread group、teardown thread group 三个线程组去访问
    去访问查询所有学院接口.
    效果图:
    • 需求组件:
    1
    2
    3
    4
    5
    6
    7
    基于测试计划添加【线程组】
    基于线程组添加【HTTP请求】
    基于测试计划添加【setup thread group】线程组
    基于setup thread group添加HTTP请求
    基于测试计划添加【teardown thread group】线程组
    基于teardown thread group添加HTTP请求
    基于测试计划添加【察看结果树】
    组件设置细节:
    1
    2
    3
    测试计划勾选独立运行线程组
    HTTP请求:服务器地址 http://127.0.0.1:8000/api/departments/
    HTTP请求: 修改HTTP请求名称,以做区分

    4.3 组件详解

    1. HTTP请求

    2. 察看结果树

    4.3 - HTTP 请求18

    作用 :

    1. 模拟前端或第三方软件向服务器发送请求;

    2. 设置请求时的方法和参数数据;

    参数详解:

    1. 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

    2. 服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

    3. 端口号:目标服务器的端口号,默认值为 80 。

    4. 协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。

    5. 方法:发送HTTP请求的方法,可用方法包括GET、POST、PUT、DELETE。

    6. Content encoding :内容的编码方式,默认值为iso8859;一般设置【UTF-8】

    7. 路径:目标URL路径(不包括服务器地址和端口)

    8. 同请求一起发送参数:请求时需要传递参数,如:学院资源list查询
      http://127.0.0.1:8000/api/departments/?$dep_id_list=T01,T02,T03
      参数名称:【$dep_id_list】
      参数值:T01,T02,T03

    Body Data 选项作用:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     1.新增或更新时需要传递JSON报文;如学院新增是的JSON报文填写位置:
    {
    "data": [
    {
    "dep_id": "T01",
    "dep_name": "Test学院",
    "master_name": "Test-Master",
    "slogan": "Here is Slogan"
    }
    ]
    }

    【注意】:新增和更新时传入报文也需要设置Content-Type:application/json
    告诉服务器我传的数据格式为JSON格式;
    设置地点:配置元件–>HTTP信息头管理器(用到的时候我们在讲解)

    HTTP 请求总结:

    1. 接口完整请求地址

    2. JSON报文存放地址

    3. 设置默认请求数据格式

    4.3 察看结果树31

    作用:

    1.查看请求服务器时的请求信息;

    2.查看服务器响应数据;

    3.记录信息到指定文件;

    说明:

    1. 文件名:存放服务器响应后的状态信息; 如:e:\查询所有response.txt
    2. 取样结果:服务器响应的信息头信息;比如:响应代码,响应数据大小
    3. 请求:查看向服务器请求时的信息;比如:请求地址、方法、数据等
    4. 响应数据:查看服务器响应的数据;比如:获取资源时,返回的JSON数据

    察看结果树总结:

    1. 查看请求

    2. 查看响应

    3. 存储请求状态信息

    4.4 线程组总结:

    1
    2
    3
    setup thread group:一种特殊线程组,测试计划运行之前首先执行,一般做初始化操作
    teardown thread group:一种特殊线程组,测试计划运行结束时运行,一般做收尾工作
    thread group(线程组) :线程组,我们测试计划中场景创建和实现都是基于此线程组

    元件

    概念:相同类似功能组件的集合称之为元件

    1. 逻辑控制器

    2. 配置元件

    3. 定时器

    4. 前置处理器

    5. Sampler

    6. 后置处理器

    7. 断言

    8. 监听器

    元件结论:

    只学重要的、常用的

    Jmeter 各元件中需要掌握元件

    整理出各大元件常用的重点组件

    1. 配置元件( config Element )

    1
    2
    3
    1) CSV Data Set Config
    2) HTTP请求默认值
    3) HTTP信息头管理器

    2. 前置处理器( Per Processors )

    1. 用户参数

    3. 定时器( Timer )

    1
    1) Synchronizing Timer

    4. 取样器( sample )

    1
    2
    3
    1) HTTP请求
    2) JDBC Request
    3) Debug Sampler

    5. 后置处理器( Post Processors )

    1) 正则表达式提取器
    1
    2) XPath Extractor

    6. 断言( Assertions )

    1) 响应断言

    6. 监听器( Listener )

    1) 察看结果树
    2) 聚合报告
    3) 断言结果

    8. 逻辑控制器

    1
    2
    3
    1) 如果(If)控制器
    2) ForEach控制器
    3) 循环控制器

    总结:正常来说,应该开始按照顺序一个组件一个组件的进行讲解。

    问题:每个组件都不能独立执行。都需要多个组件进行配合,才能够解决实际问题。

    解决方案:按照JMeter主要解决的问题点来讲解组件。

    Jmeter 工具核心知识点

    目标

    • 参数化:数据分离

    • 数据库:连接数据库获取数据

    • 关联:动态获取数据

    • 集合点:掌握如何基于Jmeter并发测试

    • 断言:判断自动化脚本执行成功或失败

    Jmeter 参数化

    学习掌握Jmeter中常用参数化方式

    1. 为什么要参数化?

    1.1 需求新增 10 条数据

    学院-新增
    1) 请求方法:POST
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    2) 请求地址:http://127.0.0.1:8000/api/departments/
    3) 请求JOSN报文:
    4) 调用传入的json串如下(可新增多条,之间用,隔开):
    {
    "data": [
    {
    "dep_id": "T01",
    "dep_name": "Test学院",
    "master_name": "Test-Master",
    "slogan": "Here is Slogan"
    }
    ]
    }

    问题 :

    1. 键所对应的值都是写死的,只能手动更改
    2. 无法解决新增大数量( 1000 条)的问题

    2. 什么是参数化?

    概念:根据需求动态获取数据并进行赋值的过程

    在 Jmeter 中参数化常用方式:

    1
    2
    3
    4
    CSV Data Set Config
    用户参数
    用户定义的变量
    函数

    1. CSV Data Set Config (数据集配置)

    概念:一种从外部读取数据功能的组件

    1.1 实施方案分析

    1. 基于测试计划->线程组
    1. 基于线程组->配置元件->CSV Data Set Config
    2. 基于线程组->Sampler->HTTP请求
    3. 基于测试计划->HTTP信息头管理器
    4. 基于测试计划->监听器->察看结果树

    1.2 组件要点分析

    1. 线程组:循环次数 10
    1. CSV Data Set Config 读取变量配置
    2. HTTP请求:Body Data填写(JSON报文) 方法(POST)
    3. 参数化引用格式:${参数名} 如:${dep_id}
    4. HTTP信息头管理器:Content-Type:application/json;charset=utf-8

    1.3 CSV Data Set Config 参数配置图

    #####32

    1. Filename:文件路径+文件名+后缀名 如:d:/a.txt;
    2. File Encoding:文件编译字符编码,一般设置utf-8;
    3. Vaiable Names:读取参数后保存的变量名称;
    4. Delimiter:如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;

    1.4 HTTP 信息头管理器 参数配置图

    作用:告诉服务器请求的数据格式

    33

    1. Content-Type:指定请求信息格式-类型名称
    2. application/json:指定请求信息为-JSON格式
    3. charset=utf-8:字符编码

    1.5 CSV Data Set Config- 总结:

    1. 参数化概念
    1. CSV Data Set Config 配置参数设置
    2. 参数化引用格式
    3. HTTP请求
    4. HTTP信息头管理器作用与设置

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1210331079@qq.com

    💰

    Title:接口测试-02-Jmeter

    Count:3.3k

    Author:千 羽

    Created At:2020-08-17, 01:02:12

    Updated At:2020-08-18, 22:39:47

    Url:https://nateshao.github.io/2020/08/17/%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95-02-Jmeter/

    Copyright: 'Attribution-non-commercial-shared in the same way 4.0' Reprint please keep the original link and author.

    ×

    donation.headline

    // 底部音乐
    //右上角Github图标