Jmeter工作原理

向服务器提交请求,并从服务器取回请求返回的结果。即建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果.

文章内容以Jmeter5.0 版本为分享, 前提条件, 需要有jdk1.8 以上环境.

我们都知道jmeter是以java语言开发的, 它是免费的,跨平台的,开源的apache项目,且无需安装

相比于LR, 它的优势是显而易见的.

我们将Jmeter解压后可以看到如下结构目录:

1.Backups目录

文件备份目录, 备份jmeter运行时的脚本,备份文件的存储位置

2.Bin 目录

bin存放了配置文件(比如jvm设置,日志设置), 核心可执行文件, 启动文件, 报告生成方式, 启动jar包, 示例脚本等.

启动文件就在bin目录下, 点击jmeter 就可以启动jmeter应用程序了.

bin/jmeter

网上有很多文章介绍如何修改jmeter内存配置, Windows环境在jmeter.bat , Linux或Mac os 在jmeter.sh文件里, 我们通过实际操作发现修改这两文件没有作用, 那该怎么办呢? 官网肯定会给出解释.

我们来查阅一下官方文档提供的权威说明

https://jmeter.apache.org/usermanual/get-started.html#non_gui

直译:Jmeter需要设置一些环境变量去配置JVM 使用, 这些变量的设置在shell启动jmeter script 里. 翻译的如有偏颇请勿拍砖!

原来配置jvm内存在这里

我们打开看下

果然我们在jmeter 的启动脚本里找到了它.

这里是配置jmeter所需的jvm空间,我们要找的是jmeter启动后,运行时内存大小该如何配置, 接着往下看官网的解释

在这里我们发现了jmeter start后,java运行时内存管理

我们依然在对应的文件里顺利的找到了.

以上设置完成后, 我们保存重启jmeter.

我们设置jmeter好以后, 去验证一下jmeter启动后内存设置情况, 这里我们用到了Jconsole远程连接来查看jmeter内存情况.

从中我们不难发现, 和我们配置是相符的.

Bin/jmeter-server

在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大, 当需要模拟数以万计的并发用户时,使用单台机器模拟所有并发用户就有些力不从心, 甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能,可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试. 模型是一台Master, 多台slave,jmeter分布式 很好的解决了单台运算能力不足的问题.

Bin/jmeter.properties

一个重要的核心配置文件, 包含配置默认语言, 远程主机配置, 以及各类结果文件配置, 报告输出格式等等

知识点扩展:Jmeter的命令行功能也是非常强大的,在你的系统上配置好jmeter环境变量,直接指向bin目录,就可以使用如下脚本了jmeter -n -t demo.jmx -l test.jtl
参数说明:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> 要运行的 JMeter 测试脚本文件-l 日志文件 -> 记录结果的文件

docs目录

放置JMeter API 离线文档,是一个类似于java doc的在线帮助文档

extras目录

扩展插件目录。提供了对Ant的支持,可以使用Ant来实现自动化测试,如批量脚本执行,产生html格式的报表,测试运行时,可以把测试数据记录下来,jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行"ant -Dtest=文件名 report",就可以生成测试统计报表。

lib目录

JMeter 依赖的一些基础包放在 lib 根目录下,比如我们扩展了Java 请求,这个扩展是为了完成特定的任务,而这个特定的任务程序需要依赖其他的 Jar 包,那么这些 Jar 包就放置在 lib 根目录下。

JMeter 组件以 Jar 包的形式放置在 lib/ext 目录下,如果我们要扩展 JMeter 组件,扩展后的 Jar 包即放在此目录下,JMeter 启动时会加载此目录下的 Jar 包。

此地无论是我们自己扩展的还是第三方扩展jar包, 都在这个目录下进行管理, 因为jmeter启动的时候会对扩展包进行读取.

jmeter提供丰富的插件工具包可供下载 https://jmeter-plugins.org/install/Install/粗略的统计下大概有80个可供下载

并且支持在线和离线2种方式可供选择, 即使是在线方式安装插件,也会默认放在lib/ext目录下.

如何在线安装插件包我们在之前文章已经分享过.

 

license目录

JMeter licenses 相关声明信息放在此文件夹,全部是文本文件,对测试没有任何实际意义.

 

printable_docs目录

jmeter提供的在线帮助文档, 类似于一个用户学习文档, 是我们学习了解jmeter的最佳渠道.

软件测试交流718897738,测试工具测试资料都给你整理好了,免去网络上到处找寻资料的免费,节约时间高效率学习软件测试。

总结:

测试是一门技术, 更是一门艺术. 也许你今天拥有的技术, 明天就会被淘汰. 同时需要我们开拓思维和眼界, 积极拥抱变化, 学习新知识, 新方法,新技能, 计算机领域讲究的是实践, 学习更要讲究方式方法. 学习和动手一定要结合, 光看不练,犹如看武功秘籍, 是永远成不了武功大侠的.

最新文章

  1. winform在设置控件enabled=false后,无法更改控件字体颜色的问题
  2. winfrom 捕获是否点击关闭按钮关闭的窗体
  3. ORA-01157错误,丢失undo tablespace中数据文件的解决方法
  4. c# dataGridview的Cellclick移除事件
  5. Oracle数据库作业-6 查询“张旭“教师任课的学生成绩。
  6. CSS弹性盒模型 box-flex
  7. 【HDOJ】1542 Atlantis
  8. bzoj2756
  9. CH Round #53-数据备份
  10. #include <boost/shared_array.hpp>
  11. Shell的学习就从重装系统开始吧
  12. Coin Change (II)(完全背包)
  13. EntityFramework Core 2.0执行原始查询如何防止SQL注入?
  14. mysql 架构篇系列 4 复制架构一主一从搭建(半同步复制)
  15. (办公)json报错的解决问题的小经验.
  16. [C#.Net]KeyDown(KeyUp)和KeyPress的区别
  17. 基于vue实现一个简单的MVVM框架(源码分析)
  18. Linux使用一个定时器实现设置任意数量定时器功能【转】
  19. Unicode和UTF-8
  20. PHP深浅拷贝

热门文章

  1. Python中的计时函数
  2. Java并发编程的艺术(一、二章) ——学习笔记
  3. cb11a_c++_顺序容器的操作4_容器大小操作_resize-max_size
  4. MDX
  5. Shell脚本 概括
  6. 在运行时生成C# .NET类
  7. Day10-微信小程序实战-交友小程序-自定义callPhone 和copyText组件
  8. 新一代APM链路监控选型的一个总结重点是skywalking和pinpoint的对比
  9. Python表达式与生成式
  10. HTML&CSS面试高频考点(二)