我眼中的自動(dòng)化測(cè)試框架設(shè)計(jì)要點(diǎn)
對(duì)于自動(dòng)化測(cè)試框架,其實(shí)并沒(méi)有多數(shù)人想象中的那么高深玄乎,框架的概念只是一系列的被事先定義好的標(biāo)準(zhǔn)和規(guī)范。在自動(dòng)化測(cè)試中我們經(jīng)常提到的對(duì)測(cè)試需求的解析、腳本設(shè)計(jì)、測(cè)試執(zhí)行、測(cè)試報(bào)告、維護(hù)管理等等,通過(guò)框架將它們串聯(lián)并封裝起來(lái),從而使框架的終端用戶能夠更方便地使用。然而,一個(gè)好的自動(dòng)化測(cè)試框架,不僅僅要能讓用戶方便使用,還需要考慮很多其他因素,下面就來(lái)分享一下一些個(gè)人的經(jīng)驗(yàn)。
● 選擇一種類型的框架
目前比較常見(jiàn)的自動(dòng)化測(cè)試框架主要有3種:數(shù)據(jù)驅(qū)動(dòng)框架、關(guān)鍵字驅(qū)動(dòng)框架和混合型框架。
1、數(shù)據(jù)驅(qū)動(dòng)框架(Data Driven Framework)
數(shù)據(jù)驅(qū)動(dòng)最適合測(cè)試的業(yè)務(wù)邏輯固定不變的應(yīng)用程序,只有測(cè)試數(shù)據(jù)會(huì)變化。通常測(cè)試數(shù)據(jù)會(huì)被配置在外部文件或數(shù)據(jù)庫(kù)中。
2、關(guān)鍵字驅(qū)動(dòng)框架(Keyword Driven Framework)
關(guān)鍵字驅(qū)動(dòng)顧名思義,它提供了一系列通用的關(guān)鍵字,用戶通過(guò)調(diào)用這些關(guān)鍵字并輸入一些參數(shù)可以實(shí)現(xiàn)單個(gè)操作,比如,打開(kāi)瀏覽器、打開(kāi)某個(gè)網(wǎng)頁(yè)、點(diǎn)擊某個(gè)鏈接等等,然后通過(guò)組織這些關(guān)鍵字形成一個(gè)完整的測(cè)試流程。
3、混合型框架(Hybrid Framework)
混合型框架就是把數(shù)據(jù)驅(qū)動(dòng)和關(guān)鍵字驅(qū)動(dòng)整合起來(lái),同時(shí)具備了兩者的優(yōu)點(diǎn)。與關(guān)鍵字框架不同的是,這種框架通常會(huì)提供一些針對(duì)于特定應(yīng)用程序的關(guān)鍵字,比如登錄、登出等。然后在完整測(cè)試流程的基礎(chǔ)上,再應(yīng)用一層數(shù)據(jù)驅(qū)動(dòng),這樣就能使測(cè)試邏輯和測(cè)試數(shù)據(jù)更加靈活和可配置。
● 不必重新造輪
在設(shè)計(jì)框架的時(shí)候應(yīng)該盡可能的沿用自動(dòng)化測(cè)試工具已提供的功能。比如,一個(gè)基于selenium的框架,selenium本身就已經(jīng)提供了打開(kāi)瀏覽器和網(wǎng)頁(yè),點(diǎn)擊按鈕等功能,就不必花時(shí)間再去開(kāi)發(fā)這樣一些關(guān)鍵字,以減少開(kāi)發(fā)成本。
● 可重用性
一個(gè)好的框架必須具有高度的可重用性。我們可以把一些單獨(dú)的操作組合成一些最常用的測(cè)試流程,比如,把“輸入用戶名”、“輸入密碼”、“點(diǎn)擊登錄”三個(gè)操作組合成一個(gè)關(guān)鍵字“登錄”。
● 配置管理
如同開(kāi)發(fā)團(tuán)隊(duì)一樣,自動(dòng)化腳本也需要有配置管理,這樣才能更有效地對(duì)腳本的提交、修改、版本控制、基線化等操作進(jìn)行管理,所以在設(shè)計(jì)框架的時(shí)候需要考慮結(jié)合配置管理工具,如CVS、VSS、SVN等。
● 可配置性
1、外部可配置性
腳本的配置項(xiàng)應(yīng)該放在外部文件中,像URL,路徑,版本信息等,從而能使腳本在不同的環(huán)境下運(yùn)行。另外配置文件的路徑也不能寫死,應(yīng)采用相對(duì)路徑,以保證框架能在不同的機(jī)器上順利運(yùn)行。
2、內(nèi)部可配置性
當(dāng)框架部署到不同的機(jī)器上時(shí),會(huì)有不同的環(huán)境,要有能夠自動(dòng)根據(jù)不同的系統(tǒng)環(huán)境完成必要配置的能力。舉個(gè)例子,比如一個(gè)selenium框架被部署到裝有不同瀏覽器的機(jī)器上,框架應(yīng)當(dāng)能根據(jù)當(dāng)前系統(tǒng)上裝了哪些瀏覽器而分別運(yùn)行它們。
● 對(duì)象庫(kù)維護(hù)
在自動(dòng)化測(cè)試中遇到的大多數(shù)問(wèn)題基本上都是由于對(duì)象的屬性變化導(dǎo)致的腳本失敗,所以,對(duì)象庫(kù)的維護(hù)能力對(duì)于一個(gè)框架來(lái)說(shuō)十分重要。我們可以把對(duì)象庫(kù)作為一個(gè)共享資源,由專人進(jìn)行維護(hù)。對(duì)象庫(kù)可以是一個(gè)外部的XML、Excel、數(shù)據(jù)庫(kù)等。
● 執(zhí)行模式
需要考慮到以下幾種用例執(zhí)行需求:
1、執(zhí)行一個(gè)單獨(dú)的用例
2、執(zhí)行一個(gè)測(cè)試用例集
3、重新執(zhí)行失敗的用例
4、根據(jù)其他的用例或用例集的運(yùn)行結(jié)果執(zhí)行相應(yīng)的用例或用例集
除了這些以外可能還有其他的方法,主要是根據(jù)項(xiàng)目的需求來(lái)的,所以只需要滿足特定的項(xiàng)目測(cè)試需求就可以了,不必全部都實(shí)現(xiàn)。
● 狀態(tài)監(jiān)控
在腳本執(zhí)行的時(shí)候,框架應(yīng)當(dāng)能夠?qū)崟r(shí)監(jiān)控腳本的運(yùn)行情況,如果碰到運(yùn)行故障的時(shí)候應(yīng)當(dāng)能進(jìn)行基本的容錯(cuò)恢復(fù)處理,這樣的話不至于使腳本處在一個(gè)被block的狀態(tài),從而浪費(fèi)大量時(shí)間。
● 測(cè)試報(bào)告
不同的應(yīng)用程序往往會(huì)有不同的測(cè)試報(bào)告的要求,有時(shí)需要把許多用例集的運(yùn)行結(jié)果結(jié)合起來(lái)(總的運(yùn)行報(bào)告)看,多少個(gè)成功,多少個(gè)失敗,通過(guò)率多少;有時(shí)又要看單獨(dú)一個(gè)用例的執(zhí)行情況,哪一步失敗,失敗原因是什么。
另一方面,多樣化的測(cè)試報(bào)告表現(xiàn)形式也是需要考慮的。Excel、word、web、pdf、...等形式可以根據(jù)實(shí)際項(xiàng)目需要來(lái)選擇,但不論做成何種形式都至少要保證測(cè)試報(bào)告的易讀、易訪問(wèn)。
● 易調(diào)試性
一般情況下,調(diào)試(debugging)在開(kāi)發(fā)測(cè)試腳本的過(guò)程中會(huì)占據(jù)大量時(shí)間,所以是否易于調(diào)試也是一個(gè)很重要的因素,直接影響到開(kāi)發(fā)和維護(hù)框架的成本,不容忽視。
● 測(cè)試日志
一個(gè)好的框架應(yīng)當(dāng)能在測(cè)試執(zhí)行過(guò)程中生產(chǎn)足夠詳細(xì)的日志信息(文字、截圖等),這對(duì)于調(diào)試的幫助很大,同時(shí)也能我們快速定位到問(wèn)題所在,節(jié)省時(shí)間。
● 易用性
易學(xué)易用對(duì)于自動(dòng)化測(cè)試框架來(lái)說(shuō)也很重要,因?yàn)楫吘故且嫦蜃罱K用戶的,如果框架很難上手,會(huì)失去用戶群體,那框架也就沒(méi)有存在的意義了。所以在保證易用性的基礎(chǔ)上,最好有一個(gè)詳細(xì)的框架說(shuō)明文檔,對(duì)于新手來(lái)說(shuō)幫助會(huì)比較大。
● 靈活性
靈活性是指框架應(yīng)當(dāng)能保證在目前的基礎(chǔ)上做二次開(kāi)發(fā)的能力,這個(gè)其實(shí)跟軟件開(kāi)發(fā)的標(biāo)準(zhǔn)是一樣的,預(yù)留足夠的可擴(kuò)展性以便未來(lái)的版本升級(jí)。
● 性能
框架設(shè)計(jì)不宜過(guò)于復(fù)雜,太復(fù)雜的框架會(huì)增加腳本的加載、運(yùn)行時(shí)間,從而導(dǎo)致運(yùn)行腳本的效率低下。所以在設(shè)計(jì)框架的時(shí)候,也要考慮到性能這一因素。
● 引用外部工具
有一些外部工具本身就提供了自動(dòng)化接口的,我們不妨可以把它融入到框架中,可以省去不少工作量。比如,經(jīng)典的QTP+QC框架。
● 編碼規(guī)范
好的編碼規(guī)范能使腳本易讀、易維護(hù)、易管理。下面列出了一些點(diǎn):
1、變量、常量、函數(shù)、文件、腳本的命名規(guī)范
2、函數(shù)、函數(shù)庫(kù)的注釋規(guī)范
3、對(duì)象命名規(guī)范
最后需要說(shuō)一句,自動(dòng)化測(cè)試框架永遠(yuǎn)沒(méi)有最好的,只有最適合的!
posted on 2013-04-01 10:12 順其自然EVO 閱讀(306) 評(píng)論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)