自動(dòng)化測(cè)試的數(shù)據(jù)依賴和獨(dú)立
單個(gè)腳本的數(shù)據(jù)問(wèn)題可以這樣處理,那么多個(gè)腳本之間的數(shù)據(jù)共享和傳遞呢?比如,一個(gè)系統(tǒng)有兩個(gè)模塊:上游模塊A,下游模塊B,B的輸入是A的輸出。這里有一個(gè)問(wèn)題:B的數(shù)據(jù)怎么創(chuàng)建?有人會(huì)馬上想到數(shù)據(jù)傳遞啊,把A模塊的輸出寫到一個(gè)公共變量或者數(shù)據(jù)表中,B模塊從這里拿數(shù)據(jù)開(kāi)始自己的執(zhí)行。是的,這是自動(dòng)化測(cè)試工具提供的功能。可是,如果某次運(yùn)行,模塊A有新的缺陷,造不出B預(yù)期的輸入數(shù)據(jù),會(huì)導(dǎo)致B的自動(dòng)化腳本失敗。當(dāng)我們看到失敗后,是否費(fèi)力排查下來(lái)才發(fā)現(xiàn)A才是B失敗的罪魁禍?zhǔn)祝慷绻?/span>A是成功的(A是否失敗要看是否有關(guān)于這個(gè)缺陷的相關(guān)驗(yàn)證),則更具有蒙蔽性,很難快速想到問(wèn)題可能出在A。這里舉的例子還相對(duì)簡(jiǎn)單,若系統(tǒng)中模塊間的交互更多、更復(fù)雜,數(shù)據(jù)的問(wèn)題、腳本的問(wèn)題、程序本身的缺陷就象幾個(gè)毛線團(tuán)纏繞在一起,排查問(wèn)題的根本原因?qū)⒑馁M(fèi)大量的人力,并讓人沮喪。更有甚者,上游一失效,下游所有相關(guān)功能測(cè)試全部失敗,即使他們本來(lái)是沒(méi)有缺陷的。這樣的自動(dòng)化也太脆弱了,簡(jiǎn)直和天氣預(yù)報(bào)一樣經(jīng)常誤報(bào)啊!
如 此看來(lái),測(cè)試數(shù)據(jù)的依賴確實(shí)給我們添了不少亂子。那我們是否可以這樣做?即使本來(lái)兩個(gè)功能之間有數(shù)據(jù)的傳遞,也為每個(gè)單獨(dú)的功能預(yù)埋其輸入數(shù)據(jù)(而非依賴 上游在執(zhí)行過(guò)程中產(chǎn)生這樣的數(shù)據(jù))。這樣當(dāng)一個(gè)功能失效后我們能夠迅速定位到它。當(dāng)然,這樣做的一個(gè)風(fēng)險(xiǎn)就是可能隱藏某模塊不能正確產(chǎn)生其它模塊希望的正確輸出,而這種問(wèn)題對(duì)于用戶的端到端的操作是嚴(yán)重的問(wèn)題。
因此,我建議在多個(gè)腳本的測(cè)試數(shù)據(jù)上綜合使用以上兩種方法。“數(shù)據(jù)獨(dú)立”適用于測(cè)試不穩(wěn)定的功能(如新功能),或者容易出錯(cuò)的功能(如老功能中復(fù)雜的邏輯),方便查找原因。“數(shù)據(jù)依賴”適用于測(cè)試穩(wěn)定的功能/接 口或者基本業(yè)務(wù)流程,有了它的保障,我們對(duì)端到端的正確性更有信心。當(dāng)“數(shù)據(jù)獨(dú)立”和“數(shù)據(jù)依賴”在一次運(yùn)行中都有時(shí),如果“數(shù)據(jù)獨(dú)立”的腳本失敗,我們 從“數(shù)據(jù)獨(dú)立”的單個(gè)腳本開(kāi)始排查問(wèn)題;如果“數(shù)據(jù)依賴”的腳本失敗,同時(shí)“數(shù)據(jù)獨(dú)立”的腳本也在相關(guān)處失敗,則從“數(shù)據(jù)獨(dú)立”的單個(gè)腳本開(kāi)始排查問(wèn)題, 否則從“數(shù)據(jù)依賴”的腳本處排查問(wèn)題。
posted on 2011-10-25 14:41 順其自然EVO 閱讀(244) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄