JMeter性能测试工具快速入门教程
简介
什么是JMeter?
Apache JMeter TM是纯Java 开源软件,最初由Apache Software Foundation的Stefano Mazzocchi开发,旨在负载测试功能行为和测量性能。 您可以使用JMeter分析和测量Web应用程序或各种服务的性能。 性能测试意味着针对重负载,多个和并发用户流量测试Web应用程序。 JMeter最初用于测试Web应用程序或FTP应用程序。 如今,它也用于功能测试,数据库服务器测试等。
JMeter的优点
- 开源 :JMeter完全免费,允许开发人员使用源代码进行开发
- 友好的GUI :JMeter非常易于使用,并且不需要时间来熟悉它
- 独立于平台 :JMeter是100%纯Java桌面应用程序。 所以它可以在多个平台上运行
- 完整的多线程框架 。 JMeter允许通过单独的线程组同时和同时采样不同的函数
- 可视化测试结果:测试结果可以以不同的格式显示,如图表,表格,树和日志文件
- 易于安装 :您只需复制并运行* .bat文件即可运行JMeter。 无需安装。
- 高度可扩展 :您可以编写自己的测试。 JMeter还支持可视化插件,允许您扩展测试
- 多种测试策略 :JMeter支持许多测试策略,如负载测试 ,分布式测试和功能测试 。
- 模拟 :JMeter可以使用并发线程模拟多个用户,对正在测试的Web应用程序造成沉重负担
- 支持多协议 :JMeter不仅支持Web应用程序测试,还评估数据库服务器性能。 JMeter支持所有基本协议,如HTTP,JDBC,LDAP,SOAP,JMS和FTP
- 录制和回放 - 在浏览器上记录用户活动,并使用JMeter在Web应用程序中模拟它们
- 脚本测试 :Jmeter可以与groovy, Bean Shell和Selenium集成进行自动化测试。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
JMeter如何工作?
JMeter的基本工作流程如下图所示
JMeter模拟一组用户向目标服务器发送请求,并通过图形图表返回目标服务器的统计信息
Introduction to JMeter
完成JMeter的工作流程,如下图所示
Jmeter版本历史
- 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的操作系统支持
理论上JMeter在任何具有兼容Java实现的系统上正确运行。
以下是与JMeter兼容的操作系统列表
Linux
Windows
Mac OS
Ubuntu
安装JMeter的步骤
- 步骤1)安装Java
因为JMeter是纯Java桌面应用程序,它需要一个完全兼容的JVM 6或更高版本。你可以下载并安装最新版本的Java SE开发包。
安装完成后,您可以使用以下程序来检查Java JDK是否在您的系统中安装成功
-
步骤2)下载Jmeter
截至目前,JMeter的最新版本是Apache JMeter 5.5。https://jmeter.apache.org/download_jmeter.cgi -
第3步)安装
JMeter的安装是非常容易和简单的。你只需将zip/tar文件解压到你想安装JMeter的目录中。没有繁琐的安装屏幕需要处理! 只需解压缩,就可以完成了!
一旦解压完成,安装目录结构应如下图所示
如何用简单的步骤安装Jmeter
以下是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模式下运行JMeter
服务器模式用于分布式测试。这种测试的工作方式是客户端-服务器模式。在这种模式下,JMeter以服务器模式运行在服务器计算机上。在客户端计算机上,JMeter以GUI模式运行。
要启动服务器模式,需要运行bin\jmeter-server.bat文件,如下图所示
在命令行模式下启动JMeter
在GUI模式下,JMeter会消耗很多计算机内存。为了节省资源,你可以选择在没有GUI的情况下运行JMeter。要做到这一点,请使用以下命令选项
这是一个命令行的例子
$jmeter -n -t testPlan.jmx -l log.jtl -H 127.0.0.1 -P 8000
额外的软件包
根据你的要求,你将需要下面列出的一个或多个可选软件包。
-
Java编译器
Java编译器允许开发人员构建JMeter源代码和其他JMeter插件 -
SAX XML解析器
SAX是XML的简单API,最初是只用Java的API。你可以使用SAX XML解析器作为JMeter中XML解析器的替代。 -
电子邮件支持
JMeter具有广泛的电子邮件功能。它可以根据测试结果发送电子邮件,并有POP3(S)/IMAP(S)采样器。它也有SMTP采样器。 -
JDBC驱动
如果你想测试数据库服务器,你必须安装JDBC驱动程序。
在Linux中使用JMeter
- 在Linux中使用JMeter与在Window中使用JMeter是一样的;你只需运行下面的shell脚本。
- 运行脚本文件jmeter(该文件没有扩展名)- 运行JMeter(默认为GUI模式)。
- 运行脚本文件jmeter-server – start 以服务器模式启动JMeter
- jmeter.sh - 非常基本的JMeter脚本,没有指定JVM选项。
- mirror-server.sh - 在非GUI模式下运行JMeter镜像服务器
- shutdown.sh - 运行Shutdown客户端,优雅地停止非GUI实例
- stoptest.sh - 运行Shutdown客户端,突然停止非GUI实例。
3线程组,采样器,监听器,配置
什么是元素?
JMeter的不同组件称为Elements。 每个元素都是为特定目的而设计的。
线程组
线程组是线程的集合。 每个线程代表一个用户,每个Thread模拟一个到服务器的真实用户请求。
线程组的控件允许您设置每个组的线程数。
例如,如果将线程数设置为100; JMeter将创建并模拟100个用户对被测服务器的请求
取样
线程组如何知道需要进行哪种类型的请求(HTTP,FTP等)呢?答案是采样器。用户请求可以是FTP请求,HTTP请求,JDBC请求......等。
- FTP request
假设您想要对FTP服务器进行性能测试。 您可以在JMeter中使用FTP请求采样器来执行此任务。 此控制器允许您将FTP“下载文件”或“上载文件”请求发送到FTP服务器。
例如,如果要从测试的FTP服务器下载文件“Test.txt”,则需要在JMeter中配置一些参数,如下图所示
JMeter将FTP命令发送到FTP服务器ftp.example.com ,然后从该服务器下载文件Test.txt。
HTTP请求:
- HTTP request
此采样器允许您将HTTP/HTTPS请求发送到Web服务器。
考虑下面的例子。 JMeter向Google网站发送HTTP请求,并从该网站检索HTML文件或图像。
- JDBC请求:
此采样器允许您执行数据库性能测试 。 它将JDBC请求(SQL查询)发送到数据库。
例如,数据库服务器具有存储在表名test_tbl中的字段test_result。 您想从数据库服务器查询此数据; 您可以配置JMeter将SQL查询发送到此服务器以检索数据。
- BSF采样器:
此采样器允许您使用BSF脚本语言编写采样器。
以下是JMeter中BSF采样器的示例
- 访问日志采样器:
此采样器允许您读取访问日志并生成HTTP请求。 日志可以是图像,Html,CSS ......
- SMTP采样器:
如果要测试邮件服务器,可以使用SMTP采样器。 此采样器用于使用SMTP协议发送电子邮件。
- 监听器:显示测试执行的结果。 它们可以以不同的格式显示结果,例如树,表,图形或日志文件
图形结果侦听器在图形上显示服务器响应时间
查看结果树以基本HTML格式显示用户请求的结果
表结果以表格格式显示测试结果的摘要
日志在文本文件中显示测试结果的摘要
配置元素
设置默认值和变量供以后采样器使用。
下图显示了JMeter中一些常用的配置元素
- CSV数据集配置:
假设您要为使用不同凭据登录的100个用户测试网站。 您不需要记录脚本100次! 您可以参数化脚本以输入不同的登录凭据。 该登录信息(例如,用户名,密码)可以存储在文本文件中。 JMeter有一个元素,允许您从该文本文件中读取不同的参数。 它是“CSV数据集配置”,用于从文件中读取行,并将它们拆分为变量。
这是CSV数据的示例。 这是一个文本文件,其中包含用于登录目标网站的用户和密码
- HTTP Cookie管理器
让我们用一个例子来理解这一点 -
您使用浏览器(Firefox,IE ...等)浏览www.google.com
您使用您的用户名和密码登录。
您的用户名和密码将作为cookie存储在您的计算机中。
下次访问www.google.com时 ,您无需再次登录,因为您的浏览器将使用您的Cookie作为用户数据登录。
HTTP Cookie管理器也具有与Web浏览器相同的功能。 如果您有HTTP请求并且响应包含cookie,则Cookie管理器会自动存储该cookie,并将其用于将来对该特定网站的所有请求。
- HTTP默认请求
此元素允许您设置HTTP请求控制器使用的默认值。
例如,
您正在向服务器google.com发送100个HTTP请求
您必须为所有这100个请求手动输入server name = google.com
相反,您可以使用“服务器名称或IP”字段= google.com添加单个HTTP请求默认值
无需键入100次!
- 登录配置元素
登录配置元素允许您在采样器中添加或覆盖用户名和密码设置。
例如,您希望使用用户和密码模拟一个用户登录网站www.facebook.com 。 您可以使用登录配置元素在用户请求中添加此用户和密码设置
登录配置元素 | CSV数据配置 |
---|---|
用于模拟一个用户登录 | 用于模拟多个用户登录 |
仅适用于登录参数(用户和密码) | 适用于大量参数 |