tsung测试tigase文档

测试场景脚本配置详细分析

<?xml version=”1.0″?>

<!DOCTYPE tsung SYSTEM “/usr/share/tsung/tsung-1.0.dtd”>

<!– loglevel日志级别,测试过程使用warning也就可以了–>

emergency

critical

error

warning

notice (default)

info

debug

<tsung loglevel=”notice” version=”1.0″>

<!– 客户端配置–>

              host : 配置客户端地址

              use_controller_vm : 是否使用虚拟控制器设置客户端最大连接数

              maxusers : 客户端最大连接数

       注: 如果use_controller_vm=”false”,那么每maxusers个连接后会创建一个新的erlangVM,

              否则达到上限就不再创建连接,maxusers默认是800。

              通常情况下我们会将use_controller_vm设置成true,然后设置maxusers来提高客户端最大连接数。

              但是,前提是要打开操作系统的limits-最大进程数(limits.conf中修改),大多操作系统默认最大进程数为1024。

       <clients>

              <client host=”localhost” use_controller_vm=”true” maxusers=”10000″></client>

       </clients>

 

<!– 服务端配置 –>

       <servers>

              <server host=”192.168.1.100″ port=”5222″ type=”tcp”></server>

       </servers>

<!性能监控 –>

<monitoring> 

       <monitor host=”192.168.1.5″ type=”snmp”> 

              <snmp version=”v1″ community=”public” port=”161″> 

                     <!– cpu空闲率 –>

                     <oid name=”cpu_free” value=”1.3.6.1.4.1.2021.11.11.0″ ></oid>    

                     <!–Mem Used–>

                     <oid name=”Mem_Used” value=”.1.3.6.1.2.1.25.2.3.1.6.2″ ></oid> 

                     <!– 统计IO读,单位是blocks/s –>

                     <oid name=”io_sent” value=”.1.3.6.1.4.1.2021.11.5.0″ ></oid> 

                     <!– 统计IO写,单位是blocks/s –>

                     <oid name=”io_receive” value=”.1.3.6.1.4.1.2021.11.6.0″ ></oid>                 

              </snmp> 

       </monitor> 

</monitoring> 

<!– 计划加载用户–>

              <arrivalphase> :阶段相位,可配置多个阶段

                     phase : 阶段序号

                     duration : 加载时间数

                     unit : 时间单位

                     <users> : 用户加载速度

                            interarrival/arrivalrate : 间隔interarrival unit加载一个用户/间隔1 unit加载arrivalrate个用户

                            unit : 时间单位

                            maxnumber : 用户最大加载数

                           

       例:<arrivalphase phase=”1″ duration=”20″ unit=”second”>

                     <users maxnumber=”1500″ interarrival=”0.1″ unit=”second”></users>

              </arrivalphase>

              <arrivalphase phase=”2″ duration=”10″ unit=”second”>

                     <users arrivalrate=”15″ unit=”second”></users>

              </arrivalphase>

              <arrivalphase phase=”3″ duration=”10″ unit=”minute”>

                     <users  maxnumber=”2500″  interarrival=”2″ unit=”second”></users>

              </arrivalphase>

              上述例子中,运行测试以后,会在第一阶段(20s)每间隔0.1s加载一个用户,最大加载1500个用户。

              第二阶段(10s)没间隔1s加载15个用户。

              第三阶段(10m)没间隔2s加载1个用户,最大加载数为2500。

              3个阶段是按顺序加载的,总加载时间是 20s + 10s + 10m

             

       注: 用户被加载后会立即执行测试场景,并不是在加载全部用户后才开始测试场景。

              这在jabber服务端测试中,有涉及到用户之间发送消息的请求时应该注意保持用户在线,

              否则将有可能部分用户接收不到消息

        –>

       <load>

              <arrivalphase phase=”1″ duration=”10″ unit=”second”>

                     <users interarrival=”0.1″ unit=”second”></users>

              </arrivalphase>

       </load>

 

<!– JABBER服务端配置参数–>

              global_number : 这个暂时不是很明白做什么用,猜测是用户保持同时在线的个数

              userid_max : 可以加载的最大用户数,其实是用户最大ID数,前缀后面的ID

              domain   : 服务端的domain,并不是随便配置的,如果随便配置,做注册、连接、登录、roster不会有问题,

                               但是用户之间发送消息的时候服务端会报404错

              username : 服务端用户名前缀

              passwd : 密码前缀

        –>

       <options>

              <option type=”ts_jabber” name=”global_number” value=”50″></option>

              <option type=”ts_jabber” name=”userid_max” value=”100″></option>

              <option type=”ts_jabber” name=”domain” value=”PPT-20130725PQK”></option>

              <option type=”ts_jabber” name=”username” value=”tsung”></option>

              <option type=”ts_jabber” name=”passwd” value=”tsung”></option>

       </options>

 

<!– 测试场–>
              <sessions> : 可以同时配置多个测试场景

           <session> : 测试场景

          probability : 权重(用户可能执行到的概率)

           name : 场景名称,任意写

           type : 类型

         <transaction> 事务,事务中可以包含多个请求

        name : 事务名称,任意命名,该名称会在报告图表中以 ts_${name}的名称用来命名各个事务的相应时间,吞吐率等

         <request> : 请求,可以被包含在一个事务中也可以单独出来,单独出来的请求的响应时间以及吞吐量,在报表中将被一起统计到page中

          <jabber> : 具体的请求内容

         type : 请求类型

         ack  : 是否需要确认消息,有以下三种情况

         local:一旦客户端有接收到packet就当作该请求已经完成

         no_ack:一旦客户端消息发送出去就当作该请求已经完成

         global:在发送消息前会等待所有用户都连接上,这跟上面的<option global_number的配置是关联在一起的

          <thinktime> : 等待时间,也就是模拟用户操作过程中,通常情况下的闲置时间,单位为:秒

                                                    比如,用户做登录操作–》修改心情,中间的等待时间就是thinktime

       注: 配置多个测试场景的时候要注意probability权重的总和等于100。

              一个用户只能随机执行一个测试场景,probability就是该场景被执行的概率,

              比如说,有3个测试场景,权重分别20,50,30。有1000个用户,最终测试场景将分别被约等于 200,500,300个用户执行到,一个用户只会执行一个场景。

       

       <sessions>

              <session probability=”100″ name=”jabber-example”

                     type=”ts_jabber”>

                     <request>

                            <jabber type=”connect” ack=”no_ack”></jabber>

                     </request>

                     <thinktime value=”2″></thinktime>

                     <!– 用户验证 –>

                     <transaction name=”authenticate”>

                            <request>

                                   <jabber type=”auth_get” ack=”local”></jabber>

                            </request>

                            <request>

                                   <jabber type=”auth_set_plain” ack=”local”></jabber>

                            </request>

                     </transaction>

                     <!– 更新上线状态 –>

                     <request>

                            <jabber type=”presence:initial” ack=”no_ack” />

                     </request>

                     <thinktime value=”20″></thinktime>

                    

                     <!– 发送roster –>

                     <transaction name=”roster”>

                            <request>

                                   <jabber type=”iq:roster:get” ack=”local”></jabber>

                            </request>

                     </transaction>

 

                     <thinktime value=”30″></thinktime>

                    

                     <!– 任意对一个在线用户发送聊天消息 –>

                     <transaction name=”online”>

                            <request>

                                   <jabber type=”chat” ack=”no_ack” size=”16″

                                          destination=”online”>

                                   </jabber>

                            </request>

                     </transaction>

 

                     <thinktime value=”30″></thinktime>

                    

                     <!– 退出 –>

                     <transaction name=”close”>

                            <request>

                                   <jabber type=”close” ack=”no_ack”></jabber>

                            </request>

                     </transaction>

              </session>

       </sessions>

</tsung>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章