热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

压测工具笔记(二)之JMeter

压测工具笔记(二)之JMeter简介环境下载安装解压安转目录文件说明配置环境变量启动HTTP接口测试测试计划(初始化会创建一个࿰

压测工具笔记(二)之JMeter

      • 简介
      • 环境
        • 下载
        • 安装/解压
          • 安转目录文件说明
        • 配置环境变量
        • 启动
      • HTTP接口测试
        • 测试计划(初始化会创建一个)
        • 线程组
        • HTTP请求
        • 测试
        • 测试报告
      • JMeter进阶
        • 自定义变量
      • JMeter命令
        • 分布式测试
      • 注意:
      • 专有名词说明:
      • 使用体验:


压测工具笔记(一)之主流工具

压测工具笔记(二)之JMeter


简介

JMeter是Apache下的一个顶级项目,一个功能强大压力测试工具

JMeter是一个纯java写的开源软件,用来测试可变行为和性能。起初它设计的目的是测试Web应用,但是现在已经扩展到其它的测试

JMeter既提供了GUI界面方便用户使用也提供了命令行的方式让用户操作

环境


  • 下载

    登录官网,下载安装包或者解压包(推荐使用压缩包)

    **低版本注意:**5.4版本支持JDK1.8以及更高的版本在这里插入图片描述


apache-jmeter-5.4.1.tgz
apache-jmeter-5.4.1.zip


HTTP接口测试

JMeter可以支持测试的应用/服务/协议有很多,目前主要介绍HTTP请求

接口测试的主体流程:创建测试计划,计划中创建线程组,线程组中创建线程HTTP请求,进行测试


JMeter进阶


  • 自定义变量

    同postman一样,我们也可以在jmeter中创建测试的变量

    右键点击Thread Group,添加->配置元件->用户定义的变量,也可以在测试计划或者HTTP请求下创建,这样作用域就是整个测试计划或者HTTP请求。然后选择用户定义的变量,并在右边点击添加按钮,添加host和port两个变量:

    在JMeter中使用变量是通过来引用的,比如要引用host变量,就是{}来引用的,比如要引用host变量,就是,host,{host},然后我们选择HTTP请求,把IP地址和端口改为引用变量的形式

  • JMeter命令

    我们的服务器基本都是Linux系统,而我们的服务器应该不会安装GUI操作界面,因为这对于用来运行服务来说不但没用,还会吃掉很多cpu和内存资源,可能还会让服务器不稳定。这也是JMeter建议我们不要用GUI的方式去测试的原因。既然这样,为什么JMeter又要提供GUI界面呢,看回JMeter的启动控制台,有这样一行信息:

    jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

    这里我们关注一个参数是-t,后面接jmx文件,这个文件就是上面保存的jmx文件,它保存了JMeter压测时需要的线程组、HTTP请求等配置参数。打开可以看到其实是一个xml格式的文件,里面有各种各样的参数,如果没有GUI界面,让用户去手写这么一个配置文件,那就很麻烦了。

    jmeter的完整参数可以通过jmeter -?查看,这里只介绍几个常用的参数:

    -n:非GUI模式,其实就是命令行的模式
    -t:后跟测试文件(jmx文件)
    -l:后跟log文件,把测试的过程输出到日志文件中
    -e:测试结束后生成报告
    -o:测试报告存放目录,必须是空目录

    下面的命令行完成后会在指定的目录生成html格式的测试报告,下面只展示index.html,打开它,就可以看到很漂亮的图形化的报告了,可以拿去给你们老板看了。

    jmeter -n -t "D:\Tools\apache-jmeter-5.4.1\bin\http\Test Plan.jmx" -l "D:\Tools\apache-jmeter-5.4.1\bin\http\Test Plan.log" -e -o E:\Game\jemeter_result

    在这里插入图片描述

  • 分布式测试

    上面所介绍的是在一台机器上的操作,那么就会有这么一个问题:当你设置线程数为10时,在一台4核心cpu的机器上执行,这台机器模拟出10个线程当然没问题,但是假如你把线程数提升到10000,表面上这台机器也在努力地给你模拟10000个线程,但是它的核心数也只有区区4个,在底层其实还是操作系统在不断切换线程来模拟这10000个线程,线程切换需要时间,发送请求也需要时间,这样做的话除了让测试机的cpu使用率飙升到100%之外,还可以让你得到一份不准确甚至错误的数据,因为你的机器其实是没办法在5秒来把这10000个请求发送完毕的。这个时候我们就需要用多台机器去同时给接口机发送请求,这就是分布式测试。

    说一下大致的原理,我们准备多台机器,其中一台作为master机器,其余的作为slave机器,master机器用来发送指令,slave机器去执行,原理图如下:

    img

    这些机器的要求如下:

    1. 关闭防火墙或者打开响应的端口
    2. 在同一个子网
    3. JMeter可以访问测试的接口
    4. JMeter的版本一致,JDK的版本也一致,否则可能出错
    5. 必须为RMI设置SSL或者关闭它

    满足了以上的条件,先执行各个slave里bin目录下的jmeter-server,然后开发master机器上的JMeter的bin/jmeter.properties文件,找到remote_hosts=127.0.0.1那行,并且改为slave内网地址,地址之间用英文逗号分隔,然后打开master机器上的JMeter,像单机那样测试就可以了。


注意:

关闭前需要保存我们设置好的测试计划

问题:
保存测试脚本时只保存了Testplan下的部分节点,导致生成的测试脚本只是“testplan”下面的某些元素,,不包括需要运行测试所需的“TestPlan”元素。

解决方案:
在保存测试脚本时,保存整个测试计划,以下两种方式

1.在文件菜单中单击“保存测试计划”或“保存测试计划为”选项;

2.鼠标选中测试计划节点,直接点击工具栏上的“保存测试计划”按钮

专有名词说明:


专有名词说明
TestPlan测试计划,相当于一个工程,需要测试什么,怎么测就是定义在一个测试计划中
Thread Group线程组,相当于模拟的请求数。一个线程相当于一个用户请求
察看结果树监听发送请求时各个请求的状态
聚合报告把一次测试的数据汇总

使用体验:

使用下来的第一感官是:工具功能强大,但是GUI做的是真的low,连自适应都没有。

相对来讲Windows风格的界面是最友好的一个了 选项–>-外观->Windows

参考:https://www.cnblogs.com/spareyaya/p/12807638.html


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
author-avatar
大帅哥明日夜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有