1.JMeter 介绍

Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
     同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许调用二次开发的jar包来丰富你的测试场景;JMeter允许你使用正则表达式来创建这些assertions.

2.JMeter与LoadRunner比较

JMeter 是一款开源(有着典型开源工具特点:界面不美观)测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细;很它的优点也有很多:

  • 开源,他是一款开源的免费软件,使用它你不需要支付任何费用,
  • 小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。
  • 功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。扩展性极强。它可以测试性能,可以测试接口,甚至可以通过加载浏览器驱动完成UI自动化的工作!

两者最大的区别:jmeter不支持IP欺骗,而LR支持。

  从上边来看Jmeter是好处多多的,但是任何事、任何物都违背不了一个法则,那就是“金无足赤人无完人”,Jmeter也是有不足之处的,下边我们来看看Jmeter的不足之处,这里宏哥就不深究它到底是娘胎里带来的还是后天造成的了,一般对于软件来说都是娘胎里带来的,先天不足。原因是:开发的时候可能由于某些原因考虑不足,导致其娘胎里带病。

3.JMeter缺点

  使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。

4.下载安装

4.1JMeter安装

1.http://jmeter.apache.org/下载最新版本的JMeter,解压文件到任意目录

2.安装JDK,配置环境变量JAVA_HOME

  JDK环境变量配置传送门

3.系统要求:JMeter2.11 需要JDK1.6以上的版本支持运行

4.JMeter可以运行在如下操作系统上:Unix,Windows和Open VMS.

5.应当避免jdk路径与jmeter路径有中文和空格,否则会有异常,也会导致远程测试出现问题。

4.2JMeter插件安装

1. 插件下载地址: http://jmeter-plugins.org/downloads/all/

2. 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。

5.JMeter运行

5.1JMeter启动的两种姿势

5.1.1启动姿势1

进入bin目录,双击运行jmeter.bat启动jmeter

注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。

5.1.2启动姿势2

进入bin目录,双击ApacheJmeter.jar包运行

注意:打开的时候会有只有一个窗口,JMeter的图形操作界面,和上边的不一样哈。

6.JMeter目录结构解析

6.1根目录

Jmeter安装包解压后的根目录如下图:

6.2根目录说明(由上到下)

(1)backup目录   脚本备份目录,里边的文件都是以.jmx后缀结尾的文件

  实际开始安装解压后是不存在这个目录的,这个是由于宏哥使用过JMeter后,JMeter自动创建这个目录,然后备份了脚本文件。

(2)bin目录  可执行文件目录
  1. Jmeter.bat:是启动jmeter的主脚本。
  2. Jmeter-server.bar:是用来实现联机负载。
  3. Jmeter.properties:是jmeter主要的配置文件,超过80%的配置项都是通过这个文件实现。(PS:修改配置文件后,要重启Jmeter才能生效)
  Jmeter.bat  打开Jmeter主界面
  Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志
(3)dosc目录
  docs目录下的文件是JMeter的Java Docs,而printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中component_reference.html是最常用到的核心元件帮助文档。该目录下存放的是jmeter官方文档的API文档,主要是用于二次开发。
(4)extras目录
  该目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行“ant -Dtest=文件名 report”,就可以生成测试统计报表。也可以用于持续集成。
(5)lib目录
  该目录包含两个子目录,其中ext子目录存放有JMeter的核心jar包,另一个junit子目录存放JUnit测试脚本。用户扩展所依赖的包,应该直接放到lib目录下,而非lib/ext下。
注意:无法识别 zip 格式的包文件,所以需要的包文件均要求以 .jar 结尾
(6)Licenses jmeter 软件许可文件目录
(7)printable_docs目录

  该目录存放的是jmeter官方提供的帮助文档。printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考。可打印半版本目录。

(8)LICENSE JMeter ——许可说明

(9)NOTICE JMeter ——简单信息说明

(10) README.md ——JMeter 官方基本介绍

6.3打开backup,如下图:

6.4打开bin,如下图:

examples:目录下包含Jmeter使用实例,打开里面是一个csv样例

ApacheJMeter.jar:JMeter源码包

jmeter.bat:windows的启动文件

jmeter.log:Jmeter运行日志文件

jmeter.sh:linux的启动文件

jmeter.properties:系统配置文件

jmeter-server.bat:windows分布式测试要用到的服务器,启动负载生成器服务文件

jmeter-server:Linux下启动负载生成器文件

shutdown.cmd windows 下 jmeter 关闭文件

stoptest.cmd windows 下 jmeter 测试停止文件

6.5打开docs,如下图:

api:api文件以及css和图像样式

6.6打开lib,如下图:

此文件夹里面全是一些jar包

7.JMeter主要配置文件

7.1jmeter.properties配置文件

jmeter.properties,定义jmeter运行的关键配置;下边宏哥列举了一下这个文件的关键配置如下:

#默认语言设置

      language=en

#捕捉cookie开关

      CookieManager.save.cookies=true

#配置编辑器的字体和尺寸

     jsyntaxtextarea.font.family=宋体

     jsyntaxtextarea.font.size=20

#配置默认编码格式

     sampleresult.default.encoding=UTF-8

#SSL 配置:重点关注下面几个配置# 指定 HTTPS 协议层  
   # 指定 HTTPS 协议层
   https.default.protocol=TLS
   # 指定 SSL 版本,实际应用中可能需要修改
   https.default.protocol=SSLv3
   # 设置启动的协议
   https.socket.protocols=SSLv2Hello SSLv3 TLSv1
   # 缓存控制,控制 SSL 是否可以在多个迭代中重用
   https.use.cached.ssl.context=true #JMeter 测试项目自动备份配置
   # 设置是否启用自动备份,默认是 true
   jmeter.gui.action.save.backup_on_save=true
   # 设置自动备份目录,默认备份至 JMeter 根目录的 backups下
   jmeter.gui.action.save.backup_directory=
   # 设置自动备份项目数,默认为最近 10 个
   jmeter.gui.action.save.keep_backup_max_count=10 #远程主机配置
  # 配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机
  remote_hosts=127.0.0.1
  # 多个远程主机指定示例如下,其中:后为端口
  remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
  对于 RMID 的配置请直接看配置文件中的选项说明 #日志管理配置
  # 设置日志格式
  log_format_type=default
  # 设置日志输出级别
  log_level.jmeter=INFO
  # 设置 junit 日志输出级别
  log_level.jmeter.junit=DEBUG
  # 设置日志输出目标文件,默认为 jmeter.log
  log_file=jmeter.log # jmeter.bat 关键配置修改
#为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。
  set HEAP=-Xms2048m -Xmx2048m
  set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m
  set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
  set TENURING=-XX:MaxTenuringThreshold=2
  if %current_minor% LEQ "8" (
  rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
  set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m) # 设置输出报告模板格式 jmeter.save.saveservice.output_format = csv

7.2system.properties配置文件

system.properties,定义Java进程的系统变量,通过System.getProperties()可查询。

7.3user.properties配置文件

user.properties,自定义配置,可覆盖jmeter.properties。

7.4拓展

1.配置文件可能存在优先级关系,好像user.properties会覆盖jmeter.properties,一般修改配置都是修改或者添加user.properties,不建议修改jmeter.properties

2.通过修改reportgenerator.properties的下面配置,可以减少采样时间,增加采样精度。生成的报告的其他内容也可以在这里修改。当然,建议这些修改,都放到user.properties里面去

3. 修改jmeter.properties里的这些配置,可以控制报告DashBoard的显示时间,建议这些配置放到user.properties里面去

4.输出的控制报告的显示时间如下:

8.小结

  好了,今天有关JMeter的知识就分享到这里吧,谢谢大家的阅读,如果您觉得还可以就给个推荐呗!!!

您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波  推荐  不要忘记哦!!!

别忘了点 推荐 留下您来过的痕迹

Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)的更多相关文章

  1. 【转】Zabbix 3.0 从入门到精通(zabbix使用详解)

    [转]Zabbix 3.0 从入门到精通(zabbix使用详解) 第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源   网站/ ...

  2. Windows GTK+ 环境搭建(详解)

    来源:http://blog.sina.com.cn/s/blog_a6fb6cc901017ygy.html Windows GTK+ 环境搭建 最近要做界面的一些东西,但是对微软提供的类库MFC不 ...

  3. Python环境搭建详解(Window平台)

    前言 Python,是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件,Python语法简洁清晰,特色是强制用空白符作为语句缩进,具有丰富和强大的库,它常被称为胶水语言. Python是一种解 ...

  4. Windows下的SVN环境搭建详解

    前言:最近因为要和其他人合作开发项目,所以花时间搭建了SVN的环境. 因为是初次使用SVN,对于SVN的环境搭建很不熟悉,再加上网上的教程都介绍的比较粗略,导致前前后后重做了几次. 当然最终是搭建成功 ...

  5. Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及

    Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架——只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ...

  6. AngularJS4.0环境搭建详解--windows系统环境

    第一步:安装NodeJS 下载最新版的NodeJS并安装,安装完成后打开CMD命令行,输入以下命令: node -v 若返回类似版本号则代表NodeJS安装成功,如下: 第二部 安装npm 新版的No ...

  7. windows 64位下,React-Native环境搭建详解 (Android)

    React-Native环境搭建需要: 1.安装Java JDK 2.安装Android Studio 3.安装node.js 4.安装git 5.安装Python 2.x (注意目前不支持Pytho ...

  8. nginx+php环境搭建详解(Linux)

    今天在内网环境下,给linux主机安装nginx+php环境,由于是内网环境,只能手动解压缩包进行安装,在这过程中我也着实遇到了一些问题(困扰了我许久),还好最后搭建环境成功了,所以写篇博客记录一下, ...

  9. Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

    ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookee ...

随机推荐

  1. ARFoundation - 实现物体旋转, 平移,缩放

    ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...

  2. Git 在解决冲突的时候文件覆盖

    更新代码导致被还原或覆盖的场景:1.触发冲突的必要条件是修改同一个文件且修改的位置非常近,否则Git会自动合并其内容避免更新代码导致被还原或覆盖的解决方案1.少修改的地方(生产环境.公网测试环境):推 ...

  3. Windows Service 2016 Datacenter\Stand\Embedded激活方法

    安装好系统后连入互联网之后使用管理员身份打开命令行 输入命令 slmgr /skms kms.03k.org 弹出窗口提示模式修改成功后再输入命令:slmgr /ato 以下为各个版本的key 版本: ...

  4. 【macOS】屏蔽Big Sur更新提示 消除更新红点

    下面介绍如何屏蔽macOS系统更新,屏蔽Big Sur更新提示,消除更新红点. 取消自动更新选项 请选取苹果菜单  > "系统偏好设置",然后点按"软件更新&qu ...

  5. 死磕Spring之AOP篇 - Spring AOP自动代理(二)筛选合适的通知器

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  6. Github Pages+Gridea搭建个人博客

    1 概述 Github Pages可以用来托管个人网站,静态的,便于用来实现博客,可以在一个仓库的settings中开启: Gridea是一个静态博客写作客户端,所有文件都在本地,没有数据库,实现简单 ...

  7. mysql is null 和 =null 区别

    数据库中 null 表示 不可知,不确定所以 判断都用 字段 is null的方式进行判断而 = null .<> null 的判断结果,仍然是不可知,不确定,所以 不会返回任何结果.或者 ...

  8. 1.8.8- textarea控件(文本域)

    如果需要大量的信息,就需要用到<textarea>标签,通过testarea控件可以轻松创建多行文本输入框,其基本语法如下: <textarea cols="每行的字数&q ...

  9. 4-1 Postman脚本的应用

    前面我们讲解了在接口发送每个请求,得到响应.这是接口本身的问题.但是"请求前后"的动作,是怎么处理的?比如在发送一个请求前,需要获取当前的时间戳,或者对我们的变量进行参数化,设置变 ...

  10. 软件篇-05-融合ORB_SLAM2和IMU闭环控制SLAM底盘运动轨迹

      前面我们已经得到了当前底盘在世界坐标系中的位姿,这个位姿是通过融合ORB_SLAM2位姿和IMU积分得到的,在当前位姿已知的case下,给SLAM小车设置一个goal,我这里是通过上位机设置,然后 ...