Jmeter(七)Jmeter脚本优化(数据与脚本分离)
午休时间再来记一记,嗯。。回顾着使用Jmeter的历程,想着日常都会用到的一些功能、一些组件;敲定了本篇的主题----------是的、脚本优化。
说起脚本优化,为什么要优化?又怎么优化?是个永恒的话题。因为毕竟每个人的精力不同、业务不同、需要不同;但是可以肯定的是,但凡有做自动化之类(骚操作),那么便离不开一个概念。什么呢?-------脚本与数据分离
何谓“脚本与数据分离”?
所谓脚本与数据分离,可以举一个简单例子,2016年,具体不清楚是什么时间,在逛微博的时候,看到德国的一条杀鸡流水生产线,以一小时杀5000多只鸡的速度而闻名(具体是不是世界第一,就不纠结了,只是举个例子),而工作人员只需要在生产线的开始阶段将活鸡扔进去,直接就可以去流水线的结束段收获成果,质量是非常之高,活鸡进去,出来的都是一块一块的鸡腿、鸡脖子、鸡头、鸡爪(当然是洗干净的,哈哈);OK,回到本主题,脚本与数据分离也是这个道理,流水线我不动,至于它是怎么工作的,提前设计好就OK,只需要扔原料即可,因此,此处的脚本便可以理解成流水线、而数据源便可以理解成鸡啦。怎么动数据无所谓,流水线(脚本)都是按照设计来进行执行的(哈哈、可能举的例子有点抽象,但是大概意思明白就OK)。
当然,现今,脚本与数据进行分离已经成为自动化的基本要求;除此之外,还有一个“业务与脚本分离”,这个概念以后再记。
那么Jmeter如何实现“脚本与数据分离”呢?
Jmeter经过这么多年的发展,丰富的组件完全可以满足此要求。
OK,还是百度的例子!

可以看到,我模拟了一个参数user并传入123进行请求;

请求中user参数以及传入的123是发过去了,暂时忽略请求的成功与失败。
那么,我再添加一个请求,baidu--首页--2;给user的参数传入321;

其他的协议,服务器名称,端口号,路径都一致;

可以看到321也传成功了;
那么,在请求中那些一直的部分很繁琐,一个两个请求可以进行手动写,那么几百个呢?
放心、Jmeter有处理这方面的组件。

是的,就是它喽,可以看到它和HTTP请求的界面几乎一般无二,但是实现的功能确实完全不一样的;
我们将baidu--首页--1和baidu--首页--2,两个HTTP请求中共同的地方提取了出来,放入HTTP请求默认值中,唯一没变的是它的传参,请求一下试试,看看监听器的内容


呐、都是POST请求,https://www.baidu.com/
因此,完全可以实现,简化脚本、简化工作量的目标。
截止此步,一个http协议的Jmeter脚本优化便完成了。
那么,又回到刚刚的问题,不是“数据与脚本分离”么?这么看来也并没有实现数据与脚本分离嘛。。
Jmeter读取本地的文件(支持最好的是csv文件)也有很丰富的插件,暂且提一种方式进行读取外部文件,其余的后续会做逐一记录。

是的,就是它CSV Data Set Config

Filename:文件名(包含路径)
Fileencoding:文件编码格式
variable name(comma-delimited):变量名---默认以下方的逗号分隔符进行分隔
Ignore first line (only used if variable names is not empty):忽略第一行(仅在变量名称不为空时使用);忽略CSV文件的第一行,只有在变量名不为空时才使用,如果变量名为空,则第一行必须包含标题。
Delimiter(user【\t】for tab):分隔符
Allow quoted data?:CSV文件是否应该允许引用值?如果启用,则值可以被括在“ - 双引号 - 允许值包含分隔符。
Recycle on EOF?:文件是否应该从EOF开始重新读取?(是否循环读取)(默认是true)
stop thread on EOF?:在EOF停止线程?如果回收错误,则再EOF处停止线程
sharing mode:共享模式;所有线程 - (默认)文件在所有线程之间共享;
当前线程组 - 每个文件为其中显示该元素的每个线程组打开一次
当前线程 - 每个线程分别打开每个文件
标识符 - 共享相同标识符的所有线程共享相同的文件。因此,例如,如果您有4个线程组,则可以使用两个或多个组的共同ID来共享它们之间的文件。或者,您可以使用线程号在不同线程组中的相同线程号之间共享文件。
很多人会忽略这部分内容,当然具体的用法,以及场景后续记。

外部csv文件内容

HTTP请求默认值、HTTP请求中引用方式


OK,看运行结果

与上方是完全一致的,如此呢,我们就达到了一个“数据与脚本分离”,虽然说简单了点,没有业务逻辑的处理、判断条件等,但是目的也已经达到了。
服务器配置信息,协议、地址、端口号、请求参数、等等都可以进行在外部文件中进行更改,完全可以不用更改脚本;虽然此处的脚本可能太过于简单了点,但是无非就是说明一个道理,Jmeter是可以完成这部分工作的,相信在特别大的系统中,你能看到Jmeter这部分效果的。
OK,还有大把大把的工作等着俺处理、、、、今天就先记到这块。
Jmeter(七)Jmeter脚本优化(数据与脚本分离)的更多相关文章
- jmeter压力测试的简单实例+badboy脚本录制(一个简单的网页用户登录测试的结果)
JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...
- jmeter压力测试的简单实例+badboy脚本录制
JMeter的安装:在网上下载,在下载后的zip解压后,在bin目录下找到JMeter.bat文件,双击就可以运行JMeter. http://jmeter.apache.org/ 在使用jmeter ...
- Jmeter+Jenkins持续集成(Ant运行脚本)
Jmeter接口测试脚本运行后生成的是jtl(xml)格式的文件,这些文件不具备可读性,所以我们要把他转化为可以阅读的html格式报告. Ant是一个功能强大的打包编译工具.我们使用他的目的是将xml ...
- python接口测试-项目实践(七)脚本优化
七 脚本优化:重复代码的提取成函数:与项目接口相关的都封装到一个类中:添加手工验证脚本,增加输入值的判断逻辑 将所有与该项目接口相关的封装成类 class ProjectApi: #3个数据源接口 d ...
- Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1. 安装MySQL ODBC驱动程序 O ...
- JMeter (3) —— JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial)
JMeter (3) -- JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial) 主要内容 JMeter录制脚本并进行压力测试用户登陆场景,并以CAS SSO单点 ...
- 【jmeter】jMeter使用Badboy录制Web测试脚本
JMeter 是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放 功能,同时提供图形结果分析功能,刚好弥补 ...
- Jmeter 03 Jmeter脚本开发
JMeter 工作区介绍 JMeter Http 协议录制 JMeter 脚本调测 JMeter 关联 JMeter 参数化 JMeter 检查点 JMeter 事务 JMeter 集合点 JMete ...
- jmeter之非GUI启动与执行脚本
启动jmeter的图形界面可以从dos窗口输命令启动:图形界面还是比较占资源的,这时候可以通过dos窗口来执行脚本,获取性能结果 目录 1.dos窗口启动jmeter图形界面 2.dos窗口执行脚本, ...
随机推荐
- window.location.herf=url参数有中文,到后台乱码问题解决
js中的代码: /*将中文的参数进行两次编码 */ function queryByName(){ //获取查询条件的用户名 ...
- 关闭MongoDB服务的几种方法
MongoDB 提供几种关闭服务的命令,具体为以下: 一 使用 Crtl+C 关闭 [mongo@redhatB data]$ mongod --dbpath=/database/mongodb/da ...
- Singer 学习十二 指南
版本0.3.0 tap是一个应用程序,需要一个配置文件和可选的状态文件作为输入,并产生有序的流记录, 状态和模式信息作为输出. 一个记录是任何类型的JSON编码的数据.tap 状态消息用于保留一个调用 ...
- C语言打印100到200之间的素数
用C语言打印素数,我们首先要了素数的相关定义:只有1和它本身两个因数的自然数,也就是说除了1和它本身外,不能被其他自然数整除的数就称为素数. 例如:101只能被1 和101 整除:103只能被1 和1 ...
- 设置 sideload Outlook Add-ins
上期,我们讲到了用前端技术去建立一个outlook add-ins 我们今天来讲解一下怎样测试一个sideload outlook add-ins. 1. 我们需要登录Outlook在Office 3 ...
- 21 MRO C3算法
三十九 MRO 多继承的继承顺序 一.python2.2之前用的是 经典类的MRO继承 ①深度递归继承 从左到右 ,一条路走到黑 ②广度继承 一层一层的继承 深度继承时 ...
- docker nginx 运行后无法访问
## 1 最近在学docker部署,一开始打算将nginx先docker化的. 对照官方的docker镜像介绍说明,进行自定义配置 将官方的nginx.conf复制出来后,修改添加了一些自定义,主要是 ...
- zookeeper 学习资料
zookeeper 学习资料 学习资料 网址 Zookeeper 教程(菜鸟教程) https://www.w3cschool.cn/zookeeper/
- Bitvise 使用公私玥免密登陆 服务器
远程机linux 首先需要把 生成 公私玥,并且把公钥 写到 远程linux 主机的,你要登陆的用户下面 的.ssh 文件里面的authorized_keys 文件里面.这个参考我的另一篇关于linu ...
- Logstash的grok以及Ruby
logstash的grok插件的用途是提取字段,将非格式的内容进行格式化, input { file { path => "/var/log/http.log" } } fi ...