当前位置:   article > 正文

jmeter基础篇--基本介绍及示例

jmeter

目录

一、jmeter介绍

二、简单性能测试示例

1、测试前需要明确点

1)性能测试的目的

2)性能测试的环境

3)性能测试的场景

2、简单示例

1)添加线程组(用户)

2)添加请求:

3)尝试运行Jmeter,运行过程中或者运行完成后均可以查看执行情况

4)聚合报告

5)jmeter参数化

6) 集合点:


一、jmeter介绍

        Apache JMeterApache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

        Apache jmeter 可以用于对静态的和动态的资源(文件,ServletPerl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

        由于Jmeter100% java,具有完全的可移植性,所以只要在有JRE环境的系统中都能直接运行,不需要进行安装。

二、简单性能测试示例

1、测试前需要明确点

1)性能测试的目的

性能测试的目的是评估系统、应用程序或设备在不同负荷和压力条件下的运行表现。通过性能测试,我们可以了解系统在正常或极端使用情况下的响应速度、吞吐量、可靠性、稳定性和可扩展性等方面的表现。

性能测试可以帮助识别系统中的瓶颈和性能问题,找出引起性能下降的原因,并提供改进和优化的建议。它还可以验证系统是否满足预期的性能需求,以确保系统在实际使用中能够提供良好的用户体验。

总之,性能测试的目的是确保系统在各种条件下都能够以高效、可靠和稳定的方式运行,并提供对系统性能的客观评估和改进的依据。

2)性能测试的环境

进行 JMeter 性能测试时,需要创建一个合适的测试环境,确保能够准确地模拟实际用户的行为并测量系统的性能。以下是一般情况下用于 JMeter 性能测试的基本环境:

  1. 测试目标:明确需要进行性能测试的目标,例如 Web 应用程序、数据库服务器等。

  2. 硬件环境:确定运行 JMeter 的计算机的硬件配置,包括 CPU、内存和磁盘空间等。

  3. 网络环境:了解被测系统的网络情况,包括带宽、延迟等信息。

  4. 测试数据:准备用于测试的数据集,确保数据能够真实模拟用户行为。

  5. 测试工具:安装并配置 JMeter 测试工具,确保 JMeter 能够访问被测系统。

  6. 测试人员:确定负责执行测试的人员,并对其进行培训,以保证测试操作的准确性。

  7. 测试场景:设计合适的测试场景,包括用户数量、请求类型、持续时间等参数设置。

  8. 监控工具:准备监控工具,用于监视被测系统的性能指标,如 CPU 使用率、内存占用等。

以上是进行 JMeter 性能测试时需要考虑的基本环境要素,确保这些环境设置合理,可以有效地进行性能测试并得出准确的结果。

3)性能测试的场景

在 JMeter 中,性能测试场景是指模拟用户的行为和压力情境,以评估被测系统在不同负载条件下的性能表现。以下是设计 JMeter 性能测试场景的一些建议:

  1. 用户数量:确定并模拟实际使用情况下的预期用户数量。可以使用线程组(Thread Group)设置并发用户数、循环次数等。

  2. 请求类型:根据被测系统的实际情况,设计不同类型的请求,如 HTTP 请求、数据库查询、API 调用等。

  3. 请求参数:对每个请求设置相应的参数,如用户名、密码、搜索关键字等。可以使用 CSV 数据文件或随机值生成器来模拟真实数据。

  4. 页面流程:模拟用户在系统中的页面导航流程,可以使用逻辑控制器(Logic Controller)设置页面之间的转换条件和顺序。

  5. 压力模式:确定测试的压力模式,如逐渐增加负载、保持稳定负载或模拟峰值负载。可以使用负载生成器(Load Generator)来模拟并发请求。

  6. 参数化:对于需要进行大规模测试的场景,可以使用参数化功能,自动生成不同的测试数据。

  7. 断言和验证:添加断言(Assertions)来验证响应结果是否符合预期,以及添加监控器(Listeners)来实时监测系统性能。

  8. 报告和分析:配置测试计划,包括设置测试结果保存位置、生成报告等。使用聚合报告生成器(Aggregate Report)和图表生成器(Graph Results)来分析测试结果。

2、简单示例

1)添加线程组(用户)

     在“测试计划”上右键,选择“添加”---“Thread Users”---“线程组”,如下图所示:

        其中,对我们有影响的参数是线程数(设置发送请求的用户数目),Ramp-up period: 每个请求发生的总时间间隔,单位是秒,循环次数(请求发生的重复次数)。如果我们需要JMeter模拟五个请求者(也就是五个线程),每个请求者连续请求两次,则如下图设置:

线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数

线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数

准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程

循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。

2)添加请求:

  我们要访问一个网页,比如是百度首页,则是http请求,则添加http请求,在线程组上右键---“添加”---“Sampler”---“HTTP请求”:

  http请求的属性值中“Web服务器名称或IP”填写www.baidu.com就可以了:如下图所示:

一个HTTP请求有着许多的配置参数,下面将详细介绍

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

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息

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

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

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

方法:发送HTTP请求的方法,可用方法包括GETPOSTHEADPUTOPTIONSTRACEDELETE

Content encoding :内容的编码方式,默认值为iso8859

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

自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面

Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中

Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中

同请求一起发送参数 : 在请求中发送URL参数,对于带参数的URL jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=1

同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟

HTML文件获取所有有内含的资源:当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载

用作监视器:此取样器被当成监视器,在Monitor Results Listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中

Save response as MD5 hash? :选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。

一般来说,都会添加一个聚合报告,可以查看常见的性能指标:

3)尝试运行Jmeter,运行过程中或者运行完成后均可以查看执行情况

4)聚合报告

Samples: 表示这次测试中一共发出了多少个请求

Average: 访问页面的平均响应时间

Min: 访问页面的最小响应时间

Max: 访问页面的最大响应时间

Error%: 错误的请求的数量/请求的总数

Throughput:每秒完成的请求数

KB/Sec: 每秒从服务器端接收到的数据量

5)jmeter参数化

参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。

我们需要“参数化”的数据,这里我用记事本写了三个用户名和密码,保存为.dat格式的文件。

我将这个文件放在了我的( /Users/leiyuxing/jmter/up.dat  )路径下。关于如何得到成百上千的用户名和密码,首先要在数据库中创建这些数据,将数据导出,整理保存,这里就不深究。

好,我们要编写函数来调用这个test.dat文件,怎么弄,点击菜单栏“选项”---->函数助手对话框,看下图。

我们需要“参数化”的数据,这里我用记事本写了三个用户名和密码,保存为.dat格式的文件。

6) 集合点

简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,

还拿那个用户和密码的地方,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问。

这样子就添加了一个“集合点”,意思为“凑齐10个用户一起行动

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/667444
推荐阅读
相关标签
  

闽ICP备14008679号