jmeter的下载,安装与压测功能基本使用

1:背景介绍

由于最近需要对api接口进行压测,虽然可以通过编写脚本实现,但是本着‘面向对象’思想,专门的工作交给专门的工具来实现,顺便学习一下新的工具使用,并记录一下从0开始学习的jemter基础功能。

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。官方下载地址为:https://jmeter.apache.org/download_jmeter.cgi,打开页面如下,
在这里插入图片描述
按照自己所需下载相应的安装包(如果单纯在win中使用,只需要第二个即可,如果需要在linux环境中使用,建议同时下载两个安装包,因为可以在win环境中通过gui便捷的生成测试计划,然后再linux中执行测试计划),需要注意的是,当前页面上展现的是java1.8以上的版本,请没有java环境或者java版本过低的自行安装或升级,本例中不提供java环境jdk的安装。关于官方下载缓慢的情况,请自行搜寻云盘下载,这里不提供下载渠道。
windows可以在终端中查看jdk版本。

C:\Users\leel>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

C:\Users\leel>

linux环境中可以同样指令查看版本

[root@leel ~]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

如上所示,当java版本满足jmeter当前版本需求时,再来启动jmeter。

2:jmeter的安装使用

jmeter是无需安装的,每次使用是通过一个批处理文件来启动。
(1)如果是只需要在windows环境上使用,可以参考其他人的blog:https://blog.csdn.net/qq_19309473/article/details/121781920,这里有配置环境变量和更改gui的语言步骤,这里不详细展开。
(2)如果需要在linux环境中使用,可以不需要在window环境中配置环境变量,我们只需要借助gui来实现测试计划的编写以及结果的分析功能即可。
在windows中jmeter的启动是通过解压后的安装包中的一个批处理文件启动的,解压下载的安全包apache-jmeter-5.4.3.zip后,路径为apache-jmeter-5.4.3\bin\jemter.bat详细如下:
在这里插入图片描述
然后管理员权限打开得到如下的GUI页面(已经调整了语言并创建了一个案例
在这里插入图片描述
windows环境的jmeter暂且安装完成(因为我的最终目的是在linux环境中运行jmeter,所以无需配置window的运行环境)
在linux环境中,我们通过将下载好的apache-jmeter-5.4.3.tgz安装包传递到linux环境中,可以通过sftp,winscp工具,或者通过指令rz发送,建议放在目录/usr/local/jmeter如果没有jmeter目录,请自行创建这个目录,最终如下

[root@leel jmeter]# ll
total 69148
-rw-r--r-- 1 root root 70796171 Apr  8 11:23 apache-jmeter-5.4.3.tgz
[root@leel jmeter]# pwd
/usr/local/jmeter

随后解压到当前目录下

tar -zxf  apache-jmeter-5.4.3.tgz

接着需要配置jmeter的运行环境(请先确保java的环境,这里不赘述

vi /etc/profile

我们直接在编辑页面拉到最后,并添加如下的内容,并ESC+wq保存退出

export JMETER=/usr/local/jmeter/apache-jmeter-5.4.3
export PATH=${JMETER}/bin/:${PATH}

然后使得配置环境立即生效

source /etc/profile

通过jmeter -v检查是否生效,配置成功会显示如下结果

[root@leel jmeter]# jmeter -v
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.4.3

Copyright (c) 1999-2021 The Apache Software Foundation

至此,linux端的jmeter已经安装完成。

3:使用jmeter创建编写测试计划和压测

jmeter运行的测试计划的文件格式为.jmx,以官方的案例为例apache-jmeter-5.4.3\bin\examples\CSVSample.jmx,一个测试计划具体内容如下,

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="3.2" jmeter="3.3-SNAPSHOT.20170917">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="CSVSample" enabled="true">
      <stringProp name="TestPlan.comments">Example of using CSV DataSet</stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <intProp name="LoopController.loops">-1</intProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1226457982000</longProp>
        <longProp name="ThreadGroup.end_time">1226457982000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Get user details" enabled="true">
          <stringProp name="TestPlan.comments">Top level </stringProp>
          <stringProp name="delimiter">,</stringProp>
          <stringProp name="fileEncoding"></stringProp>
          <stringProp name="filename">CSVSample_user.csv</stringProp>
          <boolProp name="quotedData">false</boolProp>
          <boolProp name="recycle">false</boolProp>
          <stringProp name="shareMode">shareMode.all</stringProp>
          <boolProp name="stopThread">true</boolProp>
          <stringProp name="variableNames">USER,PASS</stringProp>
          <boolProp name="ignoreFirstLine">false</boolProp>
        </CSVDataSet>
        <hashTree/>

内容过长,不全部列举出来了。很明显,一个测试计划类似一个xml的文件,如果你对自己的实力不自信,或者不熟悉这种编程,就建议老老实实的通过windows上的jmeter的GUI界面设置好参数后,一键生成这个测试计划,岂不美哉?
打开windows上的jmeter(无需配置java的环境变量),按照如下图所示创建线程组
在这里插入图片描述
创建后,如下所示
在这里插入图片描述
然后开始编辑线程组属性,这里有三个参数需要设置,分别如下图所示,
在这里插入图片描述
由于需要进行REST的校验,需要填写http的请求头和请求体内容,所以右键点击test plan创建http新元件如下图所示
在这里插入图片描述
添加完请求头后,我们需要创建请求体,右键线程组,添加http请求,过程如下
在这里插入图片描述
创建后,需要填写http请求基本参数,如下图所示
在这里插入图片描述
这里建议,把测试结果的分析也创建好,分别是查看结果树和聚合报告,右键点击test_plan,过程如下图所示
在这里插入图片描述
创建好后,可以开始创建测试计划,点击左上角的文件->保存测试计划为即可实现测试计划的自动生成,在保存的目录下即可找到这个测试计划

4:开始linux端压测任务

将这个测试计划上传到linux端,通过sftp,winscp工具或者指令rz实现,
然后执行这个测试计划通过如下指令

jmeter -n -t test.jmx -l test.jtl   #后面的jtl是输出的测试日志,聚合结果,可以在GUI中打开查看

这里的test.jtl文件存储着全部测试线程的测试任务的耗时等信息,是一个csv格式的数据,可以再通过传到windows端的gui的聚合报告查看分析结果,如下所示
在这里插入图片描述

5:后记

本文只是提供了jmeter的从零开始的简单使用,整体来说这个工具比较简单,由于本人也是初探,也并非测试人员,只是开发了一个接口并用来做一个简单的压测使用,如果有说的不准确的地方欢迎大佬批评指正,互相学习进步。

参考:https://blog.csdn.net/qq_19309473/article/details/121781920
https://blog.csdn.net/weixin_43639512/article/details/89083363
https://blog.csdn.net/tototuzuoquan/article/details/78808688
https://www.cnblogs.com/hkgov/articles/7268366.html
https://blog.csdn.net/qq_37453279/article/details/107990659
https://blog.csdn.net/qq_34021712/article/details/78682397
https://blog.csdn.net/paidaxing_dashu/article/details/102677791

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值