• 0
  • 0
分享
  • 如何使用Jmeter,看完这本指南你就知道了——软件测试圈
  • 彩霞红红 2024-08-16 16:12:47 字数 4071 阅读 1334 收藏 0

  序言

  由于公司在来年需要进行压力测试,所以也就借节假日的机会来学习一下压力测试的步骤,由于本人的学习时间比较短,希望各位大神朋友们能够多多的谅解并指正在下的错误,在此仅表敬意。

  适应人群

  1、初入门的压力测试工程师。

  2、为入门但是打算在软件测试方面发展的同学。

  3、对软件测试有浓厚的兴趣的人。

  压力测试初窥探

  压力测试顾名思义就是通过模拟指定的用户数量同时访问网站从而达到对网站进行施压,进而测试出网站在高并发问题上的性能优势劣势以及应对DDOS攻击的防护能力,这也是考验一个网站的健壮性的一个特点(本人认为的),目前主流的压力测试工具有Jmeter、RoadRunner,其中RoadRunner是有惠普公司开发的一款非开源的商业软件,在性能测试方面可以说是市面上最牛的测试工具,但是由于其使用需要收费,对于很多自营公司但是资金又不是十分的充裕来说,这样一笔费用确实比较难让人接受,所以在此我就推荐大家使用另外一款压力测试工具Jmeter,其在测试方面虽然相比于RoadRunner来说还是有很多的不足但是由于Jmeter是开源的,而且基本上可以完成公司正常的测试要求,所以Jmeter这一款软件才是我认为的最佳的压力测试工具。

  Jmeter软件的安装

  Jmeter软件是纯JAVA开发的软件,所以需要配置JAVA的运行环境才能够运行。

  环境安装完成后再命令行中运行中直接运行命令java,出现下面的内容即为安装成功。

18-1.jpg

  安装成功后直接打开bin目录下面的jmeter.bat文件,初次打开可能会久一点,请耐性等候。

  Jmeter的几个常见的概念

  1、测试计划,所有的测试工作都要基于测试计划来进行,一个测试项目中就只能存在一个的测试计划,测试计划在整个项目中充当的是一个全局设置的作用,这样也就不难解释为什么一个项目中就只能有一个测试计划。

  2、线程组,线程组顾名思义也就是相当于很多线程的一个集合,在项目中可以有多个的线程组,线程组在项目中主要是集合对一个对象进行测试的线程,比如说你想测试A网站和B网站,这个时候你就可以通过创建两个线程组来完成这个任务。

  3、HTTP请求,HTTP请求的原理是通过创建HTTP的多条请求,从而达到测试网站性能的作用,HTTP请求也是压力测试中最为常见的,其他的还有数据库测试、FTP测试等。

  好了,在这里就不多说了这些概念了,接下来就来进行一个简单的应用,其他的概念会在下面提到。

  Jmeter的简单应用

  Jmeter最为大家所认识的是它在对网站性能上的测试,所以就从这个开始介绍。

  任务:模拟5个用户同时访问,并且访问的时间要在2秒内结束,目标网站是http://www.cnblogs.com/st-leslie/

  分析:模拟5个用户其实说白了也就是模拟发送五条HTTP请求,这个相信大家都应该知道的吧,不解释了。

  开始步骤:

  1、打开Jmeter,并将测试计划命名为FirstDemo,如下图所示:

18-2.jpg

  2、测试计划创建完成下一步是创建线程组,线程组中主要有线程数、Ramp-Up Period、循环次数,调度器下面我们就来对这几个参数简单的介绍一下

  线程数:线程数相当于要虚拟的用户

  Ramp-Up Period:相当于是线程所用的首次循环的时间范围,后面会进行详细的解释

  循环次数:用户循环的次数,循环次数为永远默认不勾选,这个的主要好处是用来绘制图标图标所用,后面进行详细解释

  调度器:调度器主要是用来设定特定时间运行所用的

  根据本次的测试任务要求,线程数我们设置为5,Ramp-Up Perod我们设置为2,循环次数设置为1,如下图所示:

18-3.jpg

  3、线程组创建完成下面就来介绍一下最核心的部分,创建HTTP请求,HTTP请求的创建流程是:线程组=>添加=>Sampler(取样器)=>HTTP的请求,下面是HTTP请求的主要参数,其他的参数比较简单就不做介绍,相信你读者都会懂的。

  服务器名称或IP:这里指的是你要访问的目标主机的域名。

  注意:在输入的时候切记不要将"http://"输入其中这样jmeter会出错,直接写WWW即可,本题也就是输入http://www.cnblogs.com/st-leslie/

  端口号:默认的HTTP的端口号是80端口,这个默认的端口号可以不填。

  协议:指的是数据传输协议,一般我们填写的是HTTP协议。

  方法:提交信息的方法,一般我们常见的是GET,POST方法。

  路径:指的是发生错误所要重定向的URL地址或者本地localhost地址。

  同请求一起发送参数:这个参数相当于GET或者是POST方法提交的一些用户的自定义信息,这个参数除了可以接受直接设置,也可以使用CSV进行设置。

  同请求一起发送文件:这个的使用方法跟上面的相似就不介绍了。

  其他的一些参数比较少用到,一般不设置。

  将HTTP请求设置为如下图:

18-4.jpg

  4、好了,基本上已经完成了测试的搭建,现在可以直接的运行,运行的快捷键是Ctrl+R,也可以使用下面的按钮。

18-5.jpg

  但是你会发现这样运行之后你什么现象都没有看到,这是正常的,因为这样虽然理论上已经搭建完成但是缺少了一个监视器,所以你是没有办法查看结果的,其中监视器的位置是在添加=>监视器下面。常见的监视器有:聚合报告、用表格查看结果、查看结果树、图形结果。

  聚合报告:我们能够从聚合报告中获取相关的测试结果,这个也是我们分析结果的主要依据,这个显示的是同一HTTP请求。

  用表格查看结果:通过表格的形式将结果呈现,从这里我们可以看到每次HTTP请求发送的情况,相比于聚合报告如果同一个请求发送给多次聚合报告是不会记录的,但是用表格查看结果是会将其进行记录。

  查看结果树:这个跟表格查看结果有点相似,但是比起根据有详细的发送请求的信息,以及返回的结果可以查看。

  图形结果:这个顾名思义地球人都懂。

  这里的监视器的用法都是一样的,我们就以聚合报告为例,为HTTP请求添加聚合报告,其他的监视器的使用方法基本相同。

  层级关系如下:J

18-6.jpg

  好了,这样便是真正的大功告成了,运行结果如下:

18-7.jpg

  参数说明:

  1、Label:HTTP请求的名称, 这里是采用默认的名称。

  2、#Samples:这个是指,采集器的数量,计算公式是:线程数*循环次数。

  3、这些样本中HTTP的平均时间。

  4、样本的中位数时间,本题中的时间是从大到小排列的第3位,其中Average和Median比较相近,这个也反映了这组请求的时间起伏不大。

  5、90%Line:指的不是Average*100%*90%,而是假如有10个数,那么我们去的就是百分之90的位置的数,也就是从小到大排列的第9位。

  6、Throughout:这个也就是我们常说的吞吐量,主要是用来衡量网站性能的关键指标,一个网站的吞吐量越高意味着性能越强。

  7、其他的参数是最小时间、最大时间、出错率、流量查看。

  实践经验篇

  提升篇说白了就是一些本人在练习的时候遇到的一些特殊情况,在此分享给大家。

  正如上面所说的我们可以把聚合报告放在HTTP请求目录的下面,但是不知道有没有人跟我想的是一样的,就是聚合报告可不可以放在线程组层级的下面,下面我们就来验证这个说法,如下图所示:

18-8.jpg

  从上图我们可以发现,这两个层级关系都是一样的(虽然里面的数据不同,但是这些可能会受到网络流量等其他的一些网络环境所影响),那聚合报告(监视器)到底与HTTP请求之间的关系是什么呢?这里我们可以先猜测然后进行验证,我们猜测监视器的作用范围是监视同级以下的Samples,现在我们就来验证,如下图所示:

18-9.jpg

  聚合报告的结果是聚合报告1

18-10.jpg

  聚合报告2

18-11.jpg

  聚合报告3

18-12.jpg

  由此可以看出,聚合报告1=聚合报告+聚合报告3。

  下面我们就来谈谈并发的问题,如上面所示,我们一般人会以为只要把时间设置为Ramp-Up Period=0的时候就一起发送的,其实并不然,下面我们就来举例看看Ramp-Up Period这个是怎么一回事,先清除所有的测试内容,然后在HTTP请求的下面添加用表格查看结果,如图所示:

18-13.jpg

  我们可以从红色的框内发现,2s指的是所有线程一次循环的时间是在两秒钟以内,但是0s就不是这样的效果了,这个有谁知道请留言一下,大家学习学习。

  好了,怎么实现真正意义上的同时并发呢?这个其实我们可以引入Synchronizing Timer定时器,我们只要在Number of Simulated Users to Group by选项中设置并发数便可以了,但是这个并发数一定要小于线程数要不然就不会发生触发,下面我们就来看看这个的运行情况。

  看到了吗?HTTP请求中的Samples不是一条一条加上去的,而是一下子就5条Samples同时出现。

  如上面所说的,测试计划其实就是提供一个全局设置,但是在Jmeter中还有一个可以提供全局设置的地方就是在前置处理器下面的用户参数, 如下图所示,我们将80端口号用port变量来代替。

18-14.jpg

  然后将HTTP请求改为下图所示:

18-15.jpg

  引用的方法是${变量名},这个方法不仅使用与端口号的设置,其他的设置也是相同的道理

  这个设置你也可以在测试计划中添加效果都是一样的。

  对了,可能有些读者以前是熟悉RoadRunner测试工具的,会认为RoadRunner测试工具有比较直观的图形化可以进行比较,其实这个在Jmeter中也是有的,你只要在监视器中添加图形结果即可以看到,但是这个图形结果一般我们会将循环次数设置为永远,循环次数太少就没有什么比较的意义。

  我们就以循环5次和永远来进行比较一下。

  循环5次:

18-16.jpg

  循环永远

18-17.jpg

  哈哈,是不是直观了好多呢(笑点低)~


作者:鱼鱼说测试    

来源:http://www.51testing.com/html/78/n-7797678.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 跟大家说说写好一份简历的三个核心点——技能、技能的结果、技能的价值。请好好琢磨这三个短语,如果有需要,记在你的小本本上,或者收藏本文,随时回看和品琢。1、技能。即,你掌握了哪些技术,具备哪些能力。此点,几乎每个人会写。你只需注意技能匹配度的问题——招聘企业的要求是什么,他们需要候选人具备什么样的技能。如果是投递心仪的公司,更要做好简历技能匹配,别拿一份简历广撒网。我做hr的朋友与我讲过,他最头痛的事,便是招聘需求写着要求职者具备x能力,并且有企业实操,可仍旧有很多不满条件的简历投进来,哪怕是加上必须具备这样的词眼,也没啥效果。而他的做法,也很简单:哼一句,右滑退出……你可能会说,咱就广撒网,说...
            0 0 1196
            分享
          •   在公司中测试人员最基本的职责就是保证项目的质量,尽可能把bug都在上线前找出来。但是实际工作时由于各种各样的原因,不可避免地有些问题会在上线后被发现。那么如何能够快速地处理这些线上的问题,降低bug的影响范围,减少对公司的业务或者经济损失呢?在这里,我们提供给大家一个基本的处理线上问题的思路。  1.评估bug的影响范围  2.解决线上问题  3.回溯线上问题  一. 第一步 —— 评估bug的影响范围  评估bug的影响范围是处理线上bug的第一步,通常需要根据评估的结果来决定下一步的处理方案。  影响范围要从哪些方面进行评估呢?  (1)分析bug影响的用户数量  检查bug是否是业务...
            0 0 2157
            分享
          •   简介  Newman 是 Postman 推出的一个 nodejs 库,直接来说就是 Postman 的json文件可以在命令行执行的插件。  Newman 可以方便地运行和测试集合,并用之构造接口自动化测试和持续集成。  安装  安装需要通过 npm 命令来完成,可以直接安装 nodejs,配置环境变量来完成。  在控制台中运行命令:npm install -g newman   验证newman安装成功,使用命令: newman --version  使用  newman 官网帮助文档:https://www.npmjs.com/package/newman   运...
            3 4 1846
            分享
          •   一、概述  LOADRUNNER是Web应用性能测试常用的一个工具,它可以录制浏览器操作,并模拟大量用户并发访问系统。对于文件上传、文件导入的功能,在用LOADRUNNER录制生成脚本时,经常会出现一些问题,导致无法顺利进行测试。本文以某系统为例,介绍了导入文件脚本生成过程中遇到的问题及解决方案,对于其它系统的导入功能,可以参考借鉴。  二、问题及解决方案  1.同样的导入功能,却录制出不同的脚本,原因在哪?  下面两段脚本都是在录制导入功能自动生成的,但脚本却相差很多:  脚本一:  脚本二:  脚本一,将导入文件的二进制信息录制了出来,这样的脚本无法进行参数化,而且导入文件的内容不能变...
            0 0 1290
            分享
          •   京东物流今日发文称,将陆续投放循环包装 150 万个循环快递包装,推广循环包装的共享回收模式,至 2024 年底,仅这一举措将减少纸箱、泡沫箱、塑料袋等一次性包装超 1 亿个。  京东物流方面称,将重点投放循环保温周转箱和青流箱(堆叠结构中空板箱),并探索循环快递包装袋在特定场景中应用。  循环包装将采用标准化尺寸,取消品牌元素印刷,有助于行业内实现资源共享、模式共用。京东物流将在全国超 30 个城市规模化投放循环包装,在京东快递站点的个人寄递和商家揽收中使用循环包装进行打包,并优先用于同城寄递业务。同时,京东物流还将联合多家品牌商,在工厂生产、加工环节使用循环箱进行包装,力求将商品包装与...
            0 0 931
            分享
      • 51testing软件测试圈微信