jmeter学习指南

  1. jmeter入门
    1.1. jmeter简介
    1.2. jmeter安装
  2. jmeter基本使用
    2.1. jmeter基本组件介绍
    2.2. 参数化
  3. jmeter接口测试
    3.1. jmeter接口测试-简介
    3.2. jmeter接口测试-功能测试
    3.3. jmeter接口测试-性能测试
  4. jmeter数据库测试-压力测试
  5. jenkins+maven+jmeter
    5.1. jenkins简介
    5.2. maven简介
    5.3. jenkins+maven+jmeter环境搭建
    5.4. jenkins+maven+jmeter实战

1. JMeter入门

1.1 JMeter简介

Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试CS结构的软件。同时也可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlets,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions(断言)来验证你的程序返回来所期待的值。为了更高的适应性,JMeter允许你使用常规表达式来创建这些assertions。
jmeter的未来:随着开发人员借助它的可嵌入的结构,希望看到JMeter的能力也随之快速的被扩大。更进一步的主要发展目标是把JMeter在没有减弱他的负载测试的能力的同时尽可能的做成最有效的回归测试工具。

1.2 JMeter安装

安装环境要求:
java版本

  • JMeter要求充分满足JVM1.3或更高。
    操作系统[JMeter可以在当前任何一个已经部署来Java的操作系统上运行]
  • Unix
  • Windows
  • Open VMS Alpha 7.3+

安装步骤

  • 安装环境:win7
  • 安装包准备:1) JDK安装包。2) JMeter安装包

安装过程

  • JDK的安装与配置(不多介绍)
  • JMeter的安装:
    ** 1) 解压JMeter安装包到响应目录,如:解压到D:\apache- jmeter。
    ** 2) 配置jmeter环境变量,新建环境变量名"JMETER_HOME", 变量值"D:\apache-jmeter"
    ** 3) 在系统变量"CLASSPATH"添加%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;%JMETER_HOME%/lib/logkit-2.0.jar配置完成。
    ** 4) 命令行运行jmeter即可(或直接找到D:\apache-jmeter\bin下的jmeter.bat运行)

2 JMeter基本使用

2.1 JMeter基本组件介绍

JMeter主要组件

  • 测试计划(Test Plan)
  • 线程序(Thread Group)
  • 配置元件(Configuration)
  • 逻辑控制器(Login Controller)
  • 取样器(Sampler)
  • 断言(Assertion)
  • 监听器(monitor)

测试计划
测试计划是使用jmeter进行测试的起点,一个测试计划描述了一系列jmeter运行时要执行的步骤。一个完整的测试计划包含一个或多个线程组,逻辑控制,曲阳发生控制,监听器,定时器,断言和配置元件。

测试计划

线程组
线程组

  • 线程组:测试里每个任务都要线程去处理,所有任务必须在线程组下面创建。
  • 线程数:设置发送请求的用户数。
  • Ramp-Up Period(in seconds): 创建完所有线程的时间,防止对服务器有太大的负载。[如果选择了10个线程,并且ramp-up是2秒,那么JMeter将用2秒使10个线程启动并运行。每个线程将在前一个线程启动后0.2秒后启动。如果将此值设置为0,则表示并发,也就是所有线程在同一时间启动。Ramp-up需要足够长的时间来避免在开始测试时产生太大的负载,并且有足够短的时间使最后一个线程在第一个线程结束之前运行]
  • 循环次数:请求的重复次数。[如果次数为1,那么JMeter在停止前只执行测试计划一次]
  • 持续时间:测试计划持续时间
  • 启动延迟:测试计划延迟启动时间
    配置元件
    配置元件
  • 配置元件维护sampler需要的配置信息,配置元件不发送请求(除了HTTP代理服务器例外),可以根据实际需要添加或修改请求的内容。
  • 配置元件"用户定义的变量"会在测试的初始阶段执行(无论它处于测试树的哪个位置)
  • 配置元件仅对其所在的测试书分支有效
    逻辑控制器
  • 逻辑控制器可以控制jmeter发送请求的测试逻辑,它与sampler结合使用可以模拟复杂的请求序列
  • 循环控制器:设置请求的循环次数或永远循环,可以用于压力测试
  • 简单控制器:测试用例顺序执行
  • 事务控制器:将多个请求放在同一个事务中。Gegerate parent sample,则聚合报告中只显示事务控制器的数据,不会显示其中的各个请求的数据,反之则全部显示。
    逻辑控制器

    取样器(真正的http请求)
    取样器
  • 可以认为所有的测试任务都由取样器成单,如:HTTP请求、FTP请求、JAVA请求等等。
  • 取样器告诉jmeter发送一个请求到指定的服务器,并等待服务器的请求。取样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变取样器运行的重复册书。
    断言
  • 断言:对取样器返回的请求结果给出结果作出判断,是否正确。
  • 用户可以使用断言来检查服务器获得的响应内容,用来判断请求响应的结果是否如用户所期待。
  • 断言会影响作用域的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项
  • 断言中设置要测试的模式,则会对响应的内容(如http请求后,服务器返回的内容)进行与字符串进行匹配,如果返回来内容包括了字符串,则认为该测试通过,否则就是失败。一般通过添加监听响应断言。
    断言

    监听器
  • 监听器:负责收集测试结果,支持将结果数据写入文件。
  • 监听范围:当前节点层以及当前节点的子节点(直至叶子节点),即监听器可以监听当前层以及比它更低的层。
  • 常用监听器:查看结果树、聚合报告、徒刑结果、用表格查看结果
    • 查看结果树:显示取样器请求和响应的细节,包括消息头、请求的数据、响应的数据

      • 取样器结果:显示的是取样器相关参数(客户端参数与响应参数)
      • 请求:发送请求的具体值
      • 响应数据:服务器返回的响应参数
    • 聚合报告:


      聚合报告
      • Label:取样器名称
      • Samples:运行过程中一共发出了多少个请求,一般来说是其值=线程数*循环次数(前提:测试按计划跑完,其中没有异常结束的线程)。总体samples是各请求samples之和。
      • Average:平均响应时间
      • Median:响应时间中间值
      • 90%Line:响应时间90%线(即90%的用户处于这个值)
      • Min/Max:最小/最大的响应时间
      • Error%:出错率(出错的Request数/所有的Request数)
      • Throughput:吞吐量,每秒/每分钟(具体看/后面的单位)处理的Request数
      • KB/sec:每秒从服务器接收到的数据
    • 图形结果:


      图形结果
      • 样本数据:发出去的请求数
      • 最新样本:最近一个Request的响应时间
      • 平均:所有Request响应时间的平均值
      • 偏离:所有Request响应时间的偏差
      • 吞吐量:单位时间内(一般是1分钟)chuli Request的个数
      • 中值:所有Request响应时间的中间值。
    • 表格查看结果:


      表格结果
      • 显示每一个请求的信息,包括发起请求的线程,开始时间,请求响应时间,请求字节。

2.2 参数化

参数化数据,用记事本写参数并保存为.dat格式的文件,编码问题在使用CSV Data Set Config参数化时要求比较严格,记事本另存为修改编码为UTF-8,注意参数要一一对应,中间用都好隔开


参数化
这里介绍两种参数化的方式:

  • 函数助手
  • CSV Data Set Config
    借助函数助手的方式
  • 点击菜单栏“选项”---->函数助手对话框,如下图(CVS文件列号是从0开始的,第一列0,第二列1...)


  • 复制生成的参数化函数,参数化我们需要参数化的字段,这里是对phone和empNo参数化,phone的列号为0,empNo列号为1



    **借助JMeter中的配置元件(CSV Data Set Config)

  • 选中线程组,点击右键,添加-配置元件-CSV Data Set Config


    CVS 数据文件设置
  • 使用刚才定义好的变量

引用:wuyan.gitbooks

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 主要文体来自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano阅读 10,980评论 3 27
  • JMeter有两种类型的控制器:取样器和逻辑控制器。 取样器指示JMeter向一个服务器发送请求。例如,如果你想让...
    七月尾巴_葵花阅读 1,671评论 0 3
  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    燕京博士阅读 4,163评论 0 16
  • 梦醒十分,思绪悠悠,我在弥雾的回忆中踉跄了一下,又一下,只记得脑海中的浪涛吐又复收,忘记了什么?记忆好似梗在咽喉,...
    LR逸凡阅读 276评论 0 0
  • config配置类: 1.provide Plugin 用途:$出现就会自动加载模块;$默认为jquery的exp...
    折梅踏雪阅读 237评论 0 0