jmeter使用方法简介以及一个自动测试解决方案

news/2024/11/27 6:12:30/

目录

  • jmeter是什么
  • jmeter下载以及部署
    • 2.1 下载
    • 2.2 安装部署
  • jmeter使用方法
    • 3.1 图形化界面
    • 3.2 命令行
    • 3.3 动态传参
  • 四 一个自动测试解决方案
  • 五 其他

这篇文章讨论一下jmeter工具的使用方法,以Linux发行版debian为例,Windows下使用方法类似。

jmeter_4">一 jmeter是什么

jmeter是Apache组织开发的一款跨平台的开源压测工具,可以用于对web应用以及多种领域的压力测试,而且jmeter还提供了数据分析和可视化功能,可以很方便的理解以及分析结果。

jmeter_8">二 jmeter下载以及部署

2.1 下载

先在官网下载页面下载jmeter

比如这篇文章我们就以图中这个版本为例
在这里插入图片描述

下载完成之后解压到合适的目录,比如使用命令tar -xzvf ./apache-jmeter-5.6.3.tgz就解压到当前文件夹里。

2.2 安装部署

使用jmeter需要先安装部署Java环境,所以我们要先执行命令apt install default-jdk安装java环境,这个命令会安装默认版本的java环境,当然也可以选择安装指定版本。

然后可以执行命令java --version确认是否已经安装完成。

安装好java环境之后,我们看一下刚才解压出来的文件,在/apache-jmeter-5.6.3/bin/目录下会有一些脚本以及可执行程序,启动jmeter可视化界面有多种方法,Linux下建议直接执行/apache-jmeter-5.6.3/bin/目录下的jmeter.sh脚本,Windows下建议直接执行/apache-jmeter-5.6.3/bin/目录下的jmeter.bat脚本,当然在启动前也可以选择先设置一下环境变量,这篇文章里就不设置环境变量了。

启动jmeter的图形化界面之后,可以选择改为中文界面。
在这里插入图片描述

这样就部署完成可以使用了。

jmeter_32">三 jmeter使用方法

为了演示特意用C++写了一个简单的http服务端程序的demo,直接手动按照http协议写的,具体代码就不放这里了。

3.1 图形化界面

启动jmeter的图形化界面之后,我们需要先创建一个测试计划,比如按照如下步骤:
1.点击文件->新建。
2.右键点击测试计划->添加->配置元件->HTTP请求默认值。
3.右键点击测试计划->添加->配置元件->HTTP信息头管理器。
4.右键点击测试计划->添加->断言->响应断言。
5.右键点击测试计划->添加->断言->响应断言。
6.右键点击测试计划->添加->线程(用户)->线程组。
7.右键点击测试计划->添加->线程(用户)->线程组。
8.右键点击测试计划->添加->监听器->汇总报告。
9.右键点击第一个线程组->添加->取样器->HTTP请求。
10.右键点击第一个线程组->添加->监听器->查看结果树。
11.右键点击第二个线程组->添加->取样器->HTTP请求。
12.右键点击第二个线程组->添加->监听器->查看结果树。

完成之后就是这个样子:
在这里插入图片描述

另外这些组件都是可以改名字的,可以选择改为一个觉得合适的名字。

然后我们需要设置具体内容,比如按照如下方式:

1.在测试计划里选择独立运行每个线程组。
在这里插入图片描述

2.在HTTP请求默认值里设置协议、服务器和端口。
在这里插入图片描述

3.在HTTP信息头管理器里设置信息头,比如使用json。
在这里插入图片描述

4.在第一个响应断言里选择响应代码,选择相等,设置为200。
在这里插入图片描述

5.在第二个响应断言里选择响应文本,选择包括,设置为ok。
在这里插入图片描述

6.在第一个线程组里设置线程数为2,循环次数为2。
在这里插入图片描述

7.在第一个线程组的HTTP请求里设置HTTP请求相关内容。
在这里插入图片描述

8.在第二个线程组里也设置一下,另外,在查看结果树和汇总报告里可以设置将数据保存到文件里,并且可以自定义保存哪些数据。
在这里插入图片描述

设置完成之后,我们点击保存按钮将测试计划保存下来,然后直接点击启动按钮,之后就可以在查看结果树和汇总报告里分析结果了,相关按钮可以在界面上方的工具栏找。
在这里插入图片描述

建议只使用图形化界面来创建和调试测试计划,实际测试还是要使用命令行,因为图形化界面会影响性能,从而就会影响测试结果。

3.2 命令行

使用命令行执行测试计划在Windows下和Linux下的命令几乎完全一样。

比如我们将测试计划保存在/apache-jmeter-5.6.3/bin/demo/目录下,保存为demo.jmx,可以使用命令./jmeter -n -t ./demo/demo.jmx -l ./demo/result.txt -e -o ./demo/webreport -j ./demo/jmeter.log执行测试计划。

解释一下这条命令的参数含义:

-n:使用命令行模式。
-t:指定测试计划.jmx文件所在位置。
-l:指定测试结果存放位置。
-e:指定需要生成测试报告。
-o:指定测试报告存放位置。
-j:指定测试日志存放位置。

使用命令行执行测试计划之后,我们可以看到生成了很多文件,这些文件包含了很多信息,比如测试结果result.txt,测试日志jmeter.log,以及其他很多文件,分析的时候都是可以利用起来的。
在这里插入图片描述

比如我们可以用浏览器打开index.html,可以看到详细的图形化报告,因为内容很多,这里就随便展示下,具体可以自己研究一下。
在这里插入图片描述

3.3 动态传参

jmeter有好几种方法可以实现动态传参,这里介绍其中一种方法。

比如我们想动态设置线程数,可以修改一下测试计划,设置线程数为${__P(concurrentNumber,1)},意思是线程数参数名为concurrentNumber,默认值为1。
在这里插入图片描述

保存修改之后就可以执行命令./jmeter -n -t ./demo/demo.jmx -l ./demo/result.txt -e -o ./demo/webreport -j ./demo/jmeter.log -JconcurrentNumber=2使用动态传参的方式执行测试计划了,这条命令里的-J参数就是指定需要动态传参,当然如果不传参就是使用默认值。

这里一个比较好的经验是将查看结果树这种组件保存的数据文件所在目录,设置为动态传参(比如设置为${__P(resultDir,/demo/result)}/resultxml/demo.xml),不然保存的位置和想象中可能区别很大,实际测试一下就知道情况了。
在这里插入图片描述

四 一个自动测试解决方案

这里提供一个自动测试解决方案,方案如下:

  1. 创建jmeter测试计划。
  2. 编写shell脚本,这个脚本具体做的事情包括:
    • 创建一个以日期时间命名的文件夹,用来保存正在执行的测试计划的测试结果,这样结构就会比较清晰。
    • 使用命令行的方式执行测试计划。
    • 解析生成的测试报告里的statistics.json文件的内容,这个文件里有比较详细的测试结果统计信息。
    • 根据解析出的statistics.json文件的内容生成需要的报告内容。
    • 将报告内容以需要的方式发送出来,比如使用curl或者邮件的方式发送为通知。
  3. 使用crontab设置定时任务,定时执行测试脚本就可以了。

当然shell脚本解析json文件好像是比较麻烦的,可以编写比如python脚本进行解析,然后shell脚本调用python脚本,具体方案可以根据需求调整。

五 其他

1.这篇文章有些细节并未展示,实际测试的时候应该就能发现了。

2.可以将应答数据使用提取器(比如JSON提取器,创建方式为右键某个元件->添加->后置处理器->JSON提取器)提取并保存到变量里,供之后的测试使用,比如将第一个api的应答保存下来,然后在第二个api的断言中使用。可以使用测试片段(创建方式为右键某个元件->添加->测试片段->测试片段)创建一些用来复用的测试流程,然后用模块控制器(创建方式为右键某个元件->添加->逻辑控制器->模块控制器)使用这些测试片段。可以使用Include控制器(创建方式为右键某个元件->添加->逻辑控制器->Include控制器)包含其他创建好的测试计划。这些内容只是简单了解了一下,所以就不展开了。

3.jmeter这个测试工具很强大的,可以查看官网了解更多用法。

如果这篇文章对你有帮助,别忘了关注我啊,可能我还会写出更多对你有帮助的文章


http://www.ppmy.cn/news/1550266.html

相关文章

ChatGPT的应用场景:开启无限可能的大门

ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中…

第 36 章 - Go语言 服务网格

服务网格(Service Mesh)是一种管理服务间通信的方法,它允许开发人员对服务之间的交互进行抽象化处理。通过在基础设施层面上实现这一点,服务网格可以帮助解决微服务架构中常见的复杂性和挑战,比如服务发现、负载均衡、…

SQL 复杂查询

目录 复杂查询 一、目的和要求 二、实验内容 (1)查询出所有水果产品的类别及详情。 查询出编号为“00000001”的消费者用户的姓名及其所下订单。(分别采用子查询和连接方式实现) 查询出每个订单的消费者姓名及联系方式。 在…

2023年十四届蓝桥杯Scratch01月stema选拔赛—鹦鹉学舌

第14届蓝桥杯Scratch01月stema选拔赛真题 点击下方链接,查看程序演示效果: https://www.hixinao.com/scratch/creation/show-331.html 如需查看选择题、编程题、全套真题可自行前往题库中心,按需查找~ 题库中心支持在线刷题&…

【c语言】文件操作详解 - 从打开到关闭

文章目录 1. 为什么使用文件?2. 什么是文件?3. 如何标识文件?4. 二进制文件和文本文件?5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…

【后端面试总结】MySQL面试总结

后端的面试中数据库是一个绕不开的话题,而其中事务又是出镜率很高的一个知识点,那么事务又是由哪些关键技术组成呢,总结起来就是4个关键点:ACID 原子性: 定义: 原子性是指一个事务是一个不可分割的工作单…

计算机网络八股整理(一)

计算机网络八股文整理 一:网络模型 1:网络osi模型和tcp/ip模型分别介绍一下 osi模型是国际标准的网络模型,它由七层组成,从上到下分别是:应用层,表示层,会话层,传输层,…

设计模式学习之——责任链模式

责任链模式的基本概念 定义:责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象按照一定顺序处理请求,并且每个对象可以选择自己是否处理该请求或者将其传递给下一个对象处理。 核心思…