JMeter基础介绍及简单应用

JMeter 基本介绍

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。 ------摘自百度百科

JMeter优点

  1. 开源工具,可扩展性非常好。(纯java开发,可以根据需求自己更改源码)
  2. 高可扩展性,用户可自定义调试相关模块代码。(可以自己编写BeanShell脚本或者引用jar包调用接口进行测试)
  3. 精心简单的GUI设计,小巧灵活。(JMeter直接解压即可,无需安装,但是需要配置JDK1.7以上的环境。完全Swing的轻量级组件支持包。)
  4. 完全的可移植性和100%纯java。(预编译的JAR使用 javax.swing.*包)
  5. 完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样。
  6. 支持脚本取样器

简单的说,就是Jmeter能做 功能测试 和 性能测试 。它能够对HTTP和FTP服务器进行压力和性能测试,
也可以对任何数据库进行同样的测试,还能以多种形式展现测试结果。

声明:jmeter本身不需要安装,只需要配置好JDK环境,然后在在jmeter文件中的bin文件中打开jmeter.bat文件即可

JMeter基本概念

  1. 线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求(可以理解为loadrunner中的虚拟用户组)。在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数。
  2. 取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等。在jmeter 的所有sampler 中,Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler。
  3. 逻辑控制器(Logic Controller),包括两类元件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。它与Sampler结合使用可以模拟复杂的请求序列。
  4. **配置元件(config element)**用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改Sampler的默认数据。(例如,HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的cookie 进行管理)。维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
  5. 定时器(Timer):用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
  6. 前置处理器(Per Processors):用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
  7. 后置处理器(Post Processors):用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据。
  8. 监听器(Listener):负责收集测试结果,同时也被告知了结果显示的方式。它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图行结果、查看结果树、聚合报告。
  9. 断言(Assertions):断言用于检查测试中得到的相应数据等是否符合预期,一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是很有用的。

JMeter的简单使用

创建线程组
在这里插入图片描述
在这里插入图片描述

在线程组下面发起各种请求,这里以HTTP请求为例
在这里插入图片描述
配置参数发起请求
在这里插入图片描述
查看结果集
我们这里选择查看结果树
在这里插入图片描述
查看结果
在这里插入图片描述

ok。一个简单的使用流程。
ps:这个是最简单的JMeter的使用流程,用来检测接口性能。

正常情况下我们都能测试接口,但是如果项目做了集成,单一测试某个接口,每次都会被拦截到登陆页面,这样是无法测试接口性能的。

此时结果树的响应头就会显示如下截图:
在这里插入图片描述

解决方法如下:

正常在页面上进行登录,登录成功之后,F12打开控制台,点到网络(network)这一栏。刷新页面。这时就能看到请求头和cookie。
在这里插入图片描述在这里插入图片描述
此时,在JMeter的HTTP请求上新增一个HTTP Cookie管理器和HTTP请求头信息管理器
在这里插入图片描述
在这里插入图片描述

配置如下

HTTP Cookie管理器添加了就行不做任何操作
HTTP 请求头信息管理器 把你上面获取到的request headers 的信息按照Key-Value 对的形式添加上去:
在这里插入图片描述

接下来再去请求接口就可以直接请求成功了。在这里插入图片描述

也会有小伙伴遇到测试 登录接口时,登录接口有前端、后端加密的,这个时候使用HTTP请求会遇到如下问题。

在这里插入图片描述
内心戏:我明明已经登陆成功了,为啥响应体还是登录页面阿!

这个时候就需要我们JMeter的BeanShell自定义脚本出场了。

不了解BeanShell脚本的同学们,可以访问这里
这时需要再发HTTP请求之前加上 前置处理器:BeanShell PreProcessor
在这里插入图片描述

同时还需要引入对应的加密解密的jar包(也就是后端小哥哥写的加密解密的class文件或者java文件)
name如何引入jar包,或者所谓的java文件呢
在测试计划 父窗口上在这里插入图片描述
导入之后 我们就可以在BeanShell脚本上调用具体的加密解密的接口方法进行登录接口的测试了。
在这里插入图片描述
相信各位同学 可以从这个简单的例子中联想到它的很多用法,了解了这个特性,那么足够你用JMeter和java来做很多事情了,要说的是,本例中之所以是通过引入外部jar包的形式,是想通过它说明,我们可以把很多复杂的、公用的工具类的代码都封装在jar里这样方便我们精简和重用代码。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值