每周读书与学习->认识性能测试工具JMeter

每周读书与学习->认识性能测试工具JMeter

6)、 双击上图文件夹中的jmeter.bat这个文件,即可启动Jmeter并且进入到Jmeter的运行界面

3、JMeter的组成

Jmeter 主要由如下主要组件组成,如下图所示,通常一个完整的性能测试需要由如下部分或者全部组件(在Jmeter中通常又称为元件)来串联完成性能测试脚本的编写,每个组件的介绍如下。

线程组(Threads Group):主要控制整个性能测试的运行开始时间以及运行时长、线程数量(即并发用户数)等,通常情况下,每个性能测试场景都需要先在Jmeter界面上创建一个线程组,然后才能运行后续的性能测试脚本,因为性能压测通常都是需要模拟大量的用户来进行并发操作,那么就需要线程组来通过多个线程的方式来模拟产生大量的用户。

配置元件(Config Element):主要用于完成性能测试中需要的一些配置信息以用来初始化变量或者参数的默认值、读取CSV文件数据、设置公共请求参数、赋予变量值等,以便后续取样器(Sampler)直接使用等,通常参数化也可以用配置元件来实现。

前置处理器(Pre Porcessors):即预处理器,用于在实际取样器(Sampler)发出请求之前对即将发出的请求进行初始化的预处理。

取样器(Sampler):通常用来模拟并发用户的操作,向待性能压测的对象发送请求以及接收相应的响应数据。取样器是Jmeter 性能压测的核心组件,通常情况下,如果需要完成一个性能测试场景,那么肯定是离不开取样器的。

逻辑控制器(Logic Controller):通常用来控制采样器的执行顺序,同时也可以对Jmeter中的元件的执行逻辑进行控制,因为在做性能测试时,经常会遇到一些比较复杂的业务场景,那么就可以使用逻辑控制器来完成一些特定的比较复杂的业务逻辑处理。

后前置处理器(Post Porcessors):用于在实际取样器(Sampler)发出请求之后对请求的响应结果进行后置处理。

断言(Assertions):通常用于对取样器返回的结果做检查以判断返回的响应结果是否正确,用于判断某次性能测试的结果是否通过,等同于LoadRunner中的检查点功能。

监听器(Listener):通常用来监听及展示JMeter取样器的执行结果,监听器支持以树、表及图形等形式展示当前正在压测的测试结果,也可以以文件方式保存测试结果,Jmeter支持XML、CSV等格式的来保存测试结果到指定的文件中,监听器通常是用于对性能测试的结果做统计分析以快速的发现性能压测中可能存在的性能问题。

定时器(Timer):类似于LoadRunner中的思考时间(think time),用来设置线程的延迟和同步时间,通常是在每个取样器发出请求之前执行。

上面说的这些常见的组件,在启动了Jmeter后,可以通过如下图所示的方式来进行添加各个组件(元件)。每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

Jmeter的默认界面展示的是英文效果,可以通过点击界面上的菜单Options-> Choose Lanuage来切换到中文显示,如下图所示。

切换完成后,就可以看到如下图所示的中文界面展示的效果了,中文界面通常更容易理解和操作Jmeter提供的菜单以及相关的功能。

为了方便大家学习Jmeter,在本书的后续讲解中,都将会使用中文的界面来对Jmeter进行深入讲解。

使用Jmeter 开始一个性能测试的主要步骤如下图所示,通常情况下线程组、取样器、断言、监听器是每个性能测试都必须有的元件,对于一些复杂的业务场景,可能需要用到更多的元件。

4、JMeter的运行模式

Jmeter 常用的运行模式主要包括GUI模式、命令行模式以及服务器模式,大多时候,直接运行jmeter.bat或者jmeter.sh时启动的就是GUI模式,jmeter.bat通常是在Windows 操作系统下自动GUI模式,而jmeter.sh通常用于在Linux或者UNIX操作系统下启动GUI模式。

1)、GUI模式

GUI 模式通常用于Jmeter性能测试脚本的编写,因为GUI模式会启动Jmeter的标准界面,Jmeter的使用者可以通过界面来进行操作,这样更直观和简单,在Windows操作系统中,GUI模式直接通过运行jmeter.bat这个批处理文件来启动,在jmeter.bat这个批处理文件中,定义了启动GUI模式的具体启动命令,主要包括Java JDK、JVM虚拟机参数以及需要运行的Jmeter的Jar包,启动的过程如下图所示。

2)、命令行模式

命令行模式通常是Jmeter 提供的用于做性能压测的模式,因为Jmeter是Java语言开发的,对于Java语言来说,GUI界面并不是其最擅长的,在高并发压测时,GUI界面通常容易卡死,所以在GUI模式中完成性能测试脚本编写后,建议在实际运行压测时,切换到命令行模式会更好,命令行模式顾名思义就是在Windows或者Linux/Unix操作系统中,直接通过运行jmeter命令来执行性能压测,命令行模式中支持的命令行参数如下:每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

-h, --help:输出命令行的所有帮助信息,如下图所示。

-v, --version:输出Jmeter的版本信息。

-p, --propfile :启动时指定jmeter的属性配置文件的路径。

-q, --addprop :启动时添加额外的Jmeter的属性配置文件的路径。

-t, --testfile :启动时指定要运行的Jmeter的测试计划的文件(.jmx),在GUI模式下编写好的性能测试计划脚本,可以保存为.jmx后缀的文件。

-l, --logfile :启动时指定Jmeter取样器日志的输出路径。

-i, --jmeterlogconf :启动时指定Jmeter的日志配置文件的路径(默认会使用bin目录下log4j2.xml)。

-j, --jmeterlogfile :启动时指定Jmeter日志的输出路径(默认会输出到bin目录下的jmeter.log中)。

-n, --nongui:启动时以无GUI界面的模式运行,也就是启动时不会展示Jmeter的GUI界面。

-s, --server:以Jmeter服务器的模式运行。

-E, --proxyScheme :启动时增加设置代理服务器。

-H, --proxyHost :启动时设置使用的代理服务器的IP或者域名。

-P, --proxyPort :启动时设置使用的代理服务器的端口号。

-N, --nonProxyHosts :启动时,设置哪些IP地址或者域名不需要走代理服务器进行代理。

-u, --username :启动时,设置代理服务器的用户名。

-a, --password :启动时,设置代理服务器的密码。

-J, --jmeterproperty =:启动时,以key-value的形式指定需要添加的Jmeter属性配置。

-G, --globalproperty =:启动时,以key-value的形式指定需要添加的Jmeter全局属性配置。

-D, --systemproperty =:启动时,以key-value的形式指定需要添加的系统属性配置。

-S, --systemPropertyFile :启动时添加额外的系统属性配置文件的路径。

-f, --forceDeleteResultFile:设置是否强制删除现有的已经存在的性能测试结果文件和web报告文件夹。

-L, --loglevel =:设置Jmeter中指定组件的日志输出级别,比如可以设置jmeter.util=DEBUG,因为jmeter.util是Jmeter中的一个组件名。

-r, --runremote:启动时,设置需要启动的远程服务器的IP地址或者域名地址,这些需要启动的远程服务器地址需要被配置在Jmeter属性配置的remote_hosts属性配置中。

-R, --remotestart :启动时,设置需要启动的远程服务器的IP地址或者域名地址,如果使用了该参数,将会覆盖Jmeter属性配置的remote_hosts属性配置中配置的需要远程启动的服务器地址。

-d, --homedir :设置Jmeter运行时的主目录路径。

-X, --remoteexit:设置测试结束时退出远程服务器,但是当前自己所在的GUI模式的界面不会退出。

-g, --reportonly :设置性能测试时,仅通过测试结果文件来生成最终的测试报告仪表板。

-e, --reportatendofloadtests:设置性能测试时,当负载测试结束后,生成测试报告仪表板。

-o, --reportoutputfolder :设置性能测试时,生成的测试结果报告的输出文件夹路径。

3)、服务器模式

Jmeter的服务器模式通常用于Jmeter的分布式压测中,在性能测试中,当一台Jmeter压测机无法提供足够的并发用户时,就需要用多台压测机器同时来提供并发用户进行性能压测,如下图所示。

当出现这种场景时,就会用到Jmeter的服务器模式了,此时Jmeter 会存在多个工作节点,每个节点都会以服务器的模式启动,由于启动了多个服务器节点,那么肯定还需要一个Jmeter管理节点服务来管理这些工作节点,如下图所示。每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

当需要进行分布式压测时,需要在每一台性能压测机中安装Jmeter,并且在每台性能压测机中修改Jmeter中的 jmeter.properties 属性配置文件,该文件位于Jmeter的bin目录中,在jmeter.properties 属性配置文件中,按照如下图所示的方式

设置remote_hosts配置,在remote_hosts中添加每一台Jmeter工作节点的IP地址,以逗号隔开。

设置server_port,默认为1099,该端口用于当Jmeter以服务器模式启动时,会启动一个RMI服务端口,该端口用于启动RMI注册监听服务(即rmiregistry服务),RMI通讯时,会先连接到该端口上查找当前可用的Server端服务。

设置client.rmi.localport,该端口默认为0,表示让操作系统随机分配一个可用的端口,该端口用于和server_port端口进行通信时,需要启动一个RMI本地服务通信端口,server_port和client.rmi.localport都是用于RMI通信,如下图所示,RMI是Remote Method Invocation的简写,表示远程方法调用,是Java JDK在1.2版本中开始实现的一个基于Java语言实现的远程调用方法,RMI的出现,让Java语言有了分布式处理的能力。

在完成上述的设置后,如果Jmeter是部署在Windows操作系统中,可以运行jmeter-server.bat来启动Jmeter的服务器模式,如果Jmeter是部署在Liunx/Unix操作系统中,可以运行jmeter-server.sh来启动Jmeter的服务器模式。

在完成上述配置后,并且在每一台Jmeter的工作节点上以服务器模式运行Jmeter后,再在Jmeter的管理节点上以GUI模式启动Jmeter后,可以在Jmeter的GUI界面菜单的运行菜单下,看到远程启动,如下图所示,可以选择远程启动运行单台远程服务器来运行当前的性能测试计划,比如选择图中的server1_ip来运行,也可以选择远程启动所有这个选项来在所有的远程服务器上来运行当前的性能测试计划。

5、本次学习总结

主要介绍Jmeter的基本信息、性能测试的发展历程、Jmeter的安装部署以及其主要的组成部分,通过本次的学习,建议读者们需要重点掌握:

如何在本地安装和部署Jmeter。

Jmeter的组成部分包含哪些?

通过完成本次的学习,读者们需要对Jmeter的相关概念有一个初步的了解和认识。

出处:本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书

你可能也喜欢

电子键盘型号与示范曲数据库
365bet官网地址

电子键盘型号与示范曲数据库

📅 08-14 👀 5563
1941年,项英壮烈牺牲,新娶的妻子李又兰与张爱萍改嫁,生有3子均为栋梁
手机电充了反而下降 手机充着电还往下掉电是怎么回事
摄像头驱动到底该去哪下?内置/外接一次讲透
beat365中文官网

摄像头驱动到底该去哪下?内置/外接一次讲透

📅 09-19 👀 8991
头部主播PDD停播238天后现身A妹直播间
beat365中文官网

头部主播PDD停播238天后现身A妹直播间

📅 09-12 👀 3511
中国电信翼支付开启“五五购物节”,以普惠权益激活城市消费活力