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