漫游测试之性能测试(3.4.5.Tsung的脚本增强配置 二)

3.4.5.Tsung的脚本增强配置

3.4.5.1 Tsung事务的配置

 

如官方文档中的示例,transaction标签定义事务的名称。

<sessions>

 <session name="http-example" probability="70" type="ts_http">

 

   <request> <http url="/" method="GET" version="1.1"></http> </request>

   <request> <http url="/images/logo.gif" method="GET" version="1.1"

              if_modified_since="Fri, 14 Nov 2003 02:43:31 GMT"></http></request>

 

   <thinktime value="20" random="true"></thinktime>

 

   <transaction name="index_request">

    <request><http url="/index.en.html" method="GET" version="1.1" ></http> </request>

    <request><http url="/images/header.gif" method="GET" version="1.1">

             </http> </request>

   </transaction>

 

   <thinktime value="60" random="true"></thinktime>

   <request>

     <http url="/" method="POST" version="1.1" contents="bla=blu"></http> </request>

   <request>

      <http url="/bla" method="POST" version="1.1" contents="bla=blu&name=glop">

      <www_authenticate userid="Aladdin" passwd="open sesame"/></http>

   </request>

 </session>

thinktime 用来设置思考时间。

3.4.5.2 Tsung检查点的配置

使用match节点用来描述匹配情况。注意,match需要在request标签内。否则可能报以下错误。

<request>

   <match do="continue" when="match">Welcome !</match>

   <http url="/login.php" version="1.0" method="POST"

         contents="username=nic&user_password=sesame"

         content_type="application/x-www-form-urlencoded" >

</request>

 

根据官方文档描述,do字段可以为continue、log、abort、restart、loop、dump值。When字段值可以为nomatch。

3.4.5.3 Tsung的关联配置

主要使用dyn_variable标签来标注是用来关联的。dyn_variable需要在request标签内,否则可能报以下错误。

方法一,从Html中直接获取某个ID 或Name的值。

假如,某HTML源码中包含如下描述,

<form action="go.cgi" method="POST">

  <hidden name="random_num" value="42"></form>

</form>

我们想在Tsung中获取random_num的值,只需要增加dyn_variable变量定义,将name的名称与HTML源码中的name相等即可。

<request>

  <dyn_variable name="random_num"></dyn_variable>

  <http url="/testtsung.html" method="GET" version="1.0"></http>

</request>

然后在接下来的请求中%%_random_num%%标注使用,注意_random_num中的_是必须要加上的。

<request subst="true">

  <http url="/go.cgi" version="1.0"

    contents="username=nic&random_num=%%_random_num%%&op=login"

    content_type="application/x-www-form-urlencoded" method="POST">

  </http></request>

 

当然,可以在httl标签组中增加包头,毕竟有时候可能会用到包头传递某些参数。

方法二,使用Regexp的方式获取动态值。注意一些特殊符号,比如<、>等需要转换成Html编码。

<request>

  <dyn_variable name="mytitlevar"

                regexp="<title>\(.*\)</title>"/>

  <http url="/testtsung.html" method="GET" version="1.0"></http>

</request>

方法三,使用xpath获取Html源码中的内容。这种方式非常便捷,使用了GUI自动化测试工具中的概念,也算其特点之一。其它工具,比如Loadrunner是没有这个方法的。

<dyn_variable name="field1_value" xpath="//input[@name='field1']/@value"/>

<dyn_variable name="title" xpath="/html/head/title/text()"/>

方法四,读取JSON中的内容。这个方法非常方便,因为现在很多HTTP请求其实都是JSON格式的了。

<dyn_variable name="array3_value" jsonpath="field.array[3].value"/>

如果检查点和关联对同一个请求要起作用,如果dyn_variable在match前,启动后会报错。

报element_unauthorize_in_choice错误。

正确的方法是,先进行检查后进行动态关联。

运行后就正确了

3.4.5.4 Tsung的参数化配置

参数化的标识,使用setdynvars来进行识别。

方法一,调用erlang的函数(前提是比较了解erlang)

<setdynvars sourcetype="erlang" callback="ts_user_server:get_unique_id">

   <var name="id1" />

方法二,调用文件

<setdynvars sourcetype="file" fileid="userdb" delimiter=";" order="iter">

  <var name="user" />

  <var name="user_password" /></setdynvars>

Delimiter可以为任意分割字符;order可以为iter或者random

方法三,随机数字或者字符串

<setdynvars sourcetype="random_number" start="3" end="32">

  <var name="rndint" /></setdynvars>

<setdynvars sourcetype="random_string" length="13">

   <var name="rndstring1" /></setdynvars>

方法四,直接使用erlang脚本

<setdynvars sourcetype="eval"

            code="fun({Pid,DynVars})->                  {ok,Val}=ts_dynvars:lookup(md5data,DynVars),                       ts_digest:md5hex(Val) end.">

  <var name="md5sum" />

</setdynvars>

Tsung也支持IF、Foreach等条件控制,详细可以看其官方文档。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那美那美

失业了,写文章求吃碗炒面

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值