压力测试以软件响应速度为测试目标,尤其是在较短时间内大量并发用户的同时访问时,软件的性能和抗压能力。

  JMeter是一款开源的压力测试工具,目前最新Release版本是2.3.4,它不仅可以测试Web服务器,还可以测试数据库、JMS、Web Service、LDAP、JUNIT 等多种对象的测试能力。下载地址:http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

  下面简单介绍一下JMeter。

  • 测试计划是测试的起点,其他所有组件的容器。
  • 线程组是用来模拟用户并发的组件。JMeter的每个任务都是用线程来处理的。线程组主要有三个属性,线程数、Ramp-up Period和循环次数。线程数就是并发的数量,Ramp-up Period表示在多长时间内创建线程数中定义的所有线程。
  • 逻辑控制器可以组织取样器,做出复杂的测试用的请求。
  • 配置元件中主要配置取样器中所需要的配置。
  • 定时器设置请求间的时间间隔。
  • 前置处理器一般用来修改请求(Request)。
  • Sampler(取样器),主要的执行组件。每一个取样器都可以被监听器监听,并生成测试结果。
  • 后置处理器一般用来出来返回的数据(Response)。
  • 断言,判断取样器是否正常工作
  • 监听器,收集整理测试结果,并可以指定格式生成XML、CSV等形式的文件。

  工作台中可以添加非测试元件,其中一个最重要的就是HTTP代理服务器。

  HTTP代理服务器可以用来录制测试脚本。将浏览器的代理服务器设置为127.0.0.1:8080,然后启动JMeter的HTTP代理服务器,就可以录制在浏览器中进行的操作。HTTP代理服务器可以设置包含模式和排除模式,我一般用排除模式来排除一些CSS、JS、GIF、PNG之类的。

  JMeter的基本元件就是这样,这些元件具体怎么运用请继续看下文。

JMeter的中文资料不是很多,我Google了一下,发现基本上没有介绍如何一步步使用的资料。我这里就先整理一下。

  大概就是以下几个方面:

  1. 录制脚本
  2. 使用用户自定义参数
  3. 使用控制器
  4. 使用定时器
  5. 使用前置后置处理器
  6. 使用监听器

  我也只是入门级别,所以写出来的东西可能比较简单,适合新手参考使用。

  这次就介绍使用HTTP代理服务器进行脚本的录制。

  JMeter可以录制脚本,也可使用别的工具,如Badboy录制适合JMeter使用的脚本,我们默认使用JMeter自带的功能。

  打开JMeter,在工作台节点点击右键,添加 >> 非测试元件 >> HTTP代理服务器,使用默认设置即可。

  然后设置浏览器,把代理服务器设置为127.0.0.1:8080。

 

然后启动HTTP代理服务器,以打开Google为例,它生成的脚本如下:

  它把许多JS、CSS、PNG、GIF的路径都录制了进来,而这些对于测试脚本是没有用处的,我们可以在HTTP代理服务器的排除模式设置,不记录这些。

  设置完排除模式,重新启动HTTP代理服务器,再次打开Google的首页,发现录制完的脚本简洁多了。

  以搜索“JMeter”为例,录制完的脚本是这样的:

  在一些用到JS很多的网页中,JS的动作也会被录制进来,像其中的/complete/search是输入提示框JS的动作,可以删掉的。

  JMeter的脚本录制就是这样,另外还可以利用别的工具,例如Badboy,它的使用更加简单,具体可以参考官方网站http://www.badboy.com.au/.

  最后,在设置HTTP代理服务器的时候,有两个地方需要注意:

  要确认8080端口是否有冲突,被别的程序,例如Web服务器占用。如果有冲突,可以更改为别的没有冲突的端口

  JMeter HTTP代理服务器的端口和浏览器设置的端口要一致。

如何在JMeter中使用外部数据,JMeter也提供了一系列元件,大多包含在配置元件中,例如:CSV Data Set Config,Random Variable,用户定义的变量等,另外,前置处理器 >> 用户参数也可以使用自定义的变量。

  我这里着重介绍用户参数和CSV Data Set Config的使用方法。

  用户参数可以给测试计划或者测试计划中的每个线程设置参数,如果设置的参数比线程数少的话,这些参数就会被重复利用。

  继续以Google为例,如果你想用不同的关键字来搜索,可以在用户参数中作如下设置:

  1. 右键单击[线程组],添加 >> 前置处理器 >> 用户参数,在用户参数元件中添加5个用户。然后再添加一个变量[keyword],5个用户对应的值可以随便填写。

  2. 设置[线程组]的线程数为5

  3. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}

  用户参数也可以读取CSV文件,上面的例子如果改为读取CSV的话,则需要

  1. 在ApacheJMeter.jar的同级目录下新建一个文件,keyword.txt,其中内容是每一行一个关键字

  2. 设置[线程组]的线程数为5

3. 如下图设置用户和变量,名称为keyword,用户_1是${_StringFromFile(keyword.txt)}

  4. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}

  做完上述操作后,点击运行 >> 启动,就会看到JMeter右上角的线程数从0升到5,执行完后,又变成0

  注意点:在一般情况下,线程数和用户参数中定义的变量数是相同的,除非你有特殊的需要

  我一般使用用户参数定义一些很重要的常量,像读取大规模数据这样的,我们可以使用CSV Data Set Config。CSV Data Set Config默认是读取指定的CSV文件中的数据,每个线程会按照顺序使用其中一条数据,如果线程数比实际数据多的话,数据则按顺序会被重复利用。

  1. 右键单击[线程组],添加 >> 配置元件 >> CSV Data Set Config,设置Filename为CSV文件的存放路径,Variable Names就是变量名,设置为keyword,Delimiter一般就是逗号了,四个选框一般就是按照下图设置即可

  2. 设置[线程组]的循环次数为永远,线程数为1

  3. 修改脚本中名称为/search的请求。把名称为[q]的字段的值修改为${keyword}

  做完上述操作后,点击运行 >> 启动,就会看到JMeter右上角的线程数从0升到1,执行完后,又变成0

  当然了,我的例子比较简单,有一个稍微复杂一点,而且经常用到的情况就是用户名、密码的组合。在大数据量测试的时候,因为涉及到缓存等的问题,不可能都用同一个用户来执行操作,所以要用很多用户来执行,这个时候CSV Data Set Config就很有用;或者是在进行数据插入的时候,也是很有用的。

  怎样利用外部数据已经晓得了,但是怎样确认每个线程执行的都是我们定义好的关键字呢?

  有多种方法,可以使用监听器,也可以使用断言,这两种元件留到以后再做介绍。

【转】利用JMeter进行压力测试的更多相关文章

  1. 学习使用Jmeter做压力测试(一)--压力测试基本概念

    学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...

  2. linux上实现jmeter分布式压力测试(转)

    摘要:最近根据公司工作的需求,学习了一些压力测试的知识,目前,公司使用的是jmeter进行压力测试.下面就记录下近期的学习.我想将这次的博文分成三个部分:1.开始测试前的准备(测试环境的搭建)2.在一 ...

  3. 使用JMeter做压力测试

    使用JMeter做压力测试 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat ...

  4. 【JMeter】如何用JMeter进行压力测试

    [JMeter]如何用JMeter进行压力测试(调试脚本已再猪猪微信的收藏中进行了收藏哦,名字叫exam-wow.jmx) 一.用badboy录制压测过程形成脚本另存为jmeter格式文档. 二.JM ...

  5. 如何使用Jmeter进行压力测试

    Jmeter做压力测试的操作:Jmeter不仅可以做接口测试,还可以做压力测试,下面介绍介绍如何jmeter进行简单地压力测试.具体步骤如下: 第一步:添加请求,这里不介绍具体步骤,详见(https: ...

  6. Jmeter服务器压力测试使用说明

    Jmeter服务器压力测试使用说明 Apache JMeter是Apache组织开发的基于Java的压力测试工具. 官方地址:http://jmeter.apache.org/download_jme ...

  7. linux环境下使用jmeter进行压力测试

    linux环境下使用jmeter进行压力测试 linux环境下使用就meter进行压力测试: linux环境部署: 在Linux服务器先安装jdk: 2.以jdk-8u172-linux-x64.ta ...

  8. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  9. 使用JMeter进行压力测试

    使用JMeter进行压力测试(基础篇) 1.启动Jmeter 双击图中所示文件出现如下图所示即启动成功 2 新建测试计划 File------>new 2.1右键新建线程组 add-----&g ...

随机推荐

  1. C# 设计模式巩固笔记 - 建造者模式

    前言 写给自己-贵在坚持.建造者模式不复杂,但是想个形象的例子好难. 介绍-建造者模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 实现 建造者模式主要是应对复杂 ...

  2. 1: 介绍Prism5.0(纯汉语版)

      Prism帮助更简单的设计丰富,灵活,易维护的WPF桌面程序.其中使用MVVM,组合式视图,事件聚合等设计模式.这很符合一些重要的架构设计及原则.帮助你创建一个模块化的应用程序——可以独立开发松耦 ...

  3. SpringXML方式配置bean的自动装配autowire

    Spring的自动装配,也就是定义bean的时候让spring自动帮你匹配到所需的bean,而不需要我们自己指定了. 例如: User实体类里面有一个属性role 1 2 3 4 5 6 7 publ ...

  4. web运行异常解决

    端口占用: 在dos下,输入  netstat   -ano|findstr  8080 //说明:查看占用8080端口的进程 显示占用端口的进程 taskkill  /pid  6856  /f   ...

  5. 使用CGLib完成代理模式遇到的错误

    错误堆栈信息: Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type ...

  6. java语言基础-变量

    一丶变量的基本概念 1.什么是变量 (1).内存中的一个存储区域 (2).该区域有自己的名称(变量名),和类型(数据类型) (3.)该区域的数据可以在同一类型范围内不断变化(定义变量的主要目的是因为数 ...

  7. L147 Low Cost Study Has High Impact Results For Premature Babies

    No one knows exactly why some babies are born prematurely(早产), but some of the smallest premature ba ...

  8. New Concept English there (7)

    27w/m Has it ever happened to you? Have you ever put your trousers in the washing machine and then r ...

  9. vueRouter中scrollBehavior实现滚动固定位置

    使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意: 这个功能只 ...

  10. Vim技能修炼教程(11) - 代码折叠

    上一讲我们是程序员篇的第一讲,关于代码跳转.代码跳转是一个付出很少收获很大的功能.这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠. 代码折叠 折叠的类型 折叠有下面几种类型: * Ma ...