不收費(fèi)的小說網(wǎng)站排名百度推廣非企代理
關(guān)于測試框架的好處,比如快速回歸提高測試效率,提高測試覆蓋率等這里就不討論了。這里主要討論自動化框架包含哪些內(nèi)容,以及如何去設(shè)計(jì)一個(gè)測試框架。
1. 什么是自動化測試框架?
它是由一個(gè)或多個(gè)自動化測試基礎(chǔ)模塊、自動化測試管理模塊、自動化測試統(tǒng)計(jì)模塊等組成的工具集合。
以常見的前端UI測試為例,一個(gè)測試框架大概包括測試對象,測試組件,基礎(chǔ)類和函數(shù),工具類,測試數(shù)據(jù),異常處理,測試日志,斷言和測試報(bào)告等這些模塊。
在設(shè)計(jì)測試框架的時(shí)候,我們要盡可能的將這些模塊有機(jī)的結(jié)合起來,將腳本能夠有效的組織、連貫應(yīng)用起來,提高測試腳本的可維護(hù)性和可讀性。
2. 沒有萬能的測試框架,適合自己項(xiàng)目的,能提高工作效率的就是好框架。
由于應(yīng)用系統(tǒng)技術(shù)五花八門,幾乎沒有測試框架能應(yīng)用在多個(gè)項(xiàng)目上并體現(xiàn)出應(yīng)有的價(jià)值,所以一般情況都需要根據(jù)項(xiàng)目自身情況來定制化我們的測試框架,常用的有數(shù)據(jù)驅(qū)動,關(guān)鍵字驅(qū)動和兩種方式的混合。
a. 數(shù)據(jù)驅(qū)動 (DDT)- 如果被測系統(tǒng)業(yè)務(wù)邏輯固定不變或變動較小,我們可以使用數(shù)據(jù)驅(qū)動,通過不同數(shù)據(jù)來保證測試覆蓋率,通常數(shù)據(jù)都是保存在外面文件或數(shù)據(jù)庫中,運(yùn)行時(shí)自動獲取。特點(diǎn)是數(shù)據(jù)與測試腳本分離,基于模塊化的測試庫,一個(gè)驅(qū)動腳本可以執(zhí)行多個(gè)相似測試,這樣非常容易建立新測試。
b.關(guān)鍵字驅(qū)動 - 將數(shù)據(jù)與關(guān)鍵字結(jié)合來描述如何使用數(shù)據(jù)執(zhí)行測試。這種方法具備數(shù)據(jù)驅(qū)動的優(yōu)勢,同時(shí)非編程人員也能建立新類型測試。
3. 設(shè)計(jì)框架的思路:
a. 高內(nèi)聚低耦合,高內(nèi)聚就是每個(gè)模塊盡可能獨(dú)立完成自己的功能,不依賴于模塊外部的代碼;低耦合就是模塊與模塊之間接口的復(fù)雜程度,比如在類內(nèi)部盡可能減少方法之間的調(diào)用,否則一個(gè)方法的變動會影響調(diào)用它的另一個(gè)方法。
比如,你要做兩個(gè)功能:對文本文件的讀寫,對 word 讀寫,同是IO你可以放在一個(gè)類里的不同方法,高內(nèi)聚。
比如,寫了一個(gè)類,“人”類,“人”有自己的名字年齡等屬性,每個(gè)“人”又有一條狗做為自己的屬性,你可以把“人”類的屬性和“人”的狗的屬性都寫在“人”類里,這就成了高耦合,
而,把狗的屬性剝離出來,寫成“狗”類,在“人”類里只放一個(gè)對“狗”的對象做引用,這個(gè)“狗”類,即可做為“人”的屬性,也可以做它用。即 低耦合
b. 腳本分離:
對象、測試數(shù)據(jù)、業(yè)務(wù)邏輯相互剝離、靈活調(diào)用,在前端UI測試上可以得到明顯的效果,我們可以使用PageObject設(shè)計(jì)模式來實(shí)現(xiàn)對象和業(yè)務(wù)邏輯的剝離,使用DataProvider來實(shí)現(xiàn)數(shù)據(jù)業(yè)務(wù)邏輯分離。
c. 模塊化設(shè)計(jì)用例,腳本的可重用
如果時(shí)間充裕且項(xiàng)目提供支持,可以遵循以下順序進(jìn)行測試: 頁面對象 - 功能點(diǎn) - 業(yè)務(wù)邏輯 - 業(yè)務(wù)流程。
從實(shí)現(xiàn)來說就是:先測試底層的頁面操作對象,通過調(diào)用操作對象、及業(yè)務(wù)邏輯實(shí)現(xiàn)對功能點(diǎn)的驗(yàn)證,再通過調(diào)用業(yè)務(wù)邏輯組合功能點(diǎn)實(shí)現(xiàn)對業(yè)務(wù)流程的驗(yàn)證。不同的業(yè)務(wù)流程,對于底層的操作組件、中間層的功能點(diǎn)函數(shù)是完全可以復(fù)用的,只是調(diào)用的業(yè)務(wù)邏輯的差異,或者是測試數(shù)據(jù)的差異性。這樣的好處是腳本相互獨(dú)立性,代碼復(fù)用,易維護(hù),如有新的業(yè)務(wù)流程可以調(diào)用已有代碼來組合。
d. 封裝基礎(chǔ)方法,對于一些較通用的方法,可以封裝,比如log,assert,異常處理,文件讀寫操作,數(shù)據(jù)庫讀寫操作,保存頁面截圖等等。在需要的時(shí)候直接在測試用例里調(diào)用即可。
如何開展自動化測試
抓住業(yè)務(wù)測試工作中的痛點(diǎn)和領(lǐng)導(dǎo)的痛點(diǎn),多溝通多交流,優(yōu)先解決基層的工作痛點(diǎn),我相信一個(gè)好的領(lǐng)導(dǎo)會看到你的責(zé)任心和付出;
技術(shù)選型和方案可行性調(diào)研,多投入時(shí)間和精力,有的人性子急,前期做的很快,如果一開始的方向錯(cuò)了,最終會得不償失;
如果是比較復(fù)雜的解決方案,盡量前后端分離、保證各模塊的獨(dú)立性、可融合性、解耦不解體,做到靈活可擴(kuò)展,要有下一盤大棋的準(zhǔn)備。
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
?