【压测】Jmeter入门

一时失言乱红尘 2022-05-14 14:50 413阅读 0赞

一、前言

  1. 项目做大的时候就必不可少要进行压力测试,常见的压力测试工具有loadrunnerJmeter。最近小编在项目中接触了Jmeter,有一些感触,所以做一些这方面的总结。主要包括了两个方面:直接通过可视化界面操作,还有就是自己编写Jmeter运行脚本来操作。

二、介绍一些Jmeter

  1. Jmeter Apache组织开发的基于Java的压力测试工具,开源并且支持多个操作系统,是一款很好的HTTP测试工具。迅速掌握Jmeter的基本工程配置流程,并可以使用GUI界面进行基础的测试工作。
  2. Jmeter是由Java开发的,所以在运行之前需要安装Jre,具体的安装过程可以参考这篇文章的内容。接下来直接进入正题,假设后端开发了一个IP地址查询库,想做一下基本的性能测试,使用Jmeter如何做?

三、基本测试

3.1 基本测试

  1. 首先打开Jmeter软件。

在这里插入图片描述

  1. jmeter\_gui

3.1 添加线程组

  1. 所有的测试工作都是从新建一个线程组开始的。

在这里插入图片描述

  1. 它的作用其实是为了模拟用户,所以也叫Users。一个线程组模块可以包含多个线程,每个线程代表一个用户,这样可以模拟高并发下的请求,并根据网站的响应信息来判断网站的相关性能。

在这里插入图片描述

  1. 线程组包含很多属性,目前我们只关注线程属性那一块。其中线程数代表访问的并发数,默认是1Ramp-Up Period 表示多长时间内容启动所有线程,如果时间很短,会造成网站的瞬间高并发,默认值是1秒。循环次数是表示执行多少次,默认值为1,表示执行一次结束,这里可以勾选永远,让其一直运行下去。
  2. 这些属性暂时不用动,因为还没有将工程配置好,测试工程配置的时候使用单次测试容易排查问题,以后压力测试直接修改该面板的值即可。

3.2 添加HTTP请求

  1. 因为是HTTP接口,这里添加一个HTTP请求,用来访问网站的API接口。

在这里插入图片描述

  1. HTTP请求面板主要的目的是设置测试时候HTTP请求的相关信息,模拟浏览器访问或者其他程序访问后台的相关配置。

在这里插入图片描述

  1. 该面板主要的配置包括协议、服务器IP、端口、方法、路径和参数等内容,接下来可以将测试样例的相关信息填入。
  2. 这里测试使用的是淘宝IP地址库,首页有Rest API接口的测试接口说明:
  1. 请求接口(GET):
      /service/getIpInfo.php?ip=[ip地址字串]
      2. 响应信息:
      (json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
      3. 返回数据格式:

    {

    1. "code": 0,
    2. "data": {
    3. "ip": "210.75.225.254",
    4. "country": "中国",
    5. "area": "华北",
    6.   "region": "北京市",
    7. "city": "北京市",
    8. "county": "",
    9. "isp": "电信",
    10.   "country_id": "86",
    11. "area_id": "100000",
    12. "region_id": "110000",
    13. "city_id": "110000",
    14.   "county_id": "-1",
    15. "isp_id": "100017"
    16. }

    }

其中code的值的含义为,0:成功,1:失败。
  因为是GET请求,所以具体内容填写如下:

3.3 添加结果树

  1. 现在基本配置已经OK,但是这样执行后返回的结果却没有地方查看。为了方便查看结果,这里添加View Results Tree面板,有很多其它的结果查看面板,大家可以自己尝试一下。

在这里插入图片描述

  1. 结果树主要是观察服务器响应信息,并支持将结果写入文件。

3.4 HTTP信息头管理器

  1. 使用HTTP信息头管理,可以帮助测试人员设定JMeter发送的HTTP请求头所包含的信息

在这里插入图片描述

在这里插入图片描述

3.5 聚合报告

  1. 查看所有请求的综合情况。最常用的就是聚合报告模块。

在这里插入图片描述

在这里插入图片描述

  1. 压测结果查看

运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。

  1. Samples:表示一共发出的请求数
  2. Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
  3. Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
  4. Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

压测结果的分析

  1. 有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
  2. Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
  3. 压测结束,·登陆相应的web服务器查看CPU等性能指标,进行数据的分析;
  4. 最大的tps:不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps。
  5. 最大的并发数:最大的并发数和最大的tps是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
  6. 压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。
  7. 影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。

3.6 批量测试 CSV Data Set Config

  1. 批量测试要想做好有三个最基本的问题。第一个如何做到批量输入,测试肯定越偏向于越真实越好,很多都是拿线上数据进行测试,在Jmeter中最简单的批量导入的手段就是使用CSV Data Set Config面板。第二个是如何校验返回结果,批量测试不像单个测试可以人眼扫描,大批量的数据返回肯定是看不过来的,在Jmeter中可以使用断言,类似于编程中的断言,可以校验返回结果是否正确。第三个是如何统计数据,这个最方便,因为基本的统计Jmeter有很多原生的模块。
  2. 该模块主要是从外部加载数据使用,可以按照规定的格式读取并将文本解析成对应的变量,可以供其它模块使用。

在这里插入图片描述

  1. 这里拿IP地址为案例。首先准备一个文件,每行一个IP

在这里插入图片描述

  1. 然后,在CSV Data Set Config面板中如下配置:

在这里插入图片描述

  1. 这里的配置很简单,Filename代表解析的文件,这里选择刚刚创建的Ip列表文件。
  • File encoding 代表文件编码,使用默认配置。
  • Variable Names 代表赋值的变量,这里可以填写多个变量,但是目前每行只有一个ip地址。
  • Ignore first line 是否忽略首行,主要是对那些有标题头的文件格式,接下来Delimiter 代表每行的分隔符,这里每行一个变量,填什么都无所谓,保持默认即可。
  • Recycle on EOF/Stop thread on EOF/Sharing mode 这三个设置一般用于测试文件数据的使用策略。如果你想只测试文件中的数据,测试完成后终止,那么需要将Recycle on EOF和 Stop thread on EOF 分别设置为false和true。
  • Sharing mode这里保持默认即可。

    有了数据的输入,接下来修改HTTP请求,让每次请求的参数不同。

在这里插入图片描述

3.7 开始测试

  1. 接下来再将HTTP请求面板改回原来的样子。点击清除按钮,清除当前无用的测试结果,然后点击开始按钮进行新的测试。

在这里插入图片描述

  1. 小技巧:这里请求面板改来改去感觉很麻烦,有一个简单的办法就是改之前将面板拷贝到工作台,测试后,再将其拷贝回去,这样就节省再次更改的时间了。当然复制/禁用的效果也是类似的。

四、小结

  1. 压力测试才能发现其中的问题,以前总是没有特定留意一下压力测试,现在自己亲自感受一下的时候,才发现压力测试还是很重要的,系统要做大,就要用压力测试。

发表评论

表情:
评论列表 (有 0 条评论,413人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Jmeter分布式

    一、为什么要使用分布式测试 按照一般的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易造成卡顿、无响应等情况,这是限

    相关 Jmeter

    Jmeter工具使用入门教程 添加线程组 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text

    相关 jmeter接口入门

    jmeter压测接口入门 一、适用场景 1、用于压测java接口或其他服务接口,测试接口性能,如对接口的qps有预期要求,需要达到某个值才可以使用接口 二、准备工具