Tsung脚本中使用动态参数(一)---直接在脚本里编写Erlang代码

杀死一个程序猿,只要改三次需求。同理,杀死一个接口自动化测试人员,只要改三次接口数据处理方式。我目前的状态,改了一次接口数据处理方式,有一种胸闷的感觉。

因为改需求,所以,要改脚本。T_T。所以,才有了接下来的艰辛过程,但是,我还是想以最平和的方式呈现给大家Tsung工具的强大。

1、Tsung版本:

1.6

2、setdynvars元素的相关使用,见installpath/share/tsung/tsung-1.0.dtd:

sourcetype   (random_string | urandom_string | random_number |
          file | erlang | eval| jsonpath | value | server)

从tsung usermanual来看,引入Erlang代码需要用到的sourcetype的属性为erlang或者eval,其中,当sourcetype的值为erlang时,意味着引入的编译好的函数,当值为eval时,是在tsung脚本里编写代码。我们今天重点讲解的是,当sourcetype="eval"时,如何在Tsung脚本里编写代码,看下面这段代码:

<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
                                         Val="198",
                                         list_to_integer(Val) end.'>
          <var name="total_length_login_stream"/>
</setdynvars>

首先,解释一下,这段代码的含义:
sourcetype="eval"意思是参数的值的来源,这里是脚本里的erlang代码处理的结果,code是指erlang代码,var是指定义一变量,name为变量名,在接下来的脚本里,可以直接利用%%_variablename%%这个mark-up来取代要用这个参数值的地方。

其次,来看一下code=后面的这段内容:

对比一下tsungusermanual里的代码:

<setdynvars sourcetype="eval"
            code="fun({Pid,DynVars})->
                      {ok,Val}=ts_dynvars:lookup(md5data,DynVars),
                      ts_digest:md5hex(Val) end.">
  <var name="md5sum" />
</setdynvars>

大家可以看到,在xml里的元素属性值是以双引号括起来的,但是,我的代码里最外层却用了单引号,这是因为代码里,有双引号,防止在读取时匹配出现问题,而erlang代码里,单引号和双引号在定义变量里又有特殊含义, 所以,只能将最外部的双引号改为单引号。而其它的格式大体相同,其中,fun({Pid,DynVars})->..... end.定义了一个匿名函数,其中,Pid和Dynvars代表的含义是:

where Pid is the Erlang process id of the current virtual user and DynData the list of all Dynamic variables  ,Pid是当前虚拟用户的Erlang进程的id,也就是说,是默认的不用特殊处理,DynVars是脚本里所有的动态变量的列表。tsungusermanual里这段代码,因为要再次处理md5data这个动态变量,所以,利用了{ok,Val}=ts_dynvars:lookup(md5data,DynVars)这段代码,这段代码执行以后,就将md5data的值赋给了变量Val,接下来的操作就是处理Val,最后将结果赋给Tsung脚本的变量md5sum。

而下面这段代码:

<setdynvars sourcetype="eval" code='fun({Pid,DynVars})->
 39                                         Val="198",
 40                                         list_to_integer(Val) end.'>
 41         <var name="total_length_login_stream"/>
</setdynvars>

因处理是不是Tsung里的变量,所以,ts_dynvars:lookup()这段代码就可以去掉,直接写功能代码即可,最后将结果赋予tsung脚本里的变量。至于,功能代码怎么写,还需要小伙伴们多涉猎一下Erlang的语法喽。。。

转载于:https://www.cnblogs.com/comeonbaby/p/4867639.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tsung支持多种协议和场景的测试,包括HTTP、SOAP、JDBC、SMTP、XMPP等,同时也支持TCP和UDP协议的测试。下面介绍一下如何使用Tsung进行TCP请求的接口压测: 1. 安装Tsung 首先需要安装Tsung,可以通过官网下载源代码进行安装,也可以通过包管理工具进行安装。 2. 编写测试脚本 Tsung的测试脚本采用XML格式编写,可以使用任何文本编辑器进行编辑。以下是一个简单的Tcp请求测试脚本: ``` <?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd"> <tsung loglevel="notice" version="1.0"> <clients> <client host="localhost" use_controller_vm="true"/> </clients> <servers> <server host="127.0.0.1" port="8080" type="tcp"/> </servers> <load> <arrivalphase phase="1" duration="10" unit="minute"> <users interarrival="2" unit="second"/> </arrivalphase> </load> <sessions> <session probability="100" name="tcp_request"> <request> <tcp type="init"/> <tcp type="user"> <![CDATA[ test data ]]> </tcp> </request> </session> </sessions> </tsung> ``` 这个脚本定义了一个Tcp请求的测试场景,其指定了客户端和服务器的IP地址和端口号,定义了负载模型,指定了请求的格式和内容。 3. 启动测试 保存测试脚本,并使用以下命令启动测试: ``` tsung -f <test-script.xml> start ``` 其`<test-script.xml>`是测试脚本的路径,可以是绝对路径或相对路径。 4. 查看测试结果 测试运行完毕后,可以查看测试结果。Tsung提供了多种方式查看测试结果,包括控制台输出、日志文件、图形化界面等。 以上是使用Tsung进行TCP请求接口压测的基本流程,具体的测试脚本参数需要根据具体的测试需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值