Jmeter(七)Jmeter脚本优化(数据与脚本分离)

 

 

 

  午休时间再来记一记,嗯。。回顾着使用Jmeter的历程,想着平常都会用到的一些功能、一些组件;敲定了本篇的主题----------是的、脚本优化。服务器

  提及脚本优化,为何要优化?又怎么优化?是个永恒的话题。由于毕竟每一个人的精力不一样、业务不一样、须要不一样;可是能够确定的是,但凡是有作自动化之类(骚操做),那么便离不开一个概念。什么呢?-------脚本与数据分离优化

  何谓“脚本与数据分离”?编码

  所谓脚本与数据分离,能够举一个简单例子,2016年,具体不清楚是什么时间,在逛微博的时候,看到德国的一条杀鸡流水生产线,以一小时杀5000多只鸡的速度而闻名(具体是否是世界第一,就不纠结了,只是举个例子),而工做人员只须要在生产线的开始阶段将活鸡扔进去,直接就能够去流水线的结束段收获成果,质量是很是之高,活鸡进去,出来的都是一块一块的鸡腿、鸡脖子、鸡头、鸡爪(固然是洗干净的,哈哈);OK,回到本主题,脚本与数据分离也是这个道理,流水线我不动,至于它是怎么工做的,提早设计好就OK,只须要扔原料便可,所以,此处的脚本即可以理解成流水线、而数据源即可以理解成鸡啦。怎么动数据无所谓,流水线(脚本)都是按照设计来进行执行的(哈哈、可能举的例子有点抽象,可是大概意思明白就OK)。插件

  固然,现今,脚本与数据进行分离已经成为自动化的基本要求;除此以外,还有一个“业务与脚本分离”,这个概念之后再记。线程

  那么Jmeter如何实现“脚本与数据分离”呢?设计

  Jmeter通过这么多年的发展,丰富的组件彻底能够知足此要求。3d

  OK,仍是百度的例子!blog

  

 

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

  

 

  请求中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,还有大把大把的工做等着俺处理、、、、今天就先记到这块。

相关文章
相关标签/搜索