1.JMeter讲解

1.JMeter是什么?

我这里引用一下百度百科的标准解释:JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

2.JMeter测试计划要素是什么?

要素一:一个脚本中测试计划只能有一个

要素二:一个测试计划中至少要有一个线程组

要素三:至少要有一个取样器

要素四:至少要有一个监听器

3.JMeter运行原理是什么?

在JMeter中我们是以线程的方式来运行的。JMeter是通过线程组来驱动多个线程(类似LoadRunner中的虚拟用户)运行脚本对被测试的服务器发起负载,每一个负载机上都可以运行多个线程组。JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,并且命令行的运行方式对于负载机的资源消耗会更小。

2.基本使用

1.界面介绍

菜单栏

1. 文件

  • 关闭:关闭当前打开的JMX文件 。
  • 打开:打开一个JMX文件。
  • Templates 模板:对常用的功能使用指导。主要有录制、JDBC测试、webserver测试等等,分为基本步骤和详细截图。 如果点用户链接,则会链接到apache jmeter 网站查看详细的步骤和截图指导。
  • 合并:会将多个JMX合并为一个 。
  • 保存测试计划:仅保存测试计划 工作台中添加的内容不会被保存。
  • 保存测试计划为:将测试计划另存。
  • 另存为:可以对工作台和测试计划或者测试例另存为JMX 注意另存为是点哪个位置,存的就是哪个内容。
  • save as Test fragment:存为一个测试片段,只有线程组、测试计划、工作台不能 保存为一个测试片段。
  • Revert:还原,将现在的jmx还原为已经保存过的JMX

2. 编辑

  • Save Node As Image(保存节点为图片): 将菜单的配置GUI保存为图片。
  • Save Screen As Image(保存屏幕为图片): 将整个jmeter界面保存为图片。
  • Toggle(切换):类似于java中设置断点的意思。

3. 查找

  • Search: 搜索所有配置中匹配的项,匹配成功显示为红色。
  • Reset Search: 重置搜索,清除搜索结果。

4. 运行

  • 启动: 启动运行测试计划
  • Start no pauses(不停顿开始): 无停顿启动运行测试计划 1,可以忽略定时器 2,再启动时运行更快
  • 远程启动/停止: 指定一个远程agent运行/停止测试计划。
  • 远程全部启动/停止: 让所有远程agent运行/停止测试。
  • 停止: 停止执行测试计划。
  • 关闭: 关闭测试计划。
  • Remote Shutdown: 关闭一个指定远程agent。
  • Remote Shutdown All: 关闭所有远程agent。
  • 远程退出: 指定一个远程agent退出执行。
  • 远程退出全部: 所有远程agent退出执行。
  • 清除: 清除选择菜单的执行结果。
  • 清除全部: 清除所有菜单的执行结果。

5. 选项

  • 函数助手对话框: 在编写脚本的时候,使用函数助手可以协助生成指定的代码。
  • 外观: jmeter界面样式。
  • Log Viewer: 日志查看器,选中后可以在右下方查看运行日志。
  • SSL管理器: 导入外置的SSL管理器,用于更好的管理证书, JMeter代理服务器不支持记录 SSL(https)。
  • 选择语言: 选择界面的语言,目前支持中文、英文、法语、德语等等。中文版很多翻译不全,可以直接使用英文版的。
  • Collapse All: 展开所有菜单。
  • Expand All: 折叠所有菜单

6. 帮助

  • What’s this node?: 当鼠标放在某个菜单的时候显示其含义。
  • Enable debug: 开启调试。
  • Disable debug: 取消调试。
  • Create a heap dump: 创建堆转储。这是创建当JVM崩溃的堆转储。这个文件可以用堆分析工具(如JHAT),以确定根本原因进行分析。

2.简单的模拟性能测试

(不懂的可以转换中文)

(测试百度网站)

1.线程组

进程: 一个正在执行的程序对应一个进程

线程: 一个进程有多个执行线程

线程组: 按照线程性质对线程分组

三者关系: 一个进程有多个线程组,一个线程组有多个线程

操作:在测试计划>>添加>>Threads>>线程组

1. 线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

2. 线程数:虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个 线程数。

3. 准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

4. 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送 100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止 运行脚本。

5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

6. 持续时间(秒):测试持续时间

7. 启动延迟(秒):测试延迟启动时间

2.sampler(采样器)

作用:向服务器发送请求,记录响应信息,记录响应时间的最小单元(http,https,ftp,jdbc等)

1.操作:在线程组>>添加>>sampler>>http请求(常用)

一个HTTP请求有着许多的配置参数,下面将详细介绍:

名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器的端口号。

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、 DELETE等。

Content encoding :内容的编码方式,默认值为iso8859

路径:目标URL路径(不包括服务器地址和端口)

注意事项:

1:参数传递中Parameters和Body Data不能同时使用,必须要保证其中至少一个为空,否则提示错误

2:在传递的参数中,接口参数名和参数值两边不能有空格,否则会报错

3.监听器

作用:监听器可以动态的监控JMeter测试执行的过程,实时查看测试结果

1.操作:在线程组>>添加>>监听器>>聚合报告/查看结果树

通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过

Thread Name:线程组名称

Sample Start: 启动开始时间

Load time:加载时长

Latency:等待时长

Size in bytes:发送的数据总大小

Headers size in bytes:发送数据的其余部分大小

Sample Count:发送统计

Error Count:交互错误统计

Response code:返回码 Response

message:返回信息 Response

headers:返回的头部信息

lable:对应每一个http请求,显示的是http请求的Name,如百度http请求name为baidu

#Samples:表示这一次的测试中一共发出了多少请求,如上图所示,sougou和baidu的http请求 每个都发出30个请求

Average:平均响应时间,指的是所有的请求的平均响应时间,如上图的30个请求的总的响应时间 除以30得出的平均响应时间,默认的情况下是单个请求的平均响应时间,但当使用了“事务控制器” 时,则以事物为单位显示平均响应时间

Median:中位数,也就是50%用户的响应时间

90%Line:90%用户的响应时间

Min:最小响应时间

Max:最大的响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数,如上图所示,本次的测试中,sougou的 http请求66.6%的请求出错,而baidu的请求则没有出错的请求

Throughput:吞吐量,默认情况下表示每秒完成的请求数,如上图所示,每秒完成的请求数分别 为6.6个每秒,6.2个每秒

Recived KB/Sec:每秒从服务器端接收到的数据量,以kb为计算的单位

4.jmeter中插件的讲解

jmeter组件描述

1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。 3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。 如:HTTP 、ftp请求等等。 4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显 示、统计一些数据(吞吐量、KB/S……)等。 6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确,非常实用 7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。 5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的 请求序列。 8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。 9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的 设置,后置处理器则常常用来处理响应的数据。

1.断言

作用:断言(Assertions)可以用来判断响应的数据是否符合预期

1.响应断言

操作:在线程组>>添加>>断言>>响应断言

2.json断言

操作:在线程组>>添加>>断言>>json断言

3.Xpath断言

定义:Xpath即为XML路径语言,它是一种用来确定XML文档中某部分位置的语言。xpath基于XML的树状结 构,提供在数据结构树中寻找节点的能力

操作:在线程组>>添加>>断言>>xpath断言

2.定时器

定时器(Timer)负责定义请求之间的延迟间隔

操作:在线程组>>添加>>定时器>>固定定时器

3.逻辑控制器

1.事务控制器

操作:在线程组>>添加>>逻辑控制器>>事务控制器

2.循环控制器

操作:在线程组>>添加>>逻辑控制器>>循环控制器

4.后置处理器

http请求默认值,会在发送http请求的时候,自带这些参数,复用的作用

1.http请求默认值(常用)

操作:线程组>>配置原件>>http请求默认值

2.正则表达式

常见的正则表达式如下(在线正则表达式)

操作须知

1)确定取值的范围

2)确定取值的左右边界,最好是能够唯一确定的值的边界

3)如果要查看我们的值是否正确,可以使用Debug Sampler 引用${变量名}

操作:线程组>>添加>>后置处理器>>正则表达式提取器

3.JSON Extractor

通过json表达式提取数据

操作:线程组>>添加>>后置处理器>>JSON Extractor

5.监听器

作用:css/JQuery测试程序只适用于文本响应,可以根据Jsoup或Jodd对响应数据进行过滤和查看

1.察看结果树之cssJQuery_Tester

操作:线程组>>监听器>>察看结果树(cssJQuery_Tester)

2.:察看结果树之HTML

html模式有三种选项 HTML:HTML视图将响应以HTML方式展示。渲染的HTML可能无法和游览器显示的界面比较,图片和样式表等不 会下载,界面显示比较乱 HTML(source formatted),呈现出由Jsoup格式话的HTML源代码,跟Text模式基本没有区别 HTML(download resources),会下载HTML代码引用的图像,样式表等,呈现出更具体的HTML样式

3.察看结果树之json模式

json模式中有2中选项 JSON:JSON视图将显示树形风格的响应,和Text有明显的区别 JSON Path Tester:JSON路径测试视图将允许测试JSON-PATH表达式,从特定响应中查看提取的数据

4.察看结果树之Document

Document:视图将显示从各种类型的文档中提取文本

解决方式:下载tika-app-x.x.jar,并放在JMETER_HOME/lib目录下

5.察看结果树之RegExp Tester

RegExp Tester:Regexp仅使用于我那本响应。点击"Test"按钮,系统将应用regexp对上面板中的文本进 行查询,结果显示在面板中

示范:视频 提取里面的文本内容视频 name=tj_trvideo class=mnav>(.*?) 注意点:提取的内容,左右边界时唯一的

6.察看结果树之Xpath Tester

Xpath Tester:Xpath仅适用于文本响应。上面板显示了纯文本,点击"Test"按钮,系统就会刷选,显示最 终的信息

可以在游览器(谷歌)中选定元素右键copy对应的copy xpath

6.配置原件

1.用户自定义变量

当脚本中重复出现相同的变量的时候,可以使用用户定义变量来代替相同的参数

操作:线程组>>配置原件>>用户定义的变量

2.请求元件之参数化txt

操作:线程组>>配置原件>>CSV数据文件设置

当进行批量数据操作的时候,为了方便可以使用参数化来实现

3.请求元件之参数化csv

当进行批量数据操作的时候,为了方便可以使用参数化来实现

操作:线程组>>配置原件>>CSV数据文件设置

在注册接口中,用户名不能重复,我们需要使用不同的手机号注册,如果使用TXT可能不能很好的管理 数据,如果使用CSV类型,就方便很多,其他的用法和TXT是一样的,只是创建数据更加方便,我们以注 册接口完成操作:http://xg.plk123.cn/api/user/reg.do (参数phone,yzmCode,userPwd,agentCode)

7.函数助手

1.csvRead

当进行批量数据操作的时候,为了方便可以使用csvRead函数助手来实现

操作:选项>>函数注释对话框>>_CsvRead

2.randomstring

有的时候有一些参数是不断变化的,我们如果使用csv去做,还是要准备很多不同的数据,但是如果我们用 randomstring的话,就可以避免这个问题,但是随机生成的可能会有重复的数据

Jmeter的基础讲解相关推荐

  1. Jmeter使用基础笔记-写一个http请求

    前言 本篇文章主要讲述2个部分: 搭建一个简单的测试环境 用Jmeter发送一个简单的http请求 搭建测试环境 编写flask代码(我参考了开源项目HttpRunner的测试服务器),将如下的代码保 ...

  2. mysql 导出dmp文件_MySQL数据库基础讲解

    # 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...

  3. 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行

    NCL基础讲解(二)--NCL安装与运行 兰溪之水2015-11-04 上一期已经给大家简单介绍了NCL的基本情况,既然NCL在科学数据分析和可视化方面有那么多优点,那还等什么,让我们一起" ...

  4. C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息)

    C/C++基础讲解(二十六)之数值计算与趣味数学篇(打鱼还是晒网与怎样存钱以获取最大利息) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中 ...

  5. 前端菜鸟必学!less使用基础讲解

    前端菜鸟必学!less使用基础讲解 概述 使用方法 语法简介 嵌套规则 实例 概述 less是动态的样式表语言,通过简单,明了的语法定义,使编写css 的工作变得非常简单,在实际项目开发中,大大提高了 ...

  6. CISP-PTE 基础讲解

    CISP-PTE 基础讲解 前言 渗透基础 owasp top 10 POC和EXP payload,shellcode和webshell CVE编号和CNVD编号 0day漏洞和0day攻击 木马. ...

  7. C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题、爱因斯坦的数学题、三色球问题与马克思手稿中的数学题)

    C/C++基础讲解(二十九)之数值计算与趣味数学篇(百钱百鸡问题.爱因斯坦的数学题.三色球问题与马克思手稿中的数学题) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本 ...

  8. C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏)

    C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

  9. Unity LeapMotion SDK 基础讲解

    Unity LeapMotion SDK 基础讲解 LeapMation SDK 下载 LeapMation Unity 示例场景 下载 LeapMotion 组件解析 LeapServiceProv ...

  10. C/C++基础讲解(八十六)之游戏篇(解救人质游戏)

    C/C++基础讲解(八十六)之游戏篇(解救人质游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

最新文章

  1. 商淘多b2b2c商城系统怎么在个人电脑上安装_社交电商系统开发是否有价值?
  2. MNIST数据集合在PaddlePaddle环境下使用简单神经网络识别效果
  3. Win10如何打开软键盘?
  4. 如何修改CMD命令行窗口下的默认路径
  5. 软件工程软件产品质量要求与评价_软件质量保证(Quality Assurance)中常见的活动...
  6. vscode Java 11 or more recent is required to run. Please download and install a recent JDK
  7. 最耐用的手机盘点 网友:我这个能用到品牌商“破产”!
  8. 插件怎么用_【Anki插件篇】(01)插件介绍
  9. java window.onload_JavaScript window.onload
  10. angularjs1-2,作用域、代码压缩
  11. t检验的p值对照表_第十讲 R-两独立样本t检验
  12. python 当天零点的时间戳
  13. 怦然心动(Flipped)-3
  14. 芴基噁二唑铱配合物|阳离子型铱配合物Ir(F_2ppy)_2(Br_2bpy)+PF-6
  15. printf中的%f
  16. CF、MF、FM、FFM浅析
  17. 单机版Swarm 安装教程和试用
  18. android 沉浸式菜单栏,Android沉浸式全屏讲解(状态栏、导航栏处理)
  19. 解决Excel打开UTF-8编码CSV文件乱码的问题
  20. java框架魔乐_16 魔乐科技 SpringBoot框架开发详解

热门文章

  1. apollo 横纵向控制改成MPC控制方式
  2. matlab相关系数的显著性检验
  3. 01_博图默认变量和DB块变量导入昆仑通态触摸屏
  4. 利用MATLAB实现对一幅彩色图像的高斯滤波(不采用MATLAB函数)。
  5. glibc升级失败及处理过程
  6. 330425-01-00本特利内华达加速度计
  7. bin 文件分析(转)
  8. 8255矩阵键盘C语言,8255驱动矩阵键盘和数码管程序
  9. 华创e路航固件_华创e路航地图升级工具 v1.0 官方版(图文)
  10. Terms of Service - Screen Capture