JMeter性能测试基础 (1) - 安装及简单使用
Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试。JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域。
Apache jmeter 可以用于对静态资源的和动态资源(包括WebServices(SOAP/REST)、动态Web语言(PHP、Java、ASP.NET、文件、及其它内容)、Java对象、数据库及数据查询、FTP服务器等等)进行性能测试。它可以用于对服务器、集群,网络 或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
本篇文章主要介绍一下JMeter的安装及基本使用方法。
1.安装
JMeter的官方网址为http://jmeter.apache.org/
下载地址为http://jmeter.apache.org/download_jmeter.cgi
JMeter目前的最新版本为2.13,对应的Java版本需要至少为Java6。下载完成后,直接解压缩,在jmeter的bin目录下,找到jmeter.bat文件,双击运行

主界面如图所示

2.基础知识
程序运行以后,我们可以看到,JMeter是以测试计划的形式组织测试的。在测试计划上点击右键,选择“添加”,我们可以看到,JMeter主要包含了以下内容的组件:

线程组(Threads) - 代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,所有请求均需要被线程组包含。
测试片段(Test Fragment) - 测试片段是一种特殊类型的控制器,它在测试计划中与线程组同级。测试片段与线程组的区别在于:在一个测试计划中,线程组自身是会被执行的,而测试片段自身并不会被执行。只有当测试片段被一个模块控制器引用,或被包含在一个控制器中时,才会被执行。简单的说,我们可以将线程组理解为入口函数,将测试片段理解为私有函数,测试片段只有在被调用时,才会被执行。
配置元件 – 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
定时器 -定义请求之间的延迟间隔。
前置处理器、后置处理器 - 负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
断言 - 用来判断请求响应的结果是否如用户所期望的。它可以用来检查测试的有效性,隔离问题域,在确保功能正确的前提下执行压力测试。
监听器 - 负责收集测试结果,同时以多种方式进行显示。
我们先添加一个线程组,右键进行查看,线程组下包含了另外两个组件:

逻辑控制器 - 可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
采样器(Sampler) - 用于发送各种请求,并以该请求为基础,进行性能测试。
3.简单示例
下面我们以单一网址的并发访问为例,使用JMeter进行一个简单的性能测试。
1)建立线程组
在建立好测试计划后,首先我们建立一个线程组,并进行如下设置

其中,
线程数-表示JMeter将发起多少个线程进行目标访问
Ramp-Up Period – 表示JMeter将在多长时间(以秒为单位)内将这些线程发起完毕
循环次数 – 表示JMeter将对当前的线程组进行多少次循环访问
2)建立采样器(Sampler)
向线程组中添加一个Http请求的采样器

配置如下(JMeter的大量并发访问会被某些网站认定为恶意攻击而进行屏蔽,这里建议选用自己的网站或在localhost上进行操作)

3)添加监听器
这里我们添加一个“图形结果”和一个“用表格查看结果”。

4)运行测试,查看结果
运行测试,查看图形结果,我们可以看到所有访问的数据量、访问时间平均值、中值、访问的偏离量(访问时间与中值时间的差)、吞吐量。

查看表格结果,我们可以看到我们所发起的线程、开始时间、采样时间、状态(是否访问成功)、访问传输的数据量、访问延时、以及访问时间等内容。

5)结果分析
通过监听器获得的结果,可以进行导出,之后我们再对这些结果做进一步的数据分析,即可估算衡量我们网站的性能情况。
下一篇文章,将对如何使用变量对被访问url进行配置做介绍。
JMeter性能测试基础 (1) - 安装及简单使用的更多相关文章
- JMeter性能测试基础 (3) - 使用参数文件做搜索引擎性能对比
本篇文章主要对如何在JMeter中进行URL的参数进行配置进行介绍,通过CSV文件配置参数数据,对baidu.sogou.haosou进行搜索性能对比测试. 1.建立测试计划.线程组,并在线程组下添加 ...
- JMeter性能测试基础 (2) - 变量的使用
在使用JMeter进行性能测试时,一般情况下要保证样本容量尽可能大,这样才能得到一个比较合理的结果.也就是说,我们不能只对同一个URL进行多次访问,而是要对统一模块下尽可能多的URL进行访问,以取得相 ...
- JMeter性能测试基础 (4)-使用JMeter录制测试脚本
在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...
- Jmeter性能测试基础
压力测试 压力测试分两种场景:一种是单场景,压一个接口的:第二种是混合场景,多个有关联的接口.压测时间,一般场景都运行10-15分钟.如果是疲劳测试,可以压一天或一周,根据实际情况来定. 压测任务 ...
- JMeter各个基础组件简介
刚从LoadRunner转到JMeter,对JMeter的各种概念比较懵.在这里记录下.欢迎大家关注我的个人微信号:测试杂货铺. JMeter的各个功能都是它的组件来完成或实现的,下面来对JMeter ...
- Jmeter的好搭档Badboy的安装与简单使用
前提: Windows7 64位 Jdk 1.8 1.在官网上下载badboy并安装 网址:http://www.badboy.com.au/download/add 我下载的是最新的2.2.5这个 ...
- JMeter性能测试的基础知识和个人理解
JMeter性能测试的基础知识和个人理解 1. JMeter的简介 JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...
- Linux 性能测试工具 sysbench 的安装与简单使用
文章目录 Linux 性能测试工具 sysbench 的安装与简单使用 一 背景 二 实验环境 2.1 操作系统 2.2 其他配 ...
- Jmeter性能测试插件jpgc的安装
一.获取插件包 1.访问官网获取 官网地址:https://jmeter-plugins.org/install/Install/ 2.百度网盘下载 链接:https://pan.baidu.com/ ...
随机推荐
- 20145209刘一阳《JAVA程序设计》第八周课堂测试
第八周课堂测试 1.下面代码中共有(C)个线程? public class ThreadTest { public static void main(String args[]){ MyThread ...
- Redis学习之路(一)之缓存知识体系
转自:https://www.unixhot.com/page/cache 缓存分层 缓存分级 内容 内容简介/主要技术关键词 用户层 DNS 浏览器DNS缓存 Firefox默认60秒,HTML5的 ...
- [FJOI2015]火星商店问题
[FJOI2015]火星商店问题 神仙线段树分治...不过我不会. 这题用线段树套可持久化Trie还是能写的. 常数有点大,洛谷垫底水平. // luogu-judger-enable-o2 #inc ...
- noip2017普及题解
https://www.luogu.org/problemnew/show/3954 https://www.luogu.org/problemnew/show/3955 https://www.lu ...
- 菜鸟vimer成长记——第2.2章、visual模式
vi是没有可视模式的.然而大多数编辑软件都都是有可视模式.所以我猜测vim是几乎迫于无奈才有了visual模式. 个人建议,能不用就不用.这样能直接在头脑里处理好文本,锻炼文本处理能力,同时能转变过来 ...
- 如何用python获取文件中的某一行——python小技巧
很多人有的时候只需要获取文章中的固定的一行,那么我知道这一行,我需要怎么样去获取呢 可能会有人说读取这一行,如果这一行是已什么开头的就读出来, 其实还有一种办法,就是我知道文件的路径.知道我要取的行数 ...
- hdu1285确定比赛名次(拓扑排序+优先队列)
传送门 第一道拓扑排序题 每次删除入度为0的点,并输出 这题要求队名小的排前面,所以要用到重载的优先队列 #include<bits/stdc++.h> using namespace s ...
- 新手入门之——Ubuntu上的编辑器之神Vi / Vim
Ubuntu上的编辑器有gedit.vi.sublime等.gedit一般在没有其他编辑器时临时使用,大部分情况下,vi和sublime使用的比较多,Linux系统内置了vi和sublime,其中,s ...
- RabbitMQ入门:远程过程调用(RPC)
假如我们想要调用远程的一个方法或函数并等待执行结果,也就是我们通常说的远程过程调用(Remote Procedure Call).怎么办? 今天我们就用RabbitMQ来实现一个简单的RPC系统:客户 ...
- 如何判断Map中的key或value类型
在上班写工具类时,遇到了一个问题,将xml文件的节点都放入map容器中时,map的value也是一个map,导致取map的value时,需要判断这个value的数据类型,用到了一下说的这些知识: 对于 ...