一、前言
Apache JMeter是纯Java的开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在加载测试功能行为和测量性能。可以使用JMeter进行性能测试,即针对重负载、多用户和并发流量测试Web应用程序。
我们选择JMeter原因
是否测试过Web服务器以了解其工作效率?一台Web服务器可以处理多少并发用户?
假设有一天,老板要求为100个用户做www.baidu.com的性能测试。怎么做?
安排100个人同时使用PC和互联网访问baidu.com是不可行的,当测试10000个用户时,想想基础设施需求(对于百度这样的网站来说,这是一个很小的数字)。因此,需要一个像JMeter这样的软件工具来模拟真实的用户行为,并对站点进行性能/负载测试。
JMeter与生俱来的优势
- 开源许可(Open source license): JMeter是完全免费的,允许开发者使用源代码进行开发
- 友好的GUI(Friendly GUI): JMeter非常容易使用,并且不需要花费时间来熟悉它
- 平台无关性(Platform independent): JMeter是100%纯Java桌面应用程序。因此它可以在多个平台上运行
- 完整的多线程框架(Full multi-threading frmework): JMeter允许通过单独的线程组对不同函数进行并发和同时采样
- 测试结果可视化(): 测试结果可以以图表、表格、树、日志文件等不同格式显示
- 易于安装: 只需复制并运行*.bat文件即可运行JMeter。无需安装。
- 高度可扩展: 可以编写自己的测试。JMeter还支持可视化插件,允许扩展测试
- 多种测试策略: JMeter支持负载测试、分布式测试、功能测试等多种测试策略。
- 模拟: JMeter可以模拟具有并发线程的多个用户,对测试中的Web应用程序造成较重的负载
- 支持多协议: JMeter不仅支持web应用测试,还支持数据库服务器性能评估。JMeter支持所有基本协议,如HTTP、JDBC、LDAP、SOAP、JMS和FTP
- 记录和回放 -记录浏览器上的用户活动,并使用JMeter在Web应用程序中模拟它们
- 脚本测试: Jeter可以与Bean Shell&Selenium集成,实现自动化测试。
JMeter工作原理介绍
JMeter的基本工作流程如下图所示:也就是JMeter模拟一组用户向目标服务器发送求,并通过图形化图表返回目标服务器的统计信息
JMeter已完成的工作流,如下图所示
JMeter版本与Java版本适配
版本 | 描述 |
---|---|
1 | 首次正式发布 |
2.13 | Java 6+ |
3 | Java 7+ |
3.1 | Java 7+ |
3.2 | Java 8+ |
3.3 | Java 8 |
4 | Java 8/9 |
注:现在JMeter最新版本我们还是推荐大家适配Java8,不要问什么原因,稳定好用就行了!切记不要去乱适配其他版本,防止出现不可预测问题影响项目进度或者项目实践。
二、JMeter安装与配置
JMeter的胸襟:
以下是与JMeter兼容的操作系统列表
- Linux操作系统
- Windows
- Mac OS
- Ubuntu
本文将在下面会给大家介绍:
- 安装JMeter的步骤
- 在GUI模式下启动JMeter
- 如何在非GUI模式下运行JMeter
- 在服务器模式下启动JMeter
- 在命令行模式下启动JMeter
- 在Linux中使用JMeter
安装JMeter的步骤
Step1 安装Java
因为JMeter是纯Java桌面应用程序,所以它需要完全兼容的JVM6或更高版本【本文推荐大家使用java8版本】。可以下载并安装最新版本的Java SE开发工具包。下载Java平台(JDK)
安装完成后,可以使用以下过程检查系统中是否成功安装了Java JDK
- 在Windows/Linux中,转到终端
- 输入命令java-version
如果Java运行时环境安装成功,将看到如下图所示的输出
如果没有显示任何内容,重新安装Java SE运行时环境
Step2 下载JMeter
当前,JMeter的最新版本是Apache JMeter 5.6.3。可以从这里下载:Apache JMeter - Download Apache JMeter
选择要下载的二进制文件(zip或tgz),如下图所示
步骤3) 安装
JMeter的安装非常简单。只需将zip/tgz文件解压缩成简单的解压缩文件,就ok了!
解压缩完成后,安装目录结构应如下图所示:(这里的Project是我自己新建的项目文件夹,大家不需要关注)
下面描述的是JMeter目录及其重要性JMeter目录包含许多文件和目录
- /bin:包含用于启动JMeter的JMeter脚本文件
- /docs:JMeter文档文件
- /Extras:与Ant相关的额外文件
- /lib/:包含JMeter所需的Java库
- /lib/ext:包含JMeter和协议的核心JAR文件
- /lib/junit:用于JMeter的Junit库
- /printable_docs:
步骤4) 启动JMeter
可以在3种模式下启动JMeter
- GUI模式
- 服务器模式
- 命令行模式
在GUI模式下启动JMeter
如果使用的是Windows,只需运行/bin/jmeter.bat文件即可在GUI模式下启动JMeter,启动后GUI界面如下图所示:
如何在非GUI模式下运行JMeter
在服务器模式下启动JMeter
分布式测试采用服务器模式。此测试以客户端-服务器模型的方式工作。在此模型中,JMeter在客户端计算机上运行,JMeter在GUI模式下运行。
要启动服务器模式,运行BAT文件jmeter-server.bat,如下图所示
在命令行模式下启动JMeter
GUI模式下的JMeter会消耗大量计算机内存。要保存要执行此操作的资源,使用以下命令选项
这是一个命令行示例
1 |
|
在Linux中使用JMeter
- 在Linux中使用JMeter与在Windows中使用JMeter相同;只需运行以下shell脚本即可。
- 运行脚本文件jmeter(此文件没有扩展名)-运行JMeter(默认情况下为GUI模式)。
- 在服务器模式下运行脚本文件jeter-server-start JMeter(使用适当的参数调用JMeter脚本) jmeter.sh -非常基本的JMeter脚本,没有指定JVM选项。 Mirror-server.sh -在非GUI模式下运行JMeter镜像服务器 shutdown.sh -运行关闭的客户端以正常停止非GUI实例 stoptest.sh -运行关闭的客户端以突然停止非GUI实例