JMeter 全方位使用指南:从入门到精通性能测试
一、JMeter 介绍Apache JMeter 是一款基于 Java 开发的开源压力测试工具。它功能全面、体积小巧、使用方便,无需安装,解压即可在 Windows, Linux, macOS 等多个平台上运行。JMeter 不仅能执行专业的性能和压力测试,还可以用于接口功能测试。 本指南将带你从 JMeter 的安装开始,逐步深入到接口测试脚本编写、性能测试核心概念、测试执行与分析等各个方面。 二、安装与配置1. 环境准备JMeter 依赖于 Java 开发环境 (JDK)。在运行 JMeter 之前,请确保你的计算机已正确安装 JDK 并配置了环境变量。 2. 下载 JMeter访问 Apache JMeter 官网 下载最新的二进制压缩包 (Binaries)。 3. 启动 JMeter下载完成后,解压压缩包。进入 bin 目录,根据你的操作系统执行相应的启动脚本: Windows: jmeter.bat Linux/macOS: jmeter.sh 注意: 启动过程可能较慢,请耐心等待。 启动时打开的命令行窗口(黑窗口)不能关闭,否则 JMeter 会...
Beanshell用法
Jmeter 里面有几个用到Beanshell的地方,这里作同一介绍。 Beanshell Sampler – 一个独立的beanshell请求 Beanshell PreProcessor – sample的一个预处理装置,在sample之前执行,可用来作为执行的先决条件(例如产生某些输入) Beanshell PostProcessor – 在sample之后再执行的一个提交处理器,可用来恢复数据或这清除数据 Beanshell Assertion – 一个访问jmeter api 的后期断言装置,Java的逻辑可以被用来设置这个断言的结果 __Beanshell Function – 允许在sample执行期间,客户自定义beanshell代码的jmeter函数 下面说明会经常使用的beanshell语法: 假设你有个自定义的变量id,想给这变量重新赋值,那么你可以使用vars操作相关变量:获取变量:vars.get("id"); 给变量赋值:vars.put("id","J_123456"); 如果你...
前置处理器
前置处理器 预处理器是JMeter的元素,在测试场景中用于执行采样器请求之前执行的操作。预处理器可用于不同的性能测试需求,例如从数据库中获取数据、在采样器执行之间或在测试数据生成之前设置超时。 BeanShell PreProcessor假设我们要测试一个需要“token”参数的请求,这个参数可以是任何随机自字符串,我们可以轻松使用预处理器生成随机字符串并在采样器中使用它的一个很好的例子,BeanShell预处理器适用于此,因为它可以管理性能脚本中的任何程序员任务。 Right Click on the Sampler -> Add -> Pre Processors -> BeanShell PreProcessor 参数说明: Reset bsh.Interpreter before each call: 在每次调用之前重置解释器并清除占用的内存。将此选项设置为“True”对于长时间运行的脚本可能很有用,因为重复调用可能会消耗大量内存 **Parameters :**将传递给BeanShell脚本的JMeter参数。您需要记住,如果在此配置字段中未指...
JMeter响应断言
JMeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似。用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。 jmeter常用几种断言 Response Assertion(响应断言) Size Assertion(数据包字节大小断言) Duration Assertion(持续时间断言) beanshell 断言(自由断言) JSON断言 Response Assertion(响应断言)添加响应断言对Web请求的响应结果进行验证 输入需要匹配的字符串此处对于访问Baidu首页,需要设置匹配的字符串为“百度一下,你就知道”,表示返回的文本内容若包含有“百度一下,你就知道”,则就算Pass Response Assertion配置参数 模块类型 选项名称 配置说明 Name Response Assertion名称 Comments 注释 Apply to 断言应用的范围 Main sample and sub-samples 作用于父节点取样器及其子节点取...
ab压测工具使用
Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用 安装(centos)123yum -y install httpd-toolsorapt -y install apache2-utils ab参数说明1234567891011121314151617181920212223242526272829303132333435363738394041424344454647-n:一个要执行的次数。默认为1。【-n和-c一般成对出现。eg[-c 10 -n 1000]:同时处理10个请求,每组运行(1000/10)次,必须满足n能整除c】-c:单次发出的并发请求数。默认为1。【-n和-c一般成对出现。eg[-c 10 -n 1000]:同时处理10个请求,每组运行(1000/10)次,必须满足n能整除c】-t:测试所进行的最大秒数。用于测试的最大秒数是50000【等价于-n 50000】,它可以使对服务器的测试限制在一个固定的总时间以内。-p postfile:File containing data to POST. Remem...
结合cmd方式使用jmeter
使用命令行方式运行Jmeter前言命令行方式支持在多个环境下使用,windosw的dos环境下,也可以在linux环境上执行。 怎么用**执行路径:**执行命令前要检查当前目录是否是%JMeter_Home%\bin目录;如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。命令中不指定测试计划与测试结果的路径时,默认都是在该目录下。 命令:jmeter -n -t <testplan filename> -l <listener filename> 示例测试计划与结果,都在%JMeter_Home%\bin目录1jmeter -n -t test1.jmx -l result.jtl 指定日志路径的1jmeter -n -t test1.jmx -l report\01-result.csv -j report\01-log.log 默认分布式执行1jmeter -n -t test1.jmx -r -l report\01-result.csv -j report\01-log.log ...
jmeter模拟浏览器行为发送请求(web页面端压力测试)
背景 在做性能测试的时候,有时候我们希望测试用户访问一个web页面的加载时间,使用 jmeter 压测的话,需模拟浏览器的行为,加载整个页面的内容。包含一些js,css,png图片资源等文件的加载。 参考: https://blog.csdn.net/meitingbee/article/details/53924469 https://blog.csdn.net/qq_27371025/article/details/117945423 https://www.jianshu.com/p/c5370860b142
把jmeter结果数据写入到指定文件
背景:在日常的功能测试或者性能测试的时候,需要把结果中指定的数据保存到指定的文件,进行使用. 示例围绕 beanshell 来实现这个功能 下面从两个方面来实现:保存接口返回指定的数据从数据库用 SQL 语句取数据,保存结果到指定文件中保存接口返回指定的数据接口:登录 需求:提取 token 值 新建 HTTP 请求 请求返回的结果,这里直接用 JSON 显示: 新建 JSON 提取器 调试,看有没有获取到值添加 debug sampler 运行,查看 debug sampler 响应数据里面 token 有没有取到值 添加 beanshell 取样器 代码1234567891011121314151617181920212223242526272829303132333435363738//指定需要写入到xxx文件,若没有该文件会新建;若存在该文件,多次执行将以追加模式展示File file = new File("D:/xxx.txt");if (!file.exists()) { //创建失败会抛出异常throw new IO...
jmeter线程组执行顺序设置
背景 当前请求需要上一个请求响应的数据做参数的值传入到当前请求里,这种情况必须保证上一个请求先执行,才能保证当前请求可以得到参数的值 操作 此示例为将登陆之后获取的cookie放置到全局变量中, 供后续线程组使用 按此配置后, 执行顺序会从上到下依次执行 注: 如果使用了不同的线程组可能会遇到非预期执行顺序的现象 除了主线程组,还有两种特殊的线程组:setUp线程组和tearDown线程组. 它们与主线程组区别在于,setUp线程在主线程执行前自动触发执行;而tearDown线程组在主线程结束后执行。 setUp线程组可以用于测试准备,比如用它来创建测试用户等。 Teardown线程组可以用于测试清理工作,比如删除测试用户等。
json提取器使用方法
一、 json path 语法 在线网站地址:链接 摘自https://blog.csdn.net/qq_45664055/article/details/121523930 1、提取lastName的值可以写$.lastName $: 代表整个json,根节点 . : 点代表下个节点 $.lastName 意思就是,找到根节点下的lastName的值 2、提取根节点下的 address,下的streetAddress 根节点下的 address是一个对象,在json中以{}括起来的叫对象,city是address对象的子节点,所以表达式写为:$.address.streetAddress 3、提取列表中的值 phoneNumbers的值是一个列表,列表使用[] 括起来,列表中可以存放多个对象。 提取phoneNumbers列表中的第一个对象的type的值,语法:$.phoneNumbers[0].type 取列表里面的值,要在后面加上[],里面填写索引值,第一个对象 对应索引0, 第二个对应索引1,以此类推。 二、JMeter中使用JSON 注:以下演示接口是自己写的,...
