`

(转)jmeter简介

阅读更多

 

转自:http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html

 

上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢。这一节创建一个简单的测试计划来使用这些元件。该计划对应的测试需求。

1)测试目标网站是fnng.cnblogs.com  和 tt-topia.rhcloud.com

2)测试目的是该网站在负载达到20 QPS 时的响应时间。

 

QPS 解释

  QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

 

  为了达成预期的测目的,需要需要在jmeter中建立一个测试计划。因为本次测试仅要求完成对fnng.cnblogs.com  和 tt-topia.rhcloud.com 两个博客首页请求,因此只需要使用HTTP Request Sampler 即可。

 

建立测试计划

   启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划建立自己的测试计划。

 

添加线程组


 

    一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。

   jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。

 

 

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

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

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

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

  设置合理的线程数对于能否达到测试目标有决定性的影响。在本例中,要求得到网站首页在20 QPS 负载情况下的响应时间,如果如果线程数量设置的过小,则很可能无法达到设定的QPS要求。另外,设置合理的循环次数也很重要,除了上面介绍的固定循环次数与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。

 

 

添加HTTP请求


 

  添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工作:

 

向服务器发送请求

记录服务器的响应数据

记录相应时间信息

 

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。

 

  在这里我们添加两个HTTP请求,分别用于对fnng.cnblogs.com  和 tt-topia.rhcloud.com发送请求。

 

设置QPS限制


 

 

  本次性能测试的需求中提到测试的目的是“了解博客的首页在负载达到20 QPS时的响应时间”,因此需要控制向博客首页发送请求的负载为20QPS。

  一种可行的方法是逐步调整测试计划中的线程计算的数量以及为取样器(Sampler)添加定时器(Timer),以使HTTP取样器发出的请求的QPS保持在20个左右。但这种方法耗时耗力,需要经过多次尝试才能达到;另一方法,完全通过设置定时器来控制QPS,一旦取样器的响应时间发生改变(网络环境发生改变),就需要重新调整定时器的等待时间。

  Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。

  右键点击fnng.cnblogs.com ,弹出菜单(添加--->定时器--->Constant Throughput Timer)选择Constant Throughput Timer

Constant Throughput Timer 的主要属性介绍:

名称 :定时器的名称

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。

Calculate Throughput based on :有5个选项,分别是:

  This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量。

  All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

  All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。

  All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

  All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

 

  如上图,该元件仅作用于fnng.cnblogs.com ,设置定时器的Target throughput为1200/分钟(20 QPS),设置Calculate Throughput based on 的值为All active threads 。

  当然,Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够,或是定时器设置不合理等原因导致总体的QPS不能达到预期目标。

 

 

添加监听器(Listener)


 

   脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。

  Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上HTTP请求,我们可在添加聚合报告,更为直观的查看测试结果。

  添加聚合报告,右键点击线程组,在弹的菜单(添加--->监听器--->聚合报告)中选择聚合报告。

 

 

运行脚本


 

  添加完成聚合报告后,我们来运行脚本,稍后介绍聚合报告的参数。

  在运脚本之前,我们来查看一下,各个元件的参数设置:

--------------------------------------------------------------- 

线程组:

线程数:20

准备时长: 10

循环次数:10

---------------------------------------------------------------  

HTTP请求:

名称:fnng.cnblogs.com。

服务器名称或IP :fnng.cnblogs.com

端口号:80 

Implementation : java 

协议: http

方法: GET

路径:/

---------------------------------------------------------------  

常数吞吐量定时器:

Target throughput(in samples per minute):1200.0

Calculate Throughput based on :All active threads

---------------------------------------------------------------  

点击工具栏上的运行按钮,或者点击菜单栏“ 运行--->启动 ” 或者使用快捷键ctrl+r 来运行程序。

 

 

聚合报告分析


 

查看聚合报告的运行结果:

 

 OK! 到此一次完整的性能测试结束,如果你从中有所收获,推荐一记~!

分享到:
评论

相关推荐

    jmeter接口自动化测试插件swagger转jmeter脚本.zip

    《JMeter接口自动化测试:Swagger转JMeter脚本实践指南》 在软件开发过程中,接口自动化测试已经成为确保系统稳定性和高效性的重要环节。其中,Apache JMeter作为一个强大的性能测试工具,广泛应用于接口测试领域。...

    Jmeter使用之二:Jmeter录制脚本

    一、JMeter简介 JMeter是由Apache软件基金会开发的一款开源的、跨平台的负载和性能测试工具。它主要用于测试静态和动态资源(如静态文件、Java Servlets、CGI脚本、Java对象、数据库和FTP服务器)的性能和稳定性。...

    jmeter性能测试报告.docx

    【系统简介】 2.1 参考资料 测试依据包括GB/T 25000.51-2016和GB/T 25000.10-2016,涉及系统和软件的质量要求和评价标准。 2.2 计划的测试 计划进行的压力测试、负载测试、并发测试、基准测试和混合场景测试,涵盖...

    jmeter性能接口一本通.pdf

    ### JMeter简介 JMeter是一款开源的性能测试工具,主要用于负载测试和功能测试。它能够模拟服务器或网络应用的高负载情况,并测量其性能。JMeter主要用于测试Web应用程序或服务器,可以用于测试静态和动态资源,如...

    jmeter学习笔记

    #### 一、jmeter简介 **jmeter是什么?** Apache JMeter 是 Apache 组织开发的一款开源的压力测试与性能测量工具,主要用于进行 Web 应用的性能测试,不过随着时间的发展,其功能已经扩展到了更多类型的资源和服务...

    Jmeter手机录制

    #### 一、JMeter简介 Apache JMeter是一款开源的压力测试工具,主要用于对Web应用进行功能测试以及性能测试。它能够模拟大量用户并发访问系统,从而评估系统的性能表现。此外,JMeter还支持多种协议,如HTTP、HTTPS...

    jmeter接口测试案例

    - **4.1 JMeter 简介** JMeter是一款开源的负载测试工具,用于测试Web应用的性能。它不仅可以模拟大量用户并发访问,还可以进行各种类型的测试,如功能测试、回归测试等。 - **4.2 主要组件** JMeter的主要组件...

    JMeter+badboy系统测试

    ### JMeter简介 JMeter是Apache软件基金会的一个项目,它是一款完全基于Java的开源应用,设计用于负载和性能测试。JMeter能够模拟大量用户并发访问服务器,检查系统的稳定性和响应时间。它支持多种协议,包括HTTP、...

    那些年,追寻Jmeter的足迹--第1版本-unlocked.pdf

    #### 一、简介 **JMeter** 是一款开源的压力测试工具,主要用于对静态或动态资源进行功能测试和性能测试。它最初被设计用于Web应用程序测试,但现在已经扩展到多种协议的测试。本文档旨在帮助初学者了解JMeter的...

    jmeter+ant的接口测试报告模板

    - **简介**:JMeter是一款完全基于Java的开放源代码应用,主要用于负载和性能测试,但也可以用于功能测试。它支持多种协议,如HTTP、HTTPS、FTP、SMTP等,非常适合进行接口测试。 - **接口测试**:在JMeter中,...

    locust_for_jmeter_users-master.zip

    1. **JMeter简介** Apache JMeter是一款纯Java应用,支持多种协议如HTTP、FTP、SMTP等,广泛用于模拟大量并发用户对服务器进行压力测试。JMeter提供了丰富的可视化报告和强大的脚本能力,但它的配置和脚本编写相对...

    JmeterExport.zip

    一、Fiddler简介 Fiddler是一款免费的HTTP调试代理,它能够记录并显示所有HTTP通信,包括请求头、响应头以及请求和响应的原始数据。开发者可以借此检查网络应用的性能,定位网络问题,甚至修改HTTP通信以进行测试。 ...

    利用jenkins+jmeter搭建性能测试平台

    【JMeter简介】 Apache JMeter是一款纯Java的开源性能测试工具,主要用于对Web应用进行负载和压力测试。它可以模拟大量并发用户,分析服务器的性能表现,帮助开发者找出可能导致系统崩溃或响应速度变慢的问题。 ...

    csdn_export_md.md

    #### 一、JMeter简介 JMeter是Apache组织开发的一款开源压力测试工具,主要用于对Web应用进行功能测试以及性能测试。它能够模拟大量的并发用户访问目标系统,进而评估系统的性能表现。JMeter支持多种协议,包括HTTP...

    压力测试工具ab使用

    一、ab工具简介 ab工具主要用来模拟多个并发用户对服务器进行请求,从而测试服务器在高负载下的响应时间和吞吐量。它支持HTTP/1.0和HTTP/1.1协议,可以发送GET和POST请求,并提供了丰富的参数供用户自定义测试场景...

    ngrinder-recorder-1.0.zip

    一、ngrinder-recorder-1.0简介 ngrinder-recorder-1.0是ngrinder的一个插件,它提供了一种直观的方式来记录用户的网络活动,这些活动可以被转化为性能测试脚本。通过这个工具,用户无需编写复杂的脚本,只需像平常...

    LoadRunner性能测试巧匠训练营

    , 内容简介, 《LoadRunner性能测试巧匠训练营》是软件性能测试、安全测试、性能优化领域的开创性著作,三位作者在软件测试领域有多年一线工作经验,业内多位测试专家给予了高度评价。它具有多项突破性创新:, 在技术...

Global site tag (gtag.js) - Google Analytics