002 jmeter入门级写脚本及参数化
1、jmeter入门脚本
步骤分析:测试计划(项目名称)-线程组(业务流程)-http请求(接口名称)-察看结果树
编写脚本四要素:测试计划、至少有一个线程组、至少有一个取样器、必须要有监听器
测试计划-->右键添加-线程(用户)-线程组-->在线程组上右键-添加-取样器-HTTP请求-->在线程组上右键-添加-监听器-察看结果树
**核心知识**
①在线程组上右键-添加-取样器-HTTP请求 (不会自动识别数据类型,需手动加http信息头管理器)
②在线程组上右键-添加-配置元件-http信息头管理器/http请求默认值
http信息头管理器:添加-输入名称和值(例:content-type:application/json)content-type请求参数的数据类型。
http请求默认值:将同一线程组下所有HTTP请求的协议和服务去域名统一管理,如果单个http请求设置了协议和域名则使用本身的,遵从就近原则。
tips:一般把配置元件放在前面,http协议默认端口号80 https协议默认端口号443
2、分析线程组
设置调度器配置,需要将前面的循环次数设置为永远(自己感觉,因为这样才不会因循环次数不够而终止压测)
持续时间(秒):测试计划持续多长时间,会覆盖结束时间。
启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。
3、 测试计划元件
取样器(sampler):向服务器发送请求并记录响应时间和响应内容
逻辑控制器(Logic Controller):包括两类元件,一类是用于控制testplan和sampler节点发送请求的逻辑顺序的控制器,如条件控制器,循环控制器等,另一类是用来组织可控制sampler节点的,如事务控制器,吞吐量控制器。
配置元件(config element):用于提供对静态数据配置的支持。用于参数化。
定时器(Timer):用于操作之间设置等待时间,等待时间使性能测试中常用的控制客户端QPS的手段。
前置处理器(PerProcessors):用于请求发送之前对即将发出的请求进行特殊处理。
后置处理器(PostProcessors):用于对sampler发去请求后得到的服务器响应进行处理。一般用来提起响应中的特定数据。
断言(assertions):
监听器(listener):
4、运行原理
jmeter是以线程的方式运行的,由于jmeter是运行在jvm虚拟机上的,每个进程的开销比较大,如果以进程的方式来运行的话,每台负载机上的进程数里就不会允许太多,当我们需要大量并发时就需要大量的负载机,这显然是不经济的,再者Java也是支持多线程的,所以jmeter选择了以线程的方式来运行。
jmeter通过线程组来驱动多个线程运行测试脚本对被测服务器发起负载,每个负载机上都可以运行多个线程组。jmeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,而且命令行运行的方式对于负载机的资源消耗会更小。
tips:GUI模式运行测试脚本对电脑本身的资源小号较大,无法实现大的并发和压力测试,使用命令行模式实现高并发和压力测试,使用GUI模式主要目的是编写和调试jmeter测试脚本。
5、使用jmeter自身代理录制移动端
1.配置jmeter
打开jmeter创建新的测试计划,在测试计划下添加一个线程组,添加HTTP代理服务器(在测试计划上右键-添加-非测试元件-HTTP代理服务),配置HTTP代理服务器
2.配置手机 和fiddler配置相同
模拟器为例,在手机设置中找到wifi,长按wifi修改网络,配置代理-设置服务器主机名(ip地址)和端口(默认端口号8888)
6、回顾接口测试知识
接口要素:①请求地址/方式 ②请求参数 ③返回值
http协议:请求方式 ①get(带参数 params/不带参数) ②post(x-www-form-urlencoded 键值对 content-type:application/x-www-form-urlencoded; json格式数据 content-type:application/json)
7、jmeter参数化
*什么是参数化?
根据需求动态获取数据并进行赋值的过程
*jmeter中参数化常用方式
CSV Data Set Config:CSV数据控件
User Defined Variables:用户定义变量
User Variables:用户参数
*jmeter中应用变量方法
参数化的变量用 ${变量名} 表示
7.1 csv数据控件实现参数化 (CSV Data Set Config:CSV数据控件) 一种从外部读取数据功能的组件
*在线程组右键-添加-配置元件-csv数据文件设置 (准备csv文件-新建一个excel表,填写对应数据,另存为csv格式。如果有中文需要转码,找到此csv格式的文件用notepad打开找到编码-转为UTF-8编码即可)
忽略首行:如果csv文件首行写的是变量名称选择true,如果不是选择false
http请求中引用变量名和运行。如果使用csv文件中所有数据,需要设置线程组的线程数或者循环次数。
7.2 User Variables:用户参数
*在http请求上右键-添加-前置处理器-用户参数
配置用户参数:添加变量,添加用户(一个用户就是一组测试数据)
使用用户参数:在http请求中引用变量,在线程组中设置线程数。(使用用户参数的方式,就不能用修改循环次数的方法,要修改线程数才能跑不同的用户。)
7.3 User Defined Variables:用户定义变量
变量少的情况下,测试计划页面
变量多的情况下,添加-配置元件-用户定义的变量
凡是可以输入的位置,都可以使用变量
7.4 总结jmeter参数化
csv数据文件配置--适用于大量测试数据时的使用 (配置元件)
用户参数--适用于少量测试数据时的使用。(前置处理器)
用户定义的变量--适用于常量配置:数据库地址,测试环境地址;登录数据(测试计划页面/配置元件)
002 jmeter入门级写脚本及参数化的更多相关文章
- jmeter手写脚本,使用正则获取cookie(禁用cookies管理器)
注:这里以bugfree为例 1.bugfree登录时会有重定向,这会导致每个URL都会有.因此要手动获取cookie的时候,需要去掉重定向勾选 正则获取动态PHPsession 获取到值后,放到信息 ...
- 【转】JMeter脚本的参数化
JMeter脚本的参数化 当你利用Badboy将你的测试脚本录制完毕后,接下来就是脚本的调试工作了.在我看来,调试应该包括有以下几个方面:1.根据测试场景对脚本进行必要的修改:2.脚本参数化:3.添加 ...
- jmeter 分布式配置(含参数化问题)
这次用的是 jmeter 5.1.1 jdk8 调度机: 修改bin目录下jmeter.properties文件 第258行 remote_hosts=192.168.87.34:1856,192. ...
- 一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本
接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本, ...
- jmeter --自动化badboy脚本开发技术
jmeter --自动化badboy脚本开发技术 一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报告.断点等功能.本文就这些功能 ...
- Jmeter教程 录制脚本
Jmeter 录制脚本 Jmeter中有2种方法可以录制脚本. 不过我个人非常不推荐录制脚本,录制的脚本混乱,需要再次加工才能使用. 像我这么精通HTTP协议的人. 一直都是使用Fiddler来抓包 ...
- Jmeter之录制脚本(二)
上一节已经已经介绍过Jmeter的安装,对于web测试的话,经常会用到一些脚本去执行某些功能,也就是所谓的半自动化测试, 对于不懂代码的童鞋来说,脚本是一个很头疼的概念,badboy的录制是一个对于刚 ...
- Jmeter之https脚本录制
jmeter录制脚本时,跟http脚本录制主要区别是,https录制需要添加安全证书. 一.jmeter代理服务器及证书配置. 1.打开jmeter,右键测试计划添加线程组,右键工作台--> ...
- loadrunner 脚本优化-参数化之Parameter List参数同行取值
脚本优化-参数化之Parameter List参数同行取值 by:授客 QQ:1033553122 select next row 记录选择方式 Same line as,这个选项只有当参数多余一个时 ...
- loadrunner 脚本优化-参数化之Parameter List参数取值
脚本优化-参数化之Parameter List参数取值 by:授客 QQ:1033553122 参数取值选项 Select next row Update value on 以上两个选项是改变参数化取 ...
随机推荐
- .Net 和 .Net Core 集成Swagger 以及配合JWT身份验证
Swagger介绍 简单来说swagger是一款WebAPI的接口管理帮助文档,并且可以直接进行接口测试 我们来看一下官网介绍 https://swagger.io Swagger is a powe ...
- 接入jira OAuth权限流程
如果要在自己的系统中操作jira的api完成这些单据的创建.审批等操作,就不得不要先完成jira的第三方授权,才能在第三方系统去做这些jira的操作. 首先必须在jira系统配置客户端的相关信息,须配 ...
- LeetCode 周赛 332,在套路里摸爬滚打~
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,今天是 3T 选手小彭. 上周是 LeetCode 第 332 场周赛,你参加了吗?算法解题思维需要 ...
- Redis(安装、启动、测试、环境)
Redis 概述: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数 ...
- 【KAWAKO】RNNoise-将模型做成接口并交叉编译到RK3308上
目录 做成接口 rnnoise_inference.h rnnoise_inference.cpp 使用方法(主要部分) 交叉编译 编译出动态链接库 使用编译出的动态链接库进行推理 做成接口 RNNo ...
- 集合类再探:不可变类的好处,Collector接口详解,使用内部迭代
集合类再探 注:本文使用的pom依赖见文末. 集合类的基础 - Iterable.Iterator java语言层面支持对实现了Iterable接口的对象使用for-each语句.Iterator可以 ...
- GoAccess实现请求监
GoAccess实现请求监控 简介 GoAccess是一款开源的实时web日志分析器和交互式查看器,用于可视化查看HTTP统计信息,可以系统的终端上运行,也可以通过浏览器运行: 本文通过使用GoAcc ...
- 高仿微信|基于Windows微信实现一个IM即时通讯App
本文干货充足篇幅较长,建议收藏后阅读避免迷路.文末可获取[自动聊天机器人源码和Demo]. 即时通讯IM概述 如果能开发一款即时聊天App,能和微信消息互通,并且只需少许代码量,应该是件非常兴奋的事情 ...
- 深入理解Spring的Bean定义对象BeanDefinition-面试重点
Spring注解这篇文章中讲到了Spring的组件,组件加载到Spring容器中也就是Spring容器中的Bean对象,想要更深理解Spring中的Bean对象,那对这个BeanDefinition一 ...
- linux系统安装MySQL服务,详细图文教程
注:linux系统在安装操作系统时,如果选择了开发工具和兼容库后,一般默认都会安装MySQL服务的部分程序包.如果我们要自定义的安装全新的MySQL服务,就必须先把这些已经安装的程序包都卸载掉.否则, ...