這里只是借用MVC這個名字,其實和web應用的mvc模式不是一個概念
M是model,是數據模型,從測試來講包含測試數據和測試對象數據。
-測試數據管理。在數據驅動的場景下可能要用到大量測試數據,可以是隨機或特定約束下生成的,或者從外部導入。無論哪種都需要支持類和方法來生成,存儲,操縱或轉換。
測試數據的格式常見的有csv,xml,excel,數據庫等。在java里配置數據一般存在xml或者properties文件,便于讀取和管理,而大量的數據紀錄則用csv比較經濟。數據結構來講映射到對象比多維數組更便于檢索,但開銷也大一些。
數據庫存測試數據增加了依賴性,但是方便復雜的查詢。各種結構可謂各有利弊,從個人實踐上講csv是常用的輸入輸出格式,其中一個重要因素是csv轉換excel非常方便。
-測試對象數據。QTP有動態(tài)和靜態(tài)對象庫的概念。這種機制有利于腳本的維護,完全可以借鑒到我們自己的框架設計體系中來。selenium里可以標示網頁對象的是Locator,webdriver里是By。類型不外乎name,id,class,xpath,jquery locator等,描述方式接近于QTP的描述性標示。Terrillium 框架采用了groovy混合編程,是利用了腳本語言在描述層次對象上的靈活性。假如用java實現(xiàn)的話也可以用遞歸的方式來檢查組合對象,比如表單。表單對象有若干子對象,比如輸入框,提交按鈕,下拉框等。一個一個對象檢查有些累贅,改進后偽代碼如下
checkCombObject(WebObject object){
if(object.hasChildren()){
for(Object obj : object.allChildren){
checkCombObject(obj);
}
}
assertObjectMatch(expectedObj, object);
}
這樣一行代碼可以檢查整個表單
checkCombObject(webForm);
先寫到這里,下次再寫V(View)和C(Control)