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>

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