JMeter性能测试介绍学习一

上一节中,我们了解了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!到此一次完整的性能测试结束,如果你从中有所收获,推荐一记~!

时间: 2024-11-12 08:10:48

JMeter性能测试介绍学习一的相关文章

Jmeter性能测试视频教程

Jmeter性能测试实战视频教程 课程观看地址:http://www.xuetuwuyou.com/course/39 课程出自学途无忧网:http://www.xuetuwuyou.com 本课程从实战角度,由浅入深讲解Jmeter性能测试,学习本课程需要具备拥有一定性能测试基础知识. 课时1:认识jmeter 课时2:jmeter常用功能介绍 课时3:jmeter两种脚本录制方法 课时4:自动化测试badboy实战 课时5:jmeter性能测试小小的实战 课时6:jmeter元件作用域与执行

我的新课--快速上手Jmeter性能测试工具正在筹划中

大家好,感谢大家一直以来对我的支持,新课快速上手Jmeter性能测试工具正在筹划中,大纲如下: 随着软件性能测试行业的崛起,各种性能测试工具也随之层出不穷,各具特色.同时,开源的趋势不可阻挡,如何使用开源免费的性能测试工具完成相关测试工作是很多企业正在考虑的问题.本套课程正是基于以上需求和现状,选择目前市面上最流行的开源性能测试工具Jmeter作为阐述对象,带领大家从零开始.步步为营,以掌握Jmeter的基本概念并熟练使用Jmeter进行测试为目标,快速而高效的学习和使用Jmeter.俗话说,授

Jmeter零起点学习

什么是JMeter Apache JMeter是一个开源的Java桌面软件.设计的目的就是进行C/S架构软件的负载测试.随着发展,有很多人也用来进行一些静态资源或者动态资源的性能测试.可以支持的测试对象有:静态文件,Java Servlets, CGI scripts,Java 对象,数据库,FTP服务器等等. JMeter的原理就是模拟产生一个大数据压力包,然后使用不同的负载测试方法去研究server,object或者network的健壮性以及分析在过载情况下的性能指标. 当然,对于一些简单的

JMeter性能测试3.0时代之-多维度的图形化HTML报告

在上一篇博客JMeter性能测试3.0时代之-全新JMeter插件管理中我说会写真正的JMeter 3.0新特性,时隔两周,总算在这个周末,暂停其他安排,来继续这个未完成的系列.本文主要介绍JMeter3.0引入的新特性:Dashboard Report,图形化的HTML格式多维度测试报告.借助这个特性,可以很大程度上降低我们搭建基于JMeter的性能测试平台时,在结果展示上的难度,将更多的经历放在后端的平台功能而不是去临时学习前端图表库. 一.为什么谈这个新特性 在JMeter3.0之前,官方

JMeter 性能测试进阶实战

课程简介 本课程制作的主要目的是为了让大家快速上手 JMeter,期间穿插了大量主流项目中用到的技术,以及结合当今主流微服务技术提供了测试 Dubbo 接口.Java 工程技术具体实施方案,注重实践.注意引导测试思维.拒绝枯燥的知识点罗列.善于用实例展示实践过程.学完本课程,可以快速录制.开发.调试性能脚本,建立测试场景并且可以进行性能测试分析.特色如下: 覆盖 JMeter 的每一个细节: 介绍了 JMeter 在性能.自动化的双领域应用: 有完善的性能测试体系的展现: 为 Java.MySQ

jmeter性能测试基础实战

一.前言 “纸上得来终觉浅,绝知此事要躬行.”学习了理论知识,要实操起来.本文主要介绍jmeter性能测试基础实战. 二.Jmeter 性能测试基础实战 1.测试需求:测试20个用户访问https://www.cnblogs.com/huainanhai/ 在负载达到30 QPS时的平均响应时间. QPS: Query Per Second每秒查询率:是一台查询服务器每秒能够处理的查询次数.在因特网上,作为域名系统服务器的性能经常用每秒查询率来衡量. 2.测试步骤: 第一步:添加线程组 线程组主

Jmeter性能测试从入门到精通

课程观看地址:http://www.xuetuwuyou.com/course/251课程出自学途无忧网:http://www.xuetuwuyou.com 课程介绍全程实战,每个知识点通过实际项目演练讲解理论实践结合,既会做,又知道为什么这样做讲解时同其他工具做对比,加深理解,了解区别分享技巧,用起来事半功倍从基础讲起,小白也能接受 课程目标熟练掌握 jmeter 工具 熟练使用 jmeter进行脚本开发 熟练使用 jmeter进行接口测试 熟练使用 jmeter 进行性能测试 熟练使用抓包工

[转]PHP之APC缓存详细介绍(学习整理)

From : http://www.2cto.com/kf/201210/160140.html 1.APC缓存简介APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓存.系统缓存它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记.如果未过期,则使用缓存的中间代码运行.默认缓存 3600s(一小时).但是这样仍会浪费大量CPU时间.因此可以在

个人介绍&学习决心

我叫兰红,2008年毕业于中国石油大学通信工程专业,毕业后开始从事软件工程师的工作.一直到现在,先后做过.net, C#,Java软件开发.之后从事运维的工作,断断续续有3,4年的运维经验了.主要是软件方面的运维工作,服务器管理,项目部署发布这类.linux使用方面算是比较熟练的了.数据库方面有涉猎,mysql,oracle等,docker有安装使用经验,给公司做了docker的部署.也了解了目前在云服务,云计算,或者说云架构这类技术比较前沿,比较感兴趣,了解些皮毛,想要真正运用来工作,还有欠缺