这两天给公司一个新项目做上线前的压力测试,这个项目主要的接口有两个,获取订单号(getOrderId)和确认订单(confirm),需要重点压测。开始,我们选择用python写测试例,python的好处是开发迅速,但是并发能力不够;我就想试试用tsung,tsung是用erlang写的,并发肯定没问题,但我以前只用来测试过静态网站,没有测试过动态API,查了查文档,发现tsung是支持用erlang脚本生成动态参数的,于是我决定用tsung。
tsung的安装略过,看一下getorderId的配置:
<request subst="true">
<dyn_variable name="order_id" jsonpath="data.order_id"/> <http url="/v5/order/getOrderId/" method="POST" version="1.1" contents="token=%%anysdk:get_token%%json_data=and"/> </request>
说明:
subst = "true" 表示启用动态参数,两个%%中间的内容即是参数所调用的erlang脚本,格式为module:fun,module为模块名,fun为函数名。
对应的erlang代码:
-module(anysdk). -export([get_token/1]). get_token({Pid, DynData}) -> { MegaSec, Second, MicroSec } = erlang:now(), TimeStamp = MegaSec * 1000000 + Second + MicroSec/1000000, T2 = trunc(TimeStamp), StrTime = integer_to_list(T2), base64:encode_to_string(StrTime).
Pid为当前用户的进程号,貌似没啥用处,DynData是动态参数列表,用来从tsung传递参数,get_token不需要参数,所以也没用。
<span style="font-size:14px;"><dyn_variable name="order_id" jsonpath="data.order_id"/></span>这句话是用来捕获服务端返回值的,getOrderId返回一个json串,这个指令通过jsonpath捕获到相应的对象并存到动态变量order_id中,供后续操作使用。
如何在tsung中使用动态参数(一),布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012973744/article/details/28652759