JMeter性能测试工具快速入门教程

Posted pythontesting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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集成进行自动化测试。

参考资料

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是否在您的系统中安装成功

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实例。

开源性能测试工具JMeter快速入门


目录

一、JMeter简介

二、JMeter功能介绍

三、JMeter脚本

四、关于JMeter小提示




三、JMeter脚本


1.测试计划

测试计划是JMeter进行测试的起点 ,是其他JMeter测试元件的容器,每个测试场景/脚本都叫做一个测试计划。

(1)名称;与业务相关的名称

(2)注释:非必填

(3)用户定义的变量,引用时直接用${变量名}即可,这里的变量是全局变量,作用于整个测试计划。

(4)独立运行每个线程组:默认不勾选,即所有线程组并发启动。勾选则顺序执行所有线程组。

(5)

技术分享图片

结束线程运行后,停止主线程。

(6)函数测试模式:默认不勾选 。勾选则记录详细请求,增加资源消耗,影响客户端性能。

(7)

技术分享图片

向类路径(%JMeterHOME%\lib)中添加目录及JAR包。


2.VUser及场景设计

JMeter的场景设计 及Vuser都是在线程组下设计的。

这里线程-->Vuser(并发用户数)

循环次数及调度器-->场景设计模块

技术分享图片

(1)线程属性:

线程数

Ramp-Up Period:线程间的时间间隔

循环次数:请求的重复次数 。

Delay thread Creation until needed:延迟创建线程,直到需要创建时创建。

(2)调度器

持续时间:测试计划持续时间,将覆盖结束时间

启动延迟:测试计划延迟多少时间启动,将覆盖启动时间。


3.使用Badboy进行脚本录制

Badboy录制较简单,无需使用代理;但不能像JMeter代理可以录制到URL相关的静态文件及dwr请求。

录制完成后导出为JMeter格式的,然后在JMeter中直接打开脚本就可以使用了。

技术分享图片


4.参数化

(1)在测试计划中使用“用户定义变量”,

添加参数,然后找到需要参数化的脚本,将其值修改为:${key}即可

(2)使用自带的随机函数

JMeter中有函数助手,有多个内置函数,可以用相关函数进行参数化设置。

方法:打开函数助手 ,填写min,max ,函数名称,点击“生成”,复制生成的随机函数到需要参数化的地方 。


5.关联

JMeter的关联是基于正则和Xpath Extractor实现的。

(1)名称、注释、Apply to 默认即可。

(2)要检查的响应字段 :表示在哪个地方提取正则表达式,一般选择Body即可。

(3)引用名称:其他地方引用提取值的变量名称,引用方式为${变量名称}

(4)正则表达式,提取的正则表达式主体

(5)模板,用$$引用起来,正则表达式的提取模式,值从1开始 ,值0对应的是整个匹配的表达式。

(6)默认值,若返回结果中无匹配的值,则变量的值采用默认值 。


6.检查点

JMeter的检查点是用断言实现的,使用较多的是响应断言 。如下添加断言后,需要在相应的监听器中添加“断言结果”才能在执行后查看断言结果是否正确。

(1)名称、注释、 Apply to 默认

(2)要测试的响应字段,文本、代码均可

(3)模式匹配规则 :

匹配:需达到精确匹配

Equals:返回结果与指定结果一致

SubString:返回结果是指定结果的子串

否:不进行匹配

(4)要测试的模式,若设置多个断言结果 ,则需要所有结果通过才成功 ,否则失败


7.思考时间

JMeter的思考时间是用定时器实现的。默认时,JMeter发送请求是没有时间间隔的。添加间隔是为了更真实模拟用户请求,同时可以减少服务器压力。无论定时器放在哪里 ,它都会在Sampler前执行,若需要在某个位置暂停,,可加入Test Action。

定时器的作用域,若在线程组下添加多个定时器,则会累加作用于线程组内的所有Sampler,可以在单独的Sampler中添加定时器。


8.集合点

JMeter中使用Synchronizing Timer实现集合点功能 ,模拟多用户并发测试。

表示集合点够多少个用户才开始执行并发,在使用中发现最后一批线程数不够时,JMeter会停止不动。


9.结果分析

技术分享图片

运行性能场景时,开启多个监听器会消耗资源 。常用的有聚合报告 、图形结果、监视器结果 等等。




四、关于JMeter小提示


1.尽量少用监听器

2.尽量把相似的Sampler放在循环内, 使用变量修改这些Sampler,而不是重复添加Sampler

3.不要使用函数测试模式

4.以CSV格式输出结果  ,尽量不用XML格式

5.只保存需要的数据结果

6.最好在调试脚本时使用断言,运行脚本时禁用断言 ,这样有利于精准测试结果

7.查看结果树和用表格查看结果监听器最好在调试脚本时使用,不在负载测试期间使用

8.若需要测试大量数据,则可以提前准备好测试Data并放在数据文件中,避免浪费资源 。

9.对于大并发量的负载测试,尽量在多台机器上运行多个非GUI JMeter实例,进行分布式测试。

10.若测试过程中报内存不足, 可以在jmeter的bin目录下找到jmeter.bat来修改JVM内存设置,如修改为:HEAP="-Xms512m -Xmx512m"这样可减小频繁申请创建、销毁内存引起的性能损耗开销。


以上是关于JMeter性能测试工具快速入门教程的主要内容,如果未能解决你的问题,请参考以下文章

开源性能测试工具JMeter快速入门

开源性能测试工具JMeter快速入门

性能工具之 JMeter 快速入门

Jmeter性能测试 入门

Jmeter接口压测快速入门

Jmeter性能测试 入门