jmeter入门简介

1.引入

1.1 为什么要学习jmeter

  1. 免费开源
  2. 多系统兼容
  3. 轻量级工具
  4. 易用
  5. 插件丰富
  6. 功能强大
    • 接口功能测试
    • 接口自动化测试(jmeter+maven/ant+jenkins)
    • 接口性能测试

与其他性能测试工具比较:

  • apacheAB:不接受服务器返回数据,只返回code,比jmeter快,返回结果无意义
  • loadrunner:商用收费软件,功能强大,图表丰富。
  • locust:基于python的免费开源工具,图表简单,不支持资源监控
  • gatling:基于java的免费开源工具,使用代码执行性能测试,灵活性强,学习成本较高

1.2 官网相关介绍

http://jmeter.apache.org

Documentation--Best Practices 最佳实践

Documentation--Component Reference 组件

Documentation--Function Reference 函数

Tutorials--Distributed Testing 分布式压测

2.jmeter安装及目录结构

2.1 安装及配置

jmeter是基于JAVA的应用,需要有JDK环境的支持

要求JDK版本和Jmeter版本匹配(jmeter官网有要求)最低1.8

外观设置(选项--外观)

GUI语言设置

1.永久设置:jmeter.properties 搜索:language值改为zh_cn

2.临时设置:选项--选择语言--简体中文

日志级别

选项--日志级别

debug<info<warning<error 默认info

2.2 目录结构

bin:Jmeter的主jar包,启动脚本、配置文件和日志文件等

  • ApacheJmeter.jar:jar包启动文件(不会启动命令行)
  • Jmeter.bat/Jmeter.sh:启动文件
  • Jmeter.properties: Jmeter的配置文件,配置文件一旦修改,要重启Jmeter才能生效

docs:jmeter的官方API文档,主要用于二次开发

extras:存放一些附加组件,主要是jmeter和ant的集成所需要的一些文件

lib:该目录发生变更,jmeter必须重启才会有效

lib\ext目录:存放的是第三方的组件和插件,包括我们自己做的二次扩展的

printable_docs:存放的是jmeter官方的帮助文档

启动jmeter 

windows:Jmeter.bat/java -jar ApacheJMeter.jar

linux:jmeter.sh/java -jar ApacheJMeter.jar

3.组件介绍

jmeter有六大组件

配置元件、定时器、前置处理器、后置处理器、断言、监听器

这六大组件都可以添加到测试计划、线程组、逻辑控制器、取样器

3.1 配置元件(ConfigElement)

作用:类似于项目的配置文件

主要有:

  • csv数据文件设置
  • HTTP信息头管理器
  • HTTP Cookie管理器
  • HTTP请求默认值
  • 计数器
  • JDBC Connection Configuration

3.2 前置处理器(Pre Processors)

作用:在取样器请求之前执行的一些操作,比如加密入参

主要:BeanShell预处理程序

3.3 定时器(Timer)

作用:一般用来指定请求发送的延时策略,不建议使用

主要有:

  • 固定计时器
  • 同步定时器(集合点)
  • 高斯随机定时器

3.4 后置处理器(Post Processors)

作用:在取样器请求完成之后执行一些操作,通常用于处理响应数据,从中提取需要的值(关联)

主要有:

  • 正则表达式提取器
  • 调式后置处理程序
  • jp@gc-JSON/YAML Path Extractor
  • BeanShell后置处理器

3.5 断言(Assertions)

作用:主要用于判断响应是否返回了期望的业务结果

主要有:

  • 响应断言
  • 断言持续时间
  • BeanShell断言

3.6 监听器(Listeners)

作用:监听器可以在JMeter执行测试的过程中搜集相关的数据,并展示

主要有:

  • 查看结果树
  • 聚合报告
  • 用表格查看结果
  • jp@gc-Transactions per Second(tps)
  • jp@gc-Reponse Times Over Time(响应时间)
  • jp@gc-Active Threads Over Time(线程时间分布)

3.7 其他

测试计划(Test Plan)

线程:下面有线程组

  • 线程组(Thread Group)
  • jp@gc-Stepping Thread Group
  • SetUp线程组
  • tearDown线程组

逻辑控制器(Logic Controller)

  • 事务控制器
  • 吞吐量控制器(控制业务模型)
  • 仅一次控制器
  • ForEach控制器

取样器(Sampler)

  • HTTP请求
  • jp@gc-Dummy Sampler(mock取样器)
  • 调试取样器
  • JDBC Request
  • 其他:java,tcp,websocket

4.执行顺序和作用域

4.1 执行顺序

1.配置元件
2.前置处理器
3.定时器
4.取样器
5.后置处理器
6.断言
7.监听器

4.2 作用域

取样器(sampler):不和其他元件相互作用,因此不存在作用域问题

逻辑控制器(Logic Controller):只对其子节点中的取样器和逻辑控制器作用

6大组件:配置原件,前置处理器,定时器,后置处理程序,断言,监听器

总结:

  • 如果是某个sampler的子节点(放在取样器下面),则该元件对其父子节点起作用(这个父节点就是取样器)
  • 如果其父节点不是sampler(比如是:测试计划、线程组、逻辑控制器、取样器),则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

结论:

  1. 和Java变量作用域类似:局部没有,就用全局的
  2. 最简单的方式:全部放局部,但是会耗费很多客户端资源
  3. 所以,公共的,放全局,比如断言的内容相同,特有的,放局部,就是放对应的组件(线程组)或者取样器下面,比如取样器的断言内容不一样
posted @ 2023-06-21 18:13  万溪汇海  阅读(30)  评论(0编辑  收藏  举报