Jmeter

JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现;

JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。

常用元件

  1. 取样器
  2. 逻辑控制器
  3. 前置处理器
  4. 后置处理器
  5. 断言
  6. 定时器
  7. 测试片段
  8. 配置元件
  9. 监听器

元件作用域

  1. 取样器:元件不和其他元件相互作用,因此不存在作用域的问题
  2. 逻辑控制器:元件只对其子节点中的取样器和逻辑控制器起作用
  3. 其他六大元件:除了取样器和逻辑控制器外,如果是某个取样器的子节点,则该元件对其父子节点起作用。
  4. 如果其父节点不是取样器。则其作用域是该元件父节点下的其他所有后代节点

元件执行顺序

  1. 配置元件
  2. 前置处理程序
  3. 定时器
  4. 取样器
  5. 后置处理程序
  6. 断言
  7. 监听器

重点组件

  • 线程组:是控制Jmeter将用于执行测试的线程数,可以把一个线程理解为一个测试用户

  • 特点:

    • 模拟多人操作
    • 线程组可以添加多个,多个线程组可以并行或串行
    • 取样器和逻辑控制器必须依赖线程组才能使用
    • 线程组下可以添加其他元件的组件
  • 线程组分类:

    • 线程组:普通的、常用的
    • setUp线程组:执行预测试操作
    • tearDown线程组:执行测试后的工作
  • HTTP取样器(在取样器中)

  • 察看结果树(在监听器中)

简单的就不写了!!!

正则表达式

参数设计在这里插入图片描述

案例:
在这里插入图片描述

1.先获取到播客的响应数据
在这里插入图片描述
在这里插入图片描述
2.可以利用网页看自己写的正则表达式是否可以匹配成功
在这里插入图片描述
3.填写参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Xpath

参数设置

在这里插入图片描述

在这里插入图片描述

JSON 提取器

参数设置

在这里插入图片描述
案例:
在这里插入图片描述
1.先运行需要提取数据的接口,得到json数据
在这里插入图片描述
2.填写参数
在这里插入图片描述
在这里插入图片描述
3.结果
在这里插入图片描述

跨线程组关联

多个请求之间有关联关系(一个请求的参数需要使用前面请求的响应),但两个请求不在一个线程组中,此时提取器无法完成关联,需要使用Jmeter属性来完成数据的传递。
在这里插入图片描述

面试题:Jmeter中如何实现关联?

上一个接口中通过正则表达式或jsonpath解析器提取下一个接口需要的参数值保存到变量,然后再写一个接口通过${变量名}去获取变量。
案例:
在这里插入图片描述
1.添加两个线程组
如果两个线程组需要按顺序执行时,勾选如下:
在这里插入图片描述
2.使用json提取器提取需要的变量,设置为全局变量
在这里插入图片描述
使用生成全局变量函数
在这里插入图片描述
在这里插入图片描述
4.将该全局变量放在另一个需要使用他的请求中
在这里插入图片描述
在这里插入图片描述
5.成功!!!
在这里插入图片描述

Jmeter录制脚本

原理

Jmeter在客户端和服务器之间做代理,收到所有的请求和响应数据之后,Jmeter在进行逆向解析的动作,将数据报文转化为脚本。

  1. 在测试计划下新建 HTTP代理服务器与线程组,填写必须参数
    在这里插入图片描述
  2. 配置本机代理服务器
    在这里插入图片描述
  3. 点击启动
    在这里插入图片描述
  4. 在浏览器中输入 127.0.0.1 之后查看线程组中 就有对应的请求
    在这里插入图片描述

过滤规则

抓到的请求中可能有一些不需要的东西,所以设置过滤
在这里插入图片描述
所有表达式都需要使用正则表达式
.* 127.0.0.1. * 代表抓取只含有127.0.0.1的请求
再点击重启,再次发送请求
别忘了结束后关闭代理服务器~!!!!
在测试计划下新建 察看结果树 就可以看回放
碰到有cookie的 要添加cookie管理器

Jmeter直连数据库

通过连接数据库实时查看数据库的响应与请求的是否一致,校验数据的正确性
案例:连接tpshop商城数据库获取商品名为:小米手机5的商品id

  1. 在测试计划中导入mysql连接

在这里插入图片描述

  1. 添加所有元件、组件,并配置
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  2. 结果

在这里插入图片描述

Jmeter逻辑控制器

常用的逻辑控制器:

  • 如果(If)控制器:控制它下面的测试元素是否运行
  • 循环控制器:控制子节点下HTTP请求的执行次数
  • ForEach控制器:与用户定义的变量或者正则表达式提取器配合使用,循环读取用户定义的变量或者正则表达式结果中的所有数据

IF控制器

案例:
在这里插入图片描述
1.添加元件,组件,并配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.根据用户定义的变量执行http请求,定义的是百度,那么则执行name==baidu的请求
在这里插入图片描述
Jmeter中If控制器,没有对应的ELse语句,不同的分支相当于else,所以不同条件是,需要多个if控制器。

还可以用jexl3函数。我懒得写了。但是使用函数时,需要勾选
在这里插入图片描述
在这里插入图片描述

循环控制器

循环控制器与线程组中的循环次数的对比:

  1. 循环控制器只控制其子节点下的HTTP请求,线程组对所有的请求都有效。
  2. 假如线程组循环次数为2,循环控制器的次数为3,那么循环控制器下的请求执行次数为:2*3
    在这里插入图片描述
    在这里插入图片描述

ForEach控制器

参数配置:
在这里插入图片描述

与用户定义的变量配合

案例:
在这里插入图片描述
配置用户变量时,参数名为:固定前缀+连续编号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

与正则表达式配合

案例:
在这里插入图片描述
1.添加各种元件、组件
在这里插入图片描述
2.提取地址
在这里插入图片描述
3.配置ForEach控制器
在这里插入图片描述
4.结果
在这里插入图片描述

定时器

同步定时器

保证大量的请求在同一时间进行发送,形成绝对的并发。
实现原因:设置同步定时器,有请求要发出时,同步定时器会暂缓请求发送,一直到积攒的请求数达到要的数量时,将所有的请求同步发送出去,形成绝对的并发(更大的压力负载)
在这里插入图片描述
案例:
在这里插入图片描述
1.添加元件、组件
在这里插入图片描述
2.配置参数
只有请求数量达到100,才一次性发送出去
在这里插入图片描述
3.结果
在这里插入图片描述

常数吞吐量定时器

在这里插入图片描述
在这里插入图片描述
案例:
在这里插入图片描述
1.添加元件、组件
在这里插入图片描述
2.配置参数
由于我的电脑可能qps达不到20,所以我选择qps=10,那么填写参数应该是10*60=600
在这里插入图片描述
3.查看聚合报告,吞吐量一列
在这里插入图片描述
在这里插入图片描述

JMeter分布式测试

在使用JMeter进行性能测试时,如果并发数比较大,单台电脑可能无法支持,这时可以使用JMeter提供的分布式测试的功能。
在这里插入图片描述
分布式相关注意事项:

  • 测试机上所有的防火墙关闭
  • 所有的控制机、代理机、被测系统都在一个子网中
  • 所有的控制机和代理机上安装的Jmeter和JDK版本必须完全一样
  • 要关闭Jmeter中的RMI SSL开关

聚合报告

在这里插入图片描述
在这里插入图片描述

HTML报告

通过命令行方式生成报告
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见图表

性能测试常用图表:
Concurrency Thread Group
在这里插入图片描述

TPS

在这里插入图片描述

运行中传输速率

在这里插入图片描述

客户端监控服务器 硬件资源:

在这里插入图片描述

并发数的计算

  1. 普通计算方式:
    TPS = 总的请求数量 / 总的时间
    存在的问题:对于同一天,不同的时间段。请求速率会有波动,这样计算会被平均掉,无法测试负载高的情况
  2. 二八原则
    80%的请求会集中在20%的时间内完成
    TPS = 总的请求数量 * 80% / 总的时间 * 20%
  3. 按照每天的具体业务数据进行计算(稳定性测试TPS)
    在这里插入图片描述
  4. 模拟用户峰值业务操作的并发数(压力测试TPS)
    获取每天的交易峰值时间段,以及这个时间段内所有的请求的数量
    TPS = 峰值时间内的请求书 / 峰值时间段 * 系数
    在这里插入图片描述

面试题 :如何利用工具做接口测试?

我在小程序项目中使用了接口测试,主要有登录接口,支付接口等。

  1. 首先我根据API接口文档,了解接口业务,包括接口地址、请求方式、入参、出参、token、返回格式等信息。

  2. 使用postman或者Jmeter工具进行接口测试,一般步骤是:

    1. 新建一个线程组,发起HTTP请求(输入接口服务器和IP端口)
    2. 再新建其他HTTP请求,一个请求一个用例(输入接口路径,访问方式,参数等);创建断言和察看结果树
    3. 最后调式并执行用例。
      如何获取token?
      在请求中需要使用正则表达式提取token值。在填写到相关的http请求中。

postman如何接口测试,获取token?
在小程序项目中,如果要获取用户的订单,那么必须处于登录状态下才可以,我在操作是:执行后端操作,获取code值,通过code值,获取token。将得到的code值放入请求体中,发送请求后,响应体中则会有对应的token值,再将token值设置为全局变量。如果这个token值是有效的,即当前处于登陆状态,可以获取用户的订单。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程从基础讲起,全课程以实战为主,每个知识点通过实际案例演练讲解理论+实践结合,更容易理解,适合小白,低门槛,快速上手。 课程同时涵盖web端和移动端app测试,同时还加入了抓包工具的使用; 1) 第一阶段为JMETER 5.4.1 (最新版本)工具使用篇,通过Jmeter 介绍和安装、http 取样器、JDBC 取样器、JMETER 件详细讲解、配置元件、三种参数化方式教你玩转JMETER 参数化、工作过程中间所需的常用函数、聚合报告、察看结果树、汇总报告等监听器知识,后置处理器、后置处理器之正则表达式提取器提取响应内容实践、读取本地JSON格式文件实例、正则表达式操作符、正则表达式工具之Regextester,系统全面学习正则表达式,突破JMETER 知识难点,响应断言、JMETER分布式、分布式原理、搭建JMETER 分布式、WebService协议接口测试。 每一个知识点采用理论加案例的方式,吃透每一个知识点,为性能测试实践奠定基础。 2) 第二阶段为性能测试实践篇1、通过JMETER 实践爬虫技术,爬取第三方平台全网页地址、批量爬取国外网站壁纸10W+图片并保存到本地;2、详细介绍Fiddler 抓包工具,Fiddler 抓包工具原理、Fiddler 抓取PC 端和移动端包信息、JMETER+Fiddler 结合使用对PC 端项目进行性能测试项目实践,提升PC 端性能测试能力;3、JMETER+Fiddler  结合使用对app 项目进行性能测试项目实践,提升app项目性能测试能力4、性能测试常见的业务指标和技术指标、响应时间、TPS、HPS等知识进行讲解5、通过JMETER 对移动端项目进行性能测试实战; 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值