Rational Performance Teser(RPT)是專門針對 B/S架構和專用系統(SAP,Citrix 等)進行壓力測試的工具。RPT 基于開放的 TPTP 平臺和 Java 語言其實對我們的測試提供了很大的擴展性。本文從數據池的角度出發,結合實際環境中遇到的一些問題,來擴展 RPT 的數據驅動能力。
前言
在性能測試中,我們往往遇到這樣的一些問題,比如需要通過不同的用戶進行登錄操作,或者需要動態的輸入數據,在測試工具中往往我們是通過數據池來進行完成的。比較全面的數據池的設計往往會考慮用戶數據的來源,比如文件,數據庫等多種形式,但其實如果采用直接映射數據庫中的某些列來進行實現,雖然在操作上會省下很多數據加工的時間,但在實際運行過場中會有諸多缺點,主要體現在每個用戶每次獲取數據時就需要消耗大量的時間,因為往往數據庫在遠程的服務器上而非本地,如果頻繁的交互會使真正需要了解的響應時間大打折扣。出于測試盡可能反映真實的應用響應時間的考慮,Rational Performance Tester 采用了文件的方式來進行數據的導入。
Rational Performance Tester 內置的 DataPool 的實現機制
Rational Performance Tester 內置的數據池采用了 TPTP 的前身 Hyades 測試框架的實現方式,也就是通過 EMF 進行實現。其設計圖為:
圖 1: 設計圖
其中比較主要的幾個概念是:
Variable: 主要指一個列,通常包含一個名字和建議的類型
Record: 行,包含多列的數據
Cell: 數據塊,對應的是某行某列
EquivalenceClass: 等價類,數據池中記錄的邏輯組合
Datapool: 數據池
往往我們在通過 RPT 的界面建立數據池或者從 CSV 文件導入數據池時,會發現在我們的 workspaces 項目的根目錄下中生成了一個 .datapool 的文件,把文件通過 winrar 解開,可以看到是一個 xmi 文件,格式如下:
xmlns:Common_Datapool="http://www.eclipse.org/hyades/models/common/datapool.xmi"
id="E123A884D00625FC60097F300AD111DC" name="aa">
variable= "E123A884D00625FC600C8C700AD111DC "/>
variable="E123A884D00625FC602062900AD111DC"/>
variable="E123A884D00625FC600C8C700AD111DC"/>
variable="E123A884D00625FC602062900AD111DC"/>
variable="E123A884D00625FC600C8C700AD111DC"/>
variable="E123A884D00625FC602062900AD111DC"/>
type="String”/>