IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Jmter -> 正文阅读

[开发测试]Jmter

Jmter

1.简述

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。

另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。

2.下载安装

由于Jmeter是基于java开发,首先需要下载安装JDK,配置环境变量。JMeter最低要求Java 8,可兼容更高版本,官网建议使用最低要求版本。

Jmter官网下载地址: https://links.jianshu.com/go?

下载完成后解压Zip包,找到bin目录下jmter.bat 双击启动Jmter。

  • 注意 :打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不可以关闭命令窗口。

Jmter的使用

接口测试

在这里插入图片描述

1.在测试计划中→添加→线程→线程组

在这里插入图片描述

线程属性:

  1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
  3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  4. Delay Thread creation until needed:直到需要时延迟线程的创建。
  5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    持续时间(秒):测试持续时间,会覆盖结束时间
    启动延迟(秒):测试延迟启动时间,会覆盖启动时间
    启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
    结束时间:测试结束时间,持续时间会覆盖它。

jmter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建。

在这里插入图片描述

2.点击线程组→取样器→http请求

在这里插入图片描述

http请求:

  1. 协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP

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

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

  4. 请求方式:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

  5. 路径:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

  6. Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8。

  7. 参数:在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”。

  8. 参数也可以使用用户定义的变量的方式来填写 将后续用到的变量添加到“用户定义的变量”,后续操作只
    需引用变量名称(${名称})即可,它的值被整个线程共享(也可以被整个测试计划共享)。

测试计划→添加→配置元件→用户定义的变量

在这里插入图片描述

3.线程组→监听器→查看结果树(汇总报告 聚合报告 用表格查看结果 图形结果)。

在这里插入图片描述

根据需求可查看不同的结果方式。

Jmeter 单接口和多接口测试

单接口并发压测

首先介绍下单接口压测,使用Jmeter的线程组进行设置:
在这里插入图片描述

1、线程数:并发用户数

2、Ramp-Up Period(in seconds):运行的时间

3、循环次数:线程运行的次数

一般想要看稳定性,会设置循环次数或者永远循环,持续循环调用请求。。

如果要看压测,会设置线程数,同时多用户访问。

  • 假设线程数、Ramp-Up Period(in seconds)、循环次数分别为1、1、10,结果为:每秒跑一个线程,共跑10次,等同于分别设置1、1、1的场景下连续操作10次;产生10条数据。
  • 假设线程数、Ramp-Up Period(in seconds)、循环次数分别为10、1、1,结果为:1秒内并发10个用户同时请求,即单接口压测;产生10条数据。

多场景混合并发

接下来介绍多场景混合并发,利用Jmeter的多线程组进行并发测试。

假设业务场景和混合并发的占比是这样的:
在这里插入图片描述
操作步骤:

1、Jmeter上创建一个测试计划;

2、计划下添加3个线程组,分别是对业务场景A、业务场景B、业务场景C;
在这里插入图片描述
3、假设3个场景混合并发的比例为4:4:2,则可以在3个线程组分别设置4、4、2,或者设置为40、40、20总并发量为100,只要按并发比例设置并发用户数即可
在这里插入图片描述
在这里插入图片描述

4、运行,则所有接口会混合跑,实现接口混合并发压测

性能测试

在这里插入图片描述

1.添加线程组 在测试计划中→添加→线程→线程组

在这里插入图片描述

线程属性:

  1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
  3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  4. Delay Thread creation until needed:直到需要时延迟线程的创建。
  5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
    持续时间(秒):测试持续时间,会覆盖结束时间
    启动延迟(秒):测试延迟启动时间,会覆盖启动时间
    启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
    结束时间:测试结束时间,持续时间会覆盖它。

jmter的所有任务都必须由线程处理,所有任务都必须在线程组下面创建。

在这里插入图片描述

2.添加HHTP请求 点击线程组→取样器→http请求

在这里插入图片描述

http请求:

  1. 协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP 。

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

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

  4. 请求方式:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

  5. 路径:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

  6. Content encoding :编码方式,默认为ISO-8859-1编码,这里配置为utf-8。

  7. 参数:在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码”。

  8. 参数也可以使用用户定义的变量的方式来填写 将后续用到的变量添加到“用户定义的变量”,后续操作只
    需引用变量名称(${名称})即可,它的值被整个线程共享(也可以被整个测试计划共享)。

在这里插入图片描述

测试计划→添加→配置元件→用户定义的变量
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.添加查看结果树 线程组→监听器→查看结果树

在这里插入图片描述

查看结果树 是否运行成功 成功的话点击响应数据查看结果。

4.添加聚合报告 线程组→监听器→聚合报告。

在这里插入图片描述

5.配置线程组本次性能测试的相关参数。

在这里插入图片描述

6.点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。

在这里插入图片描述

7.分析测试报告 待性能测试执行完成后,打开聚合报告可以看到。

在这里插入图片描述

聚合报告参数详解:

  1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
  2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
  4. Median:中位数,也就是 50% 用户的响应时间
  5. 90% Line:90% 用户的响应时间
  6. Min:最小响应时间
  7. Max:最大响应时间
  8. Error%:错误率——错误请求数/请求总数
  9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
  10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

Jmter 压力测试

1.创建线程组
在“测试计划”上右键 【添加】–>【Threads(Users)】–>【线程组】
在这里插入图片描述
设置线程数和循环次数。我这里设置线程数为500,循环一次。
在这里插入图片描述
2.配置元件
在我们刚刚创建的线程组上右键 【添加】–>【配置元件】–>【HTTP请求默认值】。
在这里插入图片描述
配置我们需要进行测试的程序协议、地址和端口
在这里插入图片描述
当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可。

3.构造HTTP请求
在“线程组”右键 【添加-】->【samlper】–>【HTTP 请求】设置我们需要测试的API的请求路径和数据。我这里是用的json
在这里插入图片描述
4.添加HTTP请求头
在我们刚刚创建的线程组上右键 【添加】–>【配置元件】–>【HTTP信息头管理器】。

因为我要传输的数据为json,所以设置一个 Content-Type:application/json
在这里插入图片描述
5.添加断言
在我们刚刚创建的线程组上右键 【添加】–>【断言】–>【响应断言】。

根据响应的数据来判断请求是否正常。我在这里只判断的响应代码是否为200。还可以配置错误信息
在这里插入图片描述

6.添加察看结果树
在我们刚刚创建的线程组上右键 【添加】–>【监听器】–>【察看结果树】。

直接添加,然后点击运行按钮就可以看到结果了。
在这里插入图片描述
7.添加Summary Report
在我们刚刚创建的线程组上右键 【添加】–>【监听器】–>【Summary Report】。

直接添加,然后点击运行按钮就可以看到结果了。
在这里插入图片描述

Jmter web端脚本录制

我用的是Firefox浏览器,你们也可以使用Chrome浏览器,

首先要设置代理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这里要注意了,IP地址和你本机地址一样,端口号和JMeter上面的一样:

好了,Firefox的代理就是这样设置的,让我们再回到JMeter,启动JMeter:

在这里插入图片描述

在这里插入图片描述

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

设置代理服务器,端口号保持默认8888,也可以改为其他的,但是要与Firefox保持一致;

目标控制器选择则为你刚才添加的线程组的名字;

排除模式是为了过滤Web前端乱七八糟的渲染,(?i)..(bmp|css|js|gif|ico|jpe?g|png|swf|woff).

点击启动:

在这里插入图片描述

好了,让我们再回到Firefox浏览器,输入地址http://bbs.51testing.com/forum.php

搜索Selenium:

在这里插入图片描述

在这里插入图片描述

现在可以把Firefox关闭了,不用管它了,让我们回到JMeter,关闭代理服务器:

在这里插入图片描述

把那些乱七八糟的接口都删除了,只留刚才那两步的操作,并给每个HTTP请求改名:

在这里插入图片描述

再分别给每个HTTP请求添加查看结果树和断言:

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

这里要说一下,我填的是页面源码<a href=“thread-1139888-1-1.html” target="_blank" title="论坛: [软件测试新手上路] 和 [自动化测试工具及框架]

也可以填文字,也可以填json数据和数据库返回的数据,这个以后再说,修改后是这样的:

在这里插入图片描述

在这里插入图片描述

好了,现在可以回放脚本了:
在这里插入图片描述

分析响应结果:

在这里插入图片描述

还可以这样看:

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

jmeter 录制移动端脚本

jmeter录制脚本有两种方式,一种借助外部工具badbody,一种是本身的功能,使用代理服务器,介绍下如何使用代理服务器录制脚本。我一般在测app或者移动端H5页面时才会录制,所以此文也针对移动端。
操作:
1.打开jmeter,设置代理服务器,具体操作如图

在这里插入图片描述
2.为测试计划添加一个线程组
3.代理服务器的设置:
设置端口:自己设置,8888,8080…都可以
目标控制器:选择你刚刚添加的线程组(等会录制的脚本会放到这里)
分组:选择“每个组放入一个新的控制器”(看个人选择吧,其实都可以,我选择的这个选项会将你录制的脚本分组,看起来更明了)
【不对样本分组:所有请求全部罗列
在组间添加间隔:加入一个虚拟的以分割线命名的动作,运行同“不对样本分组”,无实际意义
每个组放入新的控制器:执行时按控制器给输出结果
只存储每个组的第一个样本:对于一次url请求,实际很多次http请求的情况

HTTP Sample settings:我选择HttpClient4(他们几个具体有什么不同我暂时还没研究)

代理服务器排除模式的正则:.*.(bmp|css|js|gif|ico|jpe?g|png|swf),他会排除你录制的的脚本中的css 、 js 图片等文件,这个还挺重要的,不过据说最新版jmeter自带拦截功能
在这里插入图片描述
4.为代理服务器添加监听器----查看结果树(他会帮助你查看你录制脚本时的过程成功与否,也可以不设置)
5.设置手机端的网络,要确保你的电脑和你的手机在同一个网段,比如说连接同一个WiFi,具体如何操作呢?
先查看电脑的IP地址: win键+R------>输入cmd ---->在打开的命令行窗口中输入 ipconfig---->ipv4 Address 栏就是电脑连接的网址
然后设置手机上的网段:手机连接上无线网络,长按该网络,点击“修改网络”,在打开的页面中将“显示高级选项”勾选上,将“代理”选为手动,在服务器主机名中填入刚刚查看的电脑网址,端口号也填上刚设置的端口号,点击保存。

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

6.开始录制
点击jmeter的Http代理服务器页面的“启动”,在弹出的对话框中点击“确定”,录制已经开始,然后就可以在手机上进行你要录制内容的操作步骤,录制完后点在jmeter中点击停止。
他的录制脚本会全部出现在刚设置的线程组下面。因为这个脚本录制是将你在手机上的所有操作都录制下来,所以你可能会需要筛选下,将不需要的请求删除,然后为其添加查看结果树,对线程组进行回放操作

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:14:59  更:2021-11-24 08:16:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 5:28:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码