JMeter(一):基础概念

1、什么是JMeter

以下是源于百度百科的解释:
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等,还可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

2、Jmeter安装

2.1、前提:已安装JDK(版本要匹配),并已设置环境变量
JMETER_HOME:路径
%JMETER_HOME%\lib\ ----通用
%JMETER_HOME%\lib\ext ---仅适用于Jmeter的组件和插件,如果不想把Jmeter的插件库放到ext下面,那么需要在 jmeter.properties 中维护 search_paths

2.2、启动
进入Jmeter解压目录的bin子目录
1)windows环境:双击 jmeter.bat 文件
2)Linux环境:双击jmeter.sh 文件 (.sh是linux下的对应功能的文件)
3)Mac OS:进入Jmeter的bin目录,运行 sh jmeter
PS:查找Jmeter的绝对路径---find / -name Jmeter文件名

MAC OS.png

3、Jmeter目录结构

目录结构.png
  • bin:可执行文件,包含启动、配置等相关命令
    jmeter.log:记录了jmeter在运行时的日志信息(输出、警告、报错等)
    jmeter.properties:核心配置文件,可以修改默认属性,比如,属性log_level.JMeter可以设置改变日志详细度,默认是info,可改为debug或者其它
  • extras:辅助库
  • lib:核心库,包含JMeter用到的各种基础库和插件
  • licenses:包含non-ASF软件的许可证
  • printable_docs :可打印版本文档目录
    其中子目录 usemanual 下是jmeter用户手册,其中component_reference.html是最常用的核心元件帮助手册,也可以直接查看官方文档完整版
  • README.md:Jmeter官方基本介绍

4、常用组件

学习Jmeter之前,先了解下Jmeter的基本组件及其作用

测试计划:根目录,可以理解为老大,所有内容都是基于这个计划,都需要在这个测试计划下创建

测试计划组件.png

线程组
虚拟用户数,设置Jmeter按照什么场景运行
是一系列线程的集合,每一个线程都代表一个正在使用应用程序的用户。在JMeter中,每一个线程都意味着模拟一个真实用户向服务器发起请求。

线程组.png
  • setUp Thread Group:用于执行预测试操作,比如初始化的配置,类似LR中的init
  • tearDown Thread Group:用于执行测试后动作,比如建立数据库连接后,测试结束需要关闭数据库,类似LR中的end

比如设置的线程数为50,JMeter将创建并模拟测试50个用户请求到服务器端
(指的是在线用户数量,并不是并发数量)

4.1、Sampler
创建各种请求类型,用来模拟用户请求,在线程组下创建,不和其它元件相互作用,因此不存在作用域的问题
如果没有创建线程组是看不到这个的

4.2、后置处理器
后续操作的子件集合,对发出请求后得到的服务器响应进行处理,或者抓取响应数据,比如,关联动态的cookie,可用于解析响应数据,提取变量,以便后续使用

作用域---元件在其作用范围内的每一个sampler元件之后执行,取样器被执行后被触发执行的元素。

例:2个请求A和B,A发出去后得到请求响应,其中的某个参数在请求B中需要用到,参数需要上下传递,这时通过关联进行获取

再如:每次登录操作,cookie都动态变化,必须每次都捕获动态的cookie才能通过服务器的校验

4.3、断言(检查点)
元件对其作用范围内的每一个sampler 元件执行后的结果执行校验,通俗点来说就是判断测试中得到的响应数据是否符合预期

比如登录成功之后,请求响应信息中肯定会有信息提示成功,通过断言去判断,看看响应头里有没有我的预期结果,有就表示成功了;

再如购物网站,手写了登录脚本来验证用户是否登录成功,若登录成功个人中心则会显示用户信息,通过断言来校验

4.4、监听器
对测试结果数据进行处理和可视化展示

  • 图形结果以图形展示响应时间
  • 查看结果树显示sampler的详细的请求和返回结果

4.5、逻辑控制器
帮用户去定制何时发送请求的逻辑,它可以改变请求发送的顺序,也可以修改请求,比如让请求重复执行等(类似编程语言里的if、for)

4.6、配置元件
包含了Sampler下各种Sampler的默认配置设置
作用域---会影响其作用范围内的所有元件

4.7、定时器
默认情况下,JMeter线程没有停留的按顺序执行,为模拟真实且不在短时间内给服务器造成太大的压力,我们在请求之间添加定时器作为思考时间(设置操作之间的等待时间)

用于设置操作之间的等待时间,一旦设置是对所有请求都是生效的

PS:当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行,如果希望定时器仅作用于其中一个sampler,则把该定时器作为其子节点加入

4.8、前置处理器
用于在实际请求发送之前,对即将发出的请求进行特殊处理,比如修改HTTP协议头、参数化等

作用域---在其作用范围内的每一个sampler元件之前执行

作用域举例,如图所示:


作用域演示.png

总结:从各个元件的层次结构来判断每个元件的作用域

5、执行顺序

配置元件(配置信息需要首先加载进来)--->前置--->定时器--->Sampler--->后置--->断言(对请求做判断)--->监听器

如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

6、Jmeter插件的安装方法

在jmeter3.0之前的版本中,插件的安装方法需要自行去找相应的jar包,然后放到对应的目录中。

jmeter3.0版本之后的,插件的安装步骤为:
1、下载plugins manager ,放到jmeter的lib下的ext目录中
2、重启jmeter才可以生效
3、选择菜单【选项】--->【plugins manager】之后在此对话框中进行选择安装

插件管理.png
7、优势

JMeter 能完成接口层的性能与自动化测试,原理就是模拟实际的用户请求,发送给服务器端

1、开源:纯Java语言编写,可移植性好,并提供了源码可供自定义开发
2、图形界面模式:提供了方便的图形界面来编辑和开发测试脚本
3、与平台无关:可以轻易在Windows、Linux、Mac上运行
4、多线程框架:通过线程组,能够轻易的设置不同测试的并发用户
5、图形测试结果:提供了图表、表格、树、文件等格式的结果显示
6、易于安装:Jmeter不需要安装,下载解压即可用。
7、高扩展性:Jmeter支持用户自定义测试脚本,同样还提供了各种插件
8、多测试类型支持:支持性能测试、分布式测试、功能测试
9、仿真模拟:支持多用户并发测试
10、支持多协议:支持http、jdbc、ldap、soap、jms、ftp等协议
11、脚本测试:Jmeter支持beanshell和selenium
12、比loadrunner轻量,学习成本低

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

推荐阅读更多精彩内容