干货!软件测试 | 手把手教你 Jmerter环境搭建与界面操作

JMeter概述

ApacheJMeter是什么?

ApacheJMeter是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其它测试领域。ApacheJMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的性能进行测试。JMeter可以用于在服务器,网络或对象模拟繁重的负载来测试它们提供服务的受压能力或者分析不同压力条件下的总体性能情况。你可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器 / 脚本 / 对象。


ApacheJMeter能做什么?

1、能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试

2、完全的可移植性和100%纯Java

3、完全Swing的轻量级组件支持

4、完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样

5、精心的GUI设计允许快速操作和更精确的计时

6、缓存和离线分析/回放测试结果

7、高可扩展性:

可链接的取样器允许无限制的测试能力

各种负载统计表和可链接的计时器可供选择

数据分析和可视化插件提供了很好的可扩展性以及个性化

具有提供动态输入到测试的功能

支持脚本编程的取样器



Jmeter环境的搭建

Jmeter在使用之前也需要安装JDK环境,如何安装JDK环境,可以先翻看我们的高级教程。


JDK文章链接:软件测试| APP测试 —— Appium 的环境搭建及工具安装教程。


里面介绍了如何安装配置JDK,需要说明的一点是JDK的版本需要和Jmeter版本匹配,版本对应关系如下表:


下载软件:

Jmeter官网下载地址:http://jmeter.apache.org/download_jmeter.cgi

在官网界面,点击zip下载链接。直接下载即可。

注:本次演示界面以老版本为演示素材,同学们下载的时候下载最新版本就ok。



安装配置:

Jmeter的安装非常简单,无需详细的安装,只需要解压后放在一个目录下,然后配置环境变量即可。例如,我们把解压后的目录放在D盘

下面进行环境变量,首先打开计算机属性页面,打开路径如下图

在属性界面,依次点击“高级系统设置”“高级”“环境变量”“新建”,新建环境变量,命名为JMETER_HOME,其路径设置为Jmeter实际存放路径

然后修改CLASSPATH,在后面添加

;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/jorphan.jar;在变量path后面加上%JMETER_HOME%\bin

配置完成后在cmd输入:jmeter和jmeter–v测试一下是否配置正确!

如下图,输入Jmeter后,成功自动打开JMeter,表示配置正确。




Jmeter界面和菜单介绍

新打开的Jmeter界面背景颜色默认是黑色,相信很多同学也是看不习惯的。

可以依次选择工具栏的【Options】→【LookandFeel】来调整我们习惯的界面,这里笔者选择的是Windows→【Chinese(Simplified)】。


同时,我们也发现界面为全英文的,相信很多同学都看不明白,也看不习惯。不过请放心,界面我们可以把它调成中文版界面。


依次选择工具栏的:

【Options】→【ChooseLanguage】→【Chinese(Simplified)】就可以切换成中文简体了,只不过这只是临时修改(估计是Jmeter的一个bug),要想永久修改,需要手动修改配置文件。修改Jmeter的bin目录下的jmeter.properties

用记事本打开后,将language的值设置为zh_CN,保存修改即可。



操作界面介绍:

01

测试计划(TestPlan)


用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说本的性能测试的所有内容是于基于一个计划的。下面看一下一个计划下面都有哪些主要的功能模块(右键单击“测试计划”弹出菜单)。

02

线程组(ThreadsUsers)


虽然有三个添加线程组的选项,名字不一样,创建之后,其界面是完全一样的。之前的版本只有一个线程组的名字。现在多了setupthreadGroup与terdownThreadGroup:

1)、setupthreadgroup一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

2)、teardownthreadgroup一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。可能你还是不太理他们与普通的线程组有什么不同。如果您用过junit,想必你不会对setup,teardown这2个字眼陌生。即时每用过,也没关系。熟悉loadrunner的应该知道,loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。那么这里setupthreadgroup和teardownthreadgroup就是分别指这两部分。其实从本质上来看,他们并没有什么不同。

3)、threadgroup(线程组)这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。


03

测试片段(TestFragment)


测试片段是在2.5版本之后新加的一个选项。

测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。


04

取样器(Sampler)


取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter原生支持多种不同的sampler,如HTTPRequestSampler、FTPRequestSample、TCPRequestSample、JDBCRequestSampler等,每一种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。


05

逻辑控制器(LogicController)


逻辑控制器,包括两类元件:

一类是用于控制testplan中sampler节点发送请求的逻辑顺序的控制器,常用的有如果(If)控制器、switchController、RuntimeController、循环控制器等。

另一类是用来组织可控制sampler来节点的,如事务控制器、吞吐量控制器。


06

配置元件(ConfigElement)


配置元件(configelement)用于提供对静态数据配置的支持。CSVDataSetconfig可以将本地数据文件形成数据池(DataPool),而对应于HTTPRequestSampler和TCPRequestSampler等类型的配制无件则可以修改Sampler的默认数据。


07

定时器(Timer)


定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter定义了BeanShellTimer、ConstantThroughputTimer、固定定时器等不同类型的Timer。


08

前置处理器(PerProcessors)


用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTPURL重写修复符则可以实现URL重写,当RUL中有sessionID一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID。


09

后置处理器(PostProcessors)


用于对Sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,用正则表达式可以从响应数据中提取出我们想要的数据。


10

断言(Assertions)


断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。


11

监听器(Listener)


这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。图行结果、查看结果树、聚合报告。都是我们经常用到的元件。到此,我们已经简单了解了Jmeter的基本组成元件,后续我们通过设置参数和聚合报告来执行一个简单的性能测试。


的元件。到此,我们已经简单了解了Jmeter的基本组成元件,后续我们通过设置参数和聚合报告来执行一个简单的性能测试。

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

推荐阅读更多精彩内容