在性能測試中,我們往往遇到這樣的一些問題,比如需要通過不同的用戶進行登錄操作,或者需要動態的輸入數據,在測試工具中往往我們是通過數據池來進行完成的。比較全面的數據池的設計往往會考慮用戶數據的來源,比如文件,數據庫等多種形式,但其實如果采用直接映射數據庫中的某些列來進行實現,雖然在操作上會省下很多數據加工的時間,但在實際運行過場中會有諸多缺點,主要體現在每個用戶每次獲取數據時就需要消耗大量的時間,因為往往數據庫在遠程的服務器上而非本地,如果頻繁的交互會使真正需要了解的響應時間大打折扣。出于測試盡可能反映真實的應用響應時間的考慮,Rational Performance Tester 采用了文件的方式來進行數據的導入。
Rational Performance Tester 內置的 DataPool 的實現機制
Rational Performance Tester 內置的數據池采用了 TPTP 的前身 Hyades 測試框架的實現方式,也就是通過 EMF 進行實現。其設計圖為:
圖 1: 設計圖
其中比較主要的幾個概念是:
往往我們在通過 RPT 的界面建立數據池或者從 CSV 文件導入數據池時,會發現在我們的 workspaces 項目的根目錄下中生成了一個 .datapool 的文件,把文件通過 winrar 解開,可以看到是一個 xmi 文件,格式如下:
<?xml version="1.0" encoding="UTF-8"?><Common_Datapool:DPLDatapool xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:Common_Datapool="http://www.eclipse.org/hyades/models/common/datapool.xmi" id="E123A884D00625FC60097F300AD111DC" name="aa"> <equivalenceClasses id="E123A884D00625FC6021E9300AD111DC" name="String"> <records> <cells value="<Literal>eric</Literal>" variable= "E123A884D00625FC600C8C700AD111DC "/> <cells value="<Literal>ericnie</Literal>" variable="E123A884D00625FC602062900AD111DC"/> </records> <records> <cells value="<Literal>eric1</Literal>" variable="E123A884D00625FC600C8C700AD111DC"/> <cells value="<Literal>ericnie1</Literal>" variable="E123A884D00625FC602062900AD111DC"/> </records> <records> <cells value="<Literal>eric2</Literal>" variable="E123A884D00625FC600C8C700AD111DC"/> <cells value="<Literal>ericnie2</Literal>" variable="E123A884D00625FC602062900AD111DC"/> </records> <records> <cells variable="E123A884D00625FC600C8C700AD111DC"/> <cells variable="E123A884D00625FC602062900AD111DC"/> </records> </equivalenceClasses> <datapoolSpec id="E123A884D00625FC60097F310AD111DC"> <variables id="E123A884D00625FC600C8C700AD111DC" name="name" type="String”/> <variables id="E123A884D00625FC602062900AD111DC" name="password" type="String”/> </datapoolSpec></Common_Datapool:DPLDatapool> |
圖 2: 層次結構
原文轉自:http://www.anti-gravitydesign.com