压力测试工具Apache JMeter:1:概要介绍与环境搭建

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.youkuaiyun.com/liumiaocn/article/details/101264380

Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件,最初被设计是用来进行Web应用程序的测试,而现在已经扩展到Web应用之外的领域。

概要信息

Apache JMeter概要信息如下表所示:

项目说明
官网https://jmeter.apache.org/
开源/闭源开源
源码管理地址https://github.com/apache/jmeter
License类别Apache License 2.0
开发语言Java
当前稳定版本5.1.1(2019/5/4)
操作系统支持跨平台,支持Linux/Windows/Mac等
下载地址:github releasehttps://github.com/apache/jmeter/releases
下载地址:官网下载https://jmeter.apache.org/download_jmeter.cgi

功能特性

Apache JMeter可以用来测试静态或者动态资源与Web动态应用的性能。主要的应用场景之一在于模拟负载的情况,这些负载的对象可以是一台或者多台机器、网络等,通过Apache JMeter的负载模拟,可以了解测试对象在不同方面的综合性能。Apache JMeter的主要特性包括:

  • 对不同类型的应用、服务器、协议提供负载和性能的测试能力,包括:
    • HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET等)
    • SOAP/REST Webservice
    • FTP
    • 经由JDBC的数据库
    • LDAP
    • 经由JMS对基于消息的中间件MOM(Message-oriented middleware):SMTP(S)、 POP3(S)和 IMAP(S)
    • 本地命令或Shell脚本
    • TCP
    • Java对象
  • 支持使用浏览器或者本地应用提供快速录制、编译或者调试的多项测试IDE的功能。
  • 命令行CLI模式:之前被称为非GUI(Non GUI)模式/无头(headless)模式,可以应用于Java兼容的任何操作系统包括Linux、Windows macOS等。
  • 提供完整可用的HTML结果报告
  • 可以从多种常用的格式提取数据,包括:HTML、JSON、 XML 或者文本格式。
  • 100%纯Java开发、具有完全的可移植性
  • 具有缓存能力,可以进行测试结果的离线分析和再执行
  • 具有多线程框架能力,支持多个线程并行相同内容采样,也支持不同的线程组进行不同内容的取样。
  • 高度可扩展的内核特性:
    • 支持各种测试能力的可插拔的采样器
    • 可编程的采样器(兼容JSR22-3的语言,诸如Groovy或者BeanShell)
    • 使用可插拔的计时器可以选择多个负载统计信息。
    • 通过数据分析和可视化提供极大的扩展性和个性化
    • 为测试提供动态数据输入或者数据操作的功能
    • 非常容易和第三方开源软件(诸如Maven、Gradle和Jenkins等)进行持续集成。

环境准备

Java版本限制

作为一个100%纯Java的应用,Apache JMeter天然具有Java的跨平台特性,可以支持多种操作系统,但是对于Java的版本,相关的支持状况从如下链接中可以获取详细信息:https://cwiki.apache.org/confluence/display/jmeter/JMeterAndOperatingSystemsTested

主要版本限制以及注意事项:

  • JMeter 4所需要的Java版本为:Java 8或者Java 9
  • 如果有JMeter插件开发需求的情况下,需要安装Java8或以上,另外需要全安装
  • 因为JMeter一些功能是建立在keytool基础上的,所以在一些新的版本中使用HTTPS的情况下最好还是使用JDK而不是JRE。

安装步骤

本文以目前的5.1.1为例进行介绍相关的安装步骤。

步骤1: 下载Apache JMeter二进制文件

下载命令: wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.tgz

步骤2: 解压

解压命令:tar xvpf apache-jmeter-5.1.1.tgz

步骤3: 安装与设定JDK环境

确保JDK的安装与JAVA_HOME的正确设定,此处不在展开,Apache JMeter 5.1.1所需要的版本为JDK 8+。以下为安装示例环境的JDK设定:

liumiaocn:apache-jmeter-5.1.1 liumiao$ env |grep JAVA_HOME
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
liumiaocn:apache-jmeter-5.1.1 liumiao$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
liumiaocn:apache-jmeter-5.1.1 liumiao$ 
  • 版本确认
liumiaocn:apache-jmeter-5.1.1 liumiao$ bin/jmeter -v
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____     
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \   
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) | 
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <  
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.1.1 r1855137  

Copyright © 1999-2019 The Apache Software Foundation

liumiaocn:apache-jmeter-5.1.1 liumiao$

使用JMeter

起停脚本

比如以5.1.1为例,解压之后得到了一个名为的apache-jmeter-5.1.1目录,apache-jmeter-5.1.1目录下的bin目录保存着JMeter启动停止等常用的脚本,示例如下所示:

liumiaocn:jmeter liumiao$ ls
apache-jmeter-5.1.1     apache-jmeter-5.1.1.tgz
liumiaocn:jmeter liumiao$ 
liumiaocn:jmeter liumiao$ ls apache-jmeter-5.1.1/bin
ApacheJMeter.jar           hc.parameters              jmeter-server.bat          mirror-server              stoptest.cmd
BeanShellAssertion.bshrc   heapdump.cmd               jmeter-t.cmd               mirror-server.cmd          stoptest.sh
BeanShellFunction.bshrc    heapdump.sh                jmeter.bat                 mirror-server.sh           system.properties
BeanShellListeners.bshrc   jaas.conf                  jmeter.properties          report-template            templates
BeanShellSampler.bshrc     jmeter                     jmeter.sh                  reportgenerator.properties threaddump.sh
create-rmi-keystore.bat    jmeter-n-r.cmd             jmeterw.cmd                saveservice.properties     upgrade.properties
create-rmi-keystore.sh     jmeter-n.cmd               krb5.conf                  shutdown.cmd               user.properties
examples                   jmeter-server              log4j2.xml                 shutdown.sh
liumiaocn:jmeter liumiao$ 

Apache JMeter具有两种模式:GUI模式和CLI模式。GUI模式将会以图形方式启动JMeter,而CLI则是以命令行方式启动JMeter。

模式启动参数启动命令说明
GUI模式缺省方式./jmeter缺省方式会启动Apache JMeter的图形化界面
CLI模式-n./jmeter -n命令行方式使用JMeter

启动示例如下所示:

liumiaocn:jmeter liumiao$ ./apache-jmeter-5.1.1/bin/jmeter -j /tmp/jmeter_log.log
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

图形界面如下所示:
在这里插入图片描述

总结

这篇文章介绍了JMeter的概要内容以及环境搭建的方法,在接下来的内容中将继续展开性能测试和压力测试中常用的术语以及结合具体的实例介绍JMeter的使用方法。

【基本介绍Apache JMeter100%的Java桌面应用程序。用于对软件做压力测试(例如Web应用)。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。   另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。 【软件特点】   在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。   相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。   测试结果字段的意义   1、Label: 定义的HTTP请求名称   2、Samples: 表示这次测试中一共发出了多少个请求   3、Average: 访问页面的平均响应时间   4、Min: 访问页面的最小响应时间   5、Max: 访问页面的最大响应时间   6、Error%: 错误的请求的数量/请求的总数   7、Throughput:每秒完成的请求数   8、KB/Sec: 每秒从服务器端接收到的数据量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值