栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jmter

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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请求添加查看结果树和断言:



这里要说一下,我填的是页面源码[自动化测试工具及框架],

也可以填文字,也可以填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中点击停止。
他的录制脚本会全部出现在刚设置的线程组下面。因为这个脚本录制是将你在手机上的所有操作都录制下来,所以你可能会需要筛选下,将不需要的请求删除,然后为其添加查看结果树,对线程组进行回放操作

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号