1.简介
JMeter是一种应用程序,它提供了多种可能性,可以使用不同的技术和协议来配置和执行负载,性能和压力测试。
它允许针对所有类型的数据库,FTP,HTTP,HTTPS或其他类型的服务器模拟不同类型的请求。
简要解释所有这些概念的含义可能是一件好事:
- 负载测试:这种测试可以使测试的系统或应用程序达到设计和要求的极限。它们用于测量极端条件下的系统和应用程序行为。
- 性能测试:这些测试用于检查系统在性能方面的行为,即系统如何响应以及特定工作负载的稳定性。
- 压力测试:这些测试试图通过加载更多资源并使模块超出设计的限制来破坏或破坏系统。
JMeter最初旨在测试Web应用程序,但其功能已得到扩展,如今,它可以针对几乎所有类型的程序进行测试,并可用于在您的应用程序中执行功能测试。
2.使用的技术
JMeter是Java桌面应用程序。它的UI使用Swing Java API实现。由于这两点,JMeter是多平台的,可以在装有Java虚拟机的任何类型的计算机中运行:Windows,Linux,Mac。
它的框架允许并发和执行多个线程和线程组。在尝试配置负载和压力测试时,这非常有用。
它是可扩展的,并且有大量可用的插件。
JMeter是Apache软件基金会的一部分,并且是完全免费和开源的(http://www.apache.org/licenses/)。
3.这篇文章是关于什么的?
本文是有关如何在没有JMeter经验的情况下为开发人员和软件工程师使用JMeter的教程。
它还提供了有关不同可能配置和测试计划的示例以及操作方法。在下一章中,我们将了解如何安装JMeter以及如何配置,运行,存储和分析不同类型的测试计划的结果。
4.安装
您需要执行以下步骤才能在计算机上安装并运行JMeter:
- 首先,您必须安装Java。您的计算机中需要安装JRE 1.6或更高版本。为此,只需访问Oracle下载站点并安装适合您的系统的软件包:http : //www.oracle.com/technetwork/java/javase/downloads/index.html。
- 将
JAVA_HOME
环境变量设置为指向计算机上安装Java的基本目录位置。对于Windows用户:
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_20
或任何Java版本。
- 将Java编译器位置附加到系统路径。对于Windows用户:
C:\Program Files\Java\jdk1.7.0_25\bin
到系统变量Path的末尾。
- 通过转到命令行并键入以下内容来检查计算机中是否已安装Java:
java -version
应该出现以下内容:
java version ``"1.8.0_20"``Java(TM) SE Runtime Environment (build 1.8.0_20-b26)``Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
- 从http://jmeter.apache.org/download_jmeter.cgi下载最新版本的JMeter
C:\>JMeter
例如,将其提取到文件夹中(在Windows中)。- 该文件夹的结构应类似于:
apache-jmeter-2.9``apache-jmeter-2.9\bin``apache-jmeter-2.9\docs``apache-jmeter-2.9\extras``apache-jmeter-2.9\lib\``apache-jmeter-2.9\lib\ext``apache-jmeter-2.9\lib\junit``apache-jmeter-2.9\printable_docs
- 然后,您可以通过转到文件夹
C:\jmeter\apache-jmeter-2.11\bin
(Windows用户)并启动程序来启动JMeterjmeter.bat
。 - 您应该看到JMeter GUI的开始屏幕:
5. GUI概述
JMeter GUI非常直观且易于使用,提供了用于文件处理的常用菜单,如新建,打开,保存,另存为等,以及用于启动和停止测试计划以及配置它们的特定菜单。通过单击鼠标右键,每个测试计划,线程组和测试计划节点(我们将在下一章中详细介绍)将提供不同的上下文菜单选项。
也可以更改UI的语言,并且可以使用多种语言。
正如我们所说,GUI非常直观,易于使用,并且为每个菜单和操作提供了非常易懂的工具提示。这是JMeter如此广泛使用的原因,除了其质量以外,因为它真的很容易理解和学习如何使用它。
6.可用请求
JMeter为几乎所有类型的系统提供测试配置,但通常开箱即用地涵盖以下协议:
- Web:HTTP,HTTPS网站“ Web 1.0” Web 2.0(ajax,flex和flex-ws-amf):之后我们将看到如何测试潜在的网页及其行为。
- Web服务:SOAP / XML-RPC。
- 通过JDBC驱动程序的数据库。几乎支持任何种类的数据库,您只需要一个合适的驱动程序,并将其打包在JMeter安装目录中的相应文件夹中即可。之后,我们将举一个MySQL数据库测试的例子。
- 目录:LDAP。
- 通过JMS的面向消息的服务
- 使用POP3,IMAP,SMTP的邮件服务。
- FTP服务。
- 使用JUnit和Java应用程序进行功能测试。
7.测试计划和组成
基本上,使用JMeter包括测试计划的创建,配置和执行以及结果的分析。测试计划是针对本地或远程服务器(或客户端)的请求集,这些服务器被配置为按照特定说明运行。
在测试计划的配置中,您可以指定几个输入和输出参数,并且可以配置应满足的基本条件,以便测试计划成功与否。
JMeter测试计划由不同的组件组成。这是最重要的列表,其中包含有关如何使用JMeter UI添加它们以及它们的目的的说明:
7.1线程组
线程组基本上是不同测试计划元素的组合。它是测试计划的基础,它控制基本的中心参数。
为了创建测试计划,您可能必须首先创建一个线程组并配置其线程数,加速周期,循环计数以及万一出现错误的行为:
- 线程数:将用于执行测试计划的线程数,对于配置负载和压力测试非常重要。
- 加速期: JMeter需要启动所有线程的时间。
- 循环计数:迭代次数,即测试将要执行的次数。
- 错误行为:出现错误时该怎么办:停止当前线程,停止整个测试,继续…
线程组还具有开始和结束时间配置选项。通过单击复选框“ Scheduler”,将出现一个带有计划参数的新部分,您可以配置测试的开始和结束时间。
配置完成后,您可以开始将其他测试计划元素(例如采样器,侦听器和计时器)添加到线程组。我们将在下一章中解释所有这些。
7.2采样器
采样器用于将请求发送到不同类型的服务器。它们是每个测试计划的基本元素,所有工作都围绕着它们进行:它们执行请求(基于提供的配置),并且这些请求产生一个或多个响应,然后进行分析。这是JMeter中可用的采样器列表(我们将在本教程中看到其中的一些采样器):
- 访问日志采样器
- AJP采样器
- 豆壳采样器
- BSF采样器
- 调试采样器
- FTP采样器
- HTTP采样器
- Java采样器
- JDBC采样器
- JMS(几个)采样器
- JSR223采样器
- JUnit采样器
- LDAP(几个)采样器
- 邮件阅读器
- MongoDB采样器
- 操作系统进程采样器
- SMTP取样器
- 肥皂
- TCP采样器
- 测试动作
正如我们在上面的列表中看到的那样,有很多不同类型的采样器。此列表不完整,因为在不同的JMeter插件中实现了多个采样器。每个采样器的配置取决于其执行的请求,这意味着某些采样器具有共同点,但其他采样器由于其请求的性质而完全不同。
7.3逻辑控制器
逻辑控制器是允许您配置线程组内不同采样器的执行顺序的元素。此列表包含JMeter中所有可用的逻辑控制器:
- 简单控制器
- 回路控制器
- 一次性控制器
- 交错控制器
- 随机控制器
- 随机顺序控制器
- 吞吐量控制器
- 运行时控制器
- 如果控制器
- 当控制器
- 开关控制器
- 每个控制器
- 模块控制器
- 包含控制器
- 交易控制器
- 录音控制器
7.4听众
侦听器提供了不同的方式来查看采样器请求所产生的结果。侦听器以表,树或纯日志文件的形式解析结果。
可以将它们添加到测试计划中的任何位置,但是它们只会解析和收集采样器级别或以下级别的结果数据。
这些是JMeter中可用的侦听器:
- 样本结果保存配置
- 图形完整结果
- 图形结果
- 样条可视化器
- 断言结果
- 查看结果树
- 汇总报告
- 查看表中的结果
- 简单数据写入器
- 监控结果
- 分布图(alpha)
- 聚合图
- Mailer Visualizer
- BeanShell侦听器
- 总结报告
7.5计时器
您可以使用计时器定义两次请求之间要等待的时间。如果您未指定任何请求,JMeter将在当前请求完成后立即执行下一个请求,而不会等待任何时间。
JMeter中提供以下计时器:
- 恒定计时器
- 高斯随机计时器
- 统一随机计时器
- 恒定吞吐量计时器
- 同步计时器
- JSR223时间
- BeanShell时间
- BSF时间
- 泊松随机时间
7.6断言
断言通过验证采样器请求产生的响应来确认测试计划的有效性。断言基本上与单元测试断言相似,并检查已测试应用程序响应的质量。您可以为每种测试计划配置哪种断言处于活动状态。
这是JMeter中可用断言的列表:
- 豆壳断言
- BSF断言
- 比较断言
- JSR223断言
- 回应断言
- 持续时间断言
- 大小断言
- XML断言
- BeanShell断言
- MD5Hex断言
- HTML断言
- XPath断言
- XML模式声明
7.7配置节点
您可以使用配置元素将不同的参数传递给采样器请求。它们提供了一种创建变量的方法(不同的和动态的),以后可以由采样器使用。它们在执行采样器之前在其所属节点的开头执行,这就是为什么采样器可以依赖这些变量的原因。
这是可以在JMeter中使用的所有配置节点的列表:
- 计数器
- CSV数据集配置
- FTP请求默认值
- HTTP授权管理器
- HTTP缓存管理器
- HTTP Cookie管理器
- HTTP代理服务器
- HTTP请求默认值
- HTTP标头管理器
- Java请求默认值
- 密钥库配置
- JDBC连接配置
- 登录配置元素
- LDAP请求默认值
- LDAP扩展请求默认值
- TCP采样器配置
- 用户定义的变量
- 简单的配置元素
- 随机变量