JMeter 5 环境搭建,配置,运行

课程介绍

JMeter是Apache软件基金会的产品,用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java 对象,数据库和查询,FTP服务器等等)的性能进行测试.是一款很方便的测试软件。

此课程将详细介绍:Windows操作系统环境安装JMeter、运行JMeter、配置JMeter

课程系统环境:

  • 操作系统:Windows10
  • JDK:1.8
  • JMeter:5

确定JDK安装成功

JMeter 是基于 Java 的框架,所以第一个要求是JDK安装在机器上,且JDK版本不低于1.6。(JDK安装请参考平台课程“JDK (Windows)安装及配置”)

在系统cmd命令提示符下输入java -version,验证JDK是否安装成功和版本号: image 上图表示JDK已安装,版本1.8

下载安装JMeter

JMeter下载地址: http://jmeter.apache.org/download_jmeter.cgi(当前最新5.1)

  1. windows环境下安装,选择zip格式的文件下载

image

  1. 把下载的zip文件解压后就可以使用 image

  2. 目录介绍 下面是解压后的文件目录介绍:

bin:可执行文件目录

常用文件:
examples:打开里面是一个csv样例(jmeter需要读取本地文件可参考)
jmeter.bat:windows的启动文件(重要)
jmeter.log:jmeter运行的日志文件
jmeter.properties:系统配置文件
jmeter-server.bat:windows分布式测试要用到的服务器

docs:文档目录

docs 目录下主要包括:api文件以及css和图像样式

extras:目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化。

例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行“ant -Dtest=文件名 report”,就可以生成测试统计报表。

lib:该目录包含两个子目录,其中ext子目录存放有JMeter的核心jar包,另一个junit子目录存放JUnit测试脚本。

用户扩展所依赖的包(如JDBC、JMS实现包)应该直接放到lib目录下。而JMeter插件包应该放在lib/ext下。

licenses:JMeter证书目录

printable_docs:用户使用手册

运行JMeter

运行JMeter 有两种模式:gui(图形界面)模式、non-gui(命令行)模式 JMeter 初学者可以在GUI模式下学习创建、调试、运行测试计划。待熟练使用工具建议使用non-gui模式运行测试计划(后期可参考<JMeter no-gui模式运行>课程学习)

GUI模式

  1. JMeter 的bin目录下,双击jmeter.bat,很短的等待之后,首先出现一个cmd窗口,Jmeter使用期间不能关闭 image

  2. 接着会出现JMeter的图形用户界面,这就表示启动JMeter成功。 image可能有些同学看到的界面是黑色的,则不重要,图形界面风格是可以更改的。

  3. JMeter默认使用英文,我们可以修改语言为:中文简体

image

  1. 如果你不喜欢这黑黢黢的界面,我们可以修改风格,你现在所看到的图片都是“windows” 风格

image

配置JMeter

JMeter 设置有关,建议初学者可以先简单了解或暂且跳过,待需要设置时再来学习。

JMeter的Classpath

JMeter会通过以下目录中的jar文件加载类

  • JMETER_HOME/lib:公用包
  • JMETER_HOME/lib/ext: 包含JMeter元件和补丁

如果测试人员开发新的JMeter元件,就需要将对应的jar包放在JMeter的lib/ext目录下,JMeter会自动加载这些jar包中的JMeter元件。不要在lib/ext目录下放置公用包。

使用代理服务器

如果测试对象隐藏在防火墙/代理服务器之后,可以通过命令行来运行jmeter文件,并携带如下参数,以达到提供主机名和端口号的目的。

  • -H [代理服务器主机名或者IP地址]
  • -P [代理服务器端口]
  • -N [不是用代理的主机] (例如*.apache.org|localhost)
  • -u [代理验证的用户名-如果要求]
  • -a [代理验证的密码-如果要求]

命令运行

jmeter -H my.proxy.server -P 8000 -u name -a password -N localhost

#JMeter有内置的HTTP代理服务器是用来于录制http或https的浏览器操作,与上面描述完全不同请不要混淆

命令行重置JMeter属性

Java系统属性、JMeter属性、日志属性都可以通过命令行来修改属性值(临时生效),JMeter命令的选项如下:

  • -D [prop_name]=[value]: 定义一个Java系统属性值
  • -J [prop_name]=[value]: 定义一个本地JMeter属性
  • -G [prop_name]=[value]: 定义一个JMeter属性,并发往所有远程服务器
  • -G [propertyfile]: 定义一个文件,其中包含JMeter属性,并将文件发往所有远程服务器
  • -L [category]=[priority]: 重置日志设置,对特定类型的日志设定优先级

示例:

  1. 在cmd窗口运行以下命令:
jmeter -D user.dir=E:\apache-jmeter-3.1\bin 
jmeter -J remote_hosts=192.168.3.19 
  1. 以GUI模式启动JMeter,可在工作台-添加Property Display元件,查看系统和JMeter的属性是否设置成功

通命令行重置的属性只对当前打开的JMeter窗口有效,退出后设置失效,这种方式是不会修改jmeter.properties文件的内容。

永久修改JMeter属性

如果想要永久性的改变与JMeter运行相关的属性,可以修改bin目录下的jmeter.properties 。介绍几个jmeter.properties文件中常用的属性:

image

配置错误日志

JMeter 不会在发生运行错误时弹出对话框,Jmeter运行出现问题可以通过调整jmeter的日志级别定位问题,但在正式进行压力测试时记得关闭 jmeter 日志,因为jmeter 打印日志耗费系统性能。

JMeter 使用的日志文件名称被定义在 jmeter.properties 文件中。Jmeter 日志默认存放在 %JMeter_HOME%\bin目录,文件名通常是 JMeter.log,日志记录与 JMeter 本身运行有关的日志信息。 当然我们也可以使用-j 选项自定义测试计划的日志文件。

jmeter.log 内容如下:

2017/07/05 15:45:30 INFO  - jmeter.util.JMeterUtils: Setting Locale to zh_CN 
2017/07/05 15:45:30 INFO  - jmeter.JMeter: Loading user properties from: E:\apache-jmeter-3.1\bin\user.properties 
2017/07/05 15:45:30 INFO  - jmeter.JMeter: Loading system properties from: E:\apache-jmeter-3.1\bin\system.properties 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: Version 3.1 r1770033 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: java.version=1.7.0_17 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: os.name=Windows 8 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: os.arch=amd64 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: os.version=6.2 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: file.encoding=GBK 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: Max memory     =523501568 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: Available Processors =4 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: Default Locale=中文 (中国) 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: JMeter  Locale=中文 (中国) 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: JMeterHome=E:\apache-jmeter-3.1 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: user.dir  =E:\apache-jmeter-3.1\bin 
2017/07/05 15:45:31 INFO  - jmeter.JMeter: PWD       =E:\apache-jmeter-3.1\bin 
2017/07/05 15:45:40 INFO  - jmeter.JMeter: IP: 192.168.16.1 Name: innovaee FullName: innovaee 
2017/07/05 15:45:41 INFO  - jmeter.gui.action.LookAndFeelCommand: Using look and feel: javax.swing.plaf.metal.MetalLookAndFeel [Metal, CrossPlatform] 
2017/07/05 15:45:41 INFO  - jmeter.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties 
2017/07/05 15:45:44 INFO  - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.' 
2017/07/05 15:45:44 INFO  - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.' 
2017/07/05 15:45:47 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.assertions.BSFAssertion 
2017/07/05 15:45:49 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.extractor.BSFPostProcessor 
2017/07/05 15:45:49 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.modifiers.BSFPreProcessor 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 
2017/07/05 15:45:49 INFO  - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser 
2017/07/05 15:45:51 INFO  - jorphan.exec.KeyToolUtils: keytool found at 'keytool' 
2017/07/05 15:45:51 INFO  - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file E:\apache-jmeter-3.1\bin\proxyserver.jks 
2017/07/05 15:45:51 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.java.sampler.BSFSampler 
2017/07/05 15:45:51 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.config.MongoSourceElement 
2017/07/05 15:45:51 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler 
2017/07/05 15:45:52 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.timers.BSFTimer 
2017/07/05 15:45:52 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.BSFListener 
2017/07/05 15:45:52 INFO  - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.visualizers.MonitorHealthVisualizer 
2017/07/05 15:45:53 INFO  - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times 
2017/07/05 15:45:53 INFO  - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 
2017/07/05 15:45:53 INFO  - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true 
2017/07/05 15:45:53 INFO  - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000 
2017/07/05 15:46:46 INFO  - jmeter.services.FileServer: Default base='E:\apache-jmeter-3.1\bin' 
2017/07/05 15:46:46 INFO  - jmeter.gui.action.Load: Loading file: E:\apache-jmeter-3.1\bin\仅一次控制器.jmx 
2017/07/05 15:46:46 INFO  - jmeter.services.FileServer: Set new base='E:\apache-jmeter-3.1\bin' 
2017/07/05 15:46:47 INFO  - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 
2017/07/05 15:46:47 INFO  - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8 
2017/07/05 15:46:47 INFO  - jmeter.save.SaveService: Using SaveService properties version 3.1 
2017/07/05 15:46:47 INFO  - jmeter.save.SaveService: All converter versions present and correct 
2017/07/05 15:46:47 INFO  - jmeter.save.SaveService: Loading file: E:\apache-jmeter-3.1\bin\仅一次控制器.jmx 
2017/07/05 15:46:47 INFO  - jmeter.services.FileServer: Set new base='E:\apache-jmeter-3.1\bin' 



设置日志级别和输出

Jmeter使用Log4j日志组件输出日志,%JMETER_HOME%\bin\jmeter.properties 中的 ”log_level.jmeter“ 用于控制Jmeter日志记录级别。 log_level.jmeter 可以设置以下日志级别:FATAL_ERROR, ERROR, WARN, INFO,DEBUG,其中FATAL_ERROR打印日志最少,DEBUG级别日志最详细。

例如:log_level.jmeter=INFO

INFO是日志级别,只有等于及高于这个级别的才打印日志,如果配置为INFO只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示。

下面是jmeter.properties文件中 JMeter 为不同模块设置不同的日志级别:

log_level.jmeter=INFO
log_level.jmeter.junit=DEBUG
#log_level.jmeter.control=DEBUG
#log_level.jmeter.testbeans=DEBUG
#log_level.jmeter.engine=DEBUG
#log_level.jmeter.threads=DEBUG
#log_level.jmeter.gui=WARN
#log_level.jmeter.testelement=DEBUG
#log_level.jmeter.util=WARN
#log_level.jmeter.util.classfinder=WARN
#log_level.jmeter.test=DEBUG
#log_level.jmeter.protocol.http=DEBUG
# For CookieManager, AuthManager etc:
#log_level.jmeter.protocol.http.control=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=DEBUG
#log_level.jmeter.protocol.Java=WARN
#log_level.jmeter.testelements.property=DEBUG
log_level.jorphan=INFO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值