摘要:軟件測(cè)試作為軟件開發(fā)的一個(gè)重要環(huán)節(jié),對(duì)提高和保障軟件質(zhì)量起到關(guān)鍵作用。該文從軟件自動(dòng)化測(cè)試的設(shè)計(jì)原則、自動(dòng)化測(cè)試框架的選擇和自動(dòng)化測(cè)試用例的生成等幾個(gè)方面出發(fā)對(duì)軟件測(cè)試自動(dòng)化技術(shù)加以探討,其目的是為企業(yè)實(shí)施自動(dòng)化測(cè)試過(guò)程提供參考。
關(guān)鍵詞:軟件測(cè)試;自動(dòng)化;框架;測(cè)試用例
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)12-2923-03
軟件測(cè)試作為軟件質(zhì)量保障的重要手段,其存在于軟件開發(fā)生命周期的每一個(gè)過(guò)程。在整個(gè)軟件項(xiàng)目的開發(fā)過(guò)程中,測(cè)試人員必須對(duì)所開發(fā)的軟件進(jìn)行不斷測(cè)試,以保證軟件的正常運(yùn)行。統(tǒng)計(jì)數(shù)據(jù)表明:軟件項(xiàng)目中超過(guò)一半的預(yù)算投入到軟件測(cè)試中,所以軟件測(cè)試代價(jià)高昂。缺陷發(fā)現(xiàn)的越晚,修正缺陷的代價(jià)也越高,給企業(yè)造成的損失也越大。
隨著軟件規(guī)模的增加,測(cè)試工作量的增大,需要投入大量的人力,原本的手工測(cè)試逐漸暴露出諸多缺陷,例如,覆蓋率量化困難、重復(fù)測(cè)試效率低下、不一致性和可靠性低、依賴人力資源等。軟件自動(dòng)化測(cè)試技術(shù)正是在這種情況下產(chǎn)生的。其根本目標(biāo)是使所有的測(cè)試行為包括測(cè)試用例的設(shè)計(jì)、驅(qū)動(dòng)、結(jié)果檢查、缺陷定位和移除等都盡可能實(shí)現(xiàn)自動(dòng)化。事實(shí)證明,正確、合理的實(shí)施自動(dòng)化測(cè)試,能夠?qū)浖芷诘母鱾€(gè)階段進(jìn)行快速、全面的測(cè)試,提高軟件測(cè)試效率,保證軟件的質(zhì)量,節(jié)約軟件的開發(fā)成本,縮短軟件的開發(fā)測(cè)試周期。但實(shí)際上,并非所有的自動(dòng)化測(cè)試技術(shù)都可以達(dá)到測(cè)試活動(dòng)的預(yù)期目標(biāo),諸多軟件開發(fā)機(jī)構(gòu)在實(shí)施軟件自動(dòng)化測(cè)試的過(guò)程中通常存在無(wú)法正確找準(zhǔn)測(cè)試自動(dòng)化的切入點(diǎn)、程序開發(fā)過(guò)程和測(cè)試自動(dòng)化過(guò)程相互獨(dú)立、軟件測(cè)試腳本的質(zhì)量低劣、測(cè)試自動(dòng)化過(guò)程對(duì)測(cè)試用例的依賴程度過(guò)高等方面的負(fù)擔(dān)造成工期延誤和成本浪費(fèi),甚至最終被完全放棄等問(wèn)題。
自動(dòng)化測(cè)試技術(shù)要想有效地解決測(cè)試質(zhì)量與效率、降低測(cè)試自動(dòng)化的投入、提高其產(chǎn)出等問(wèn)題間的矛盾,必須形成一套系統(tǒng)的自動(dòng)化測(cè)試體系,在質(zhì)量保障方面有所作為。因此,深入研究軟件自動(dòng)化測(cè)試技術(shù)和方法,保障軟件質(zhì)量,已經(jīng)成為國(guó)內(nèi)外軟件行業(yè)和相關(guān)機(jī)構(gòu)的研究熱點(diǎn)。
1 自動(dòng)化測(cè)試的設(shè)計(jì)原則
軟件自動(dòng)化測(cè)試是相對(duì)于手工測(cè)試而存在的,自動(dòng)化測(cè)試可以被理解為使用一個(gè)商業(yè)通用測(cè)試自動(dòng)化工具編寫一個(gè)軟件來(lái)發(fā)現(xiàn)其他軟件的缺陷。開發(fā)測(cè)試腳本以執(zhí)行鍵盤、鼠標(biāo)動(dòng)作和后臺(tái)進(jìn)程并驗(yàn)證應(yīng)用程序響應(yīng)和行為。一個(gè)良好的自動(dòng)化測(cè)試體系在設(shè)計(jì)時(shí),需滿足以下條件:可維護(hù)性 - 使測(cè)試更新跟上軟件升級(jí)的步伐;高效性-實(shí)現(xiàn)效率最大化;可靠性 - 使測(cè)試結(jié)果準(zhǔn)確而且可重現(xiàn);兼容性-允許測(cè)試用例為不同的測(cè)試目標(biāo)而以不同的方式組合;可用性-測(cè)試人員或用戶容易掌握定制或更改測(cè)試用例的方法;健壯性-可以處理意外情況而不退出或終止;可移植性 - 測(cè)試腳本可以在不同環(huán)境中運(yùn)行測(cè)試。
2 自動(dòng)化測(cè)試框架的選取
自動(dòng)化測(cè)試框架是一組自動(dòng)化測(cè)試的規(guī)范、測(cè)試腳本的基礎(chǔ)代碼,以及測(cè)試思想、慣例的集合。自動(dòng)化測(cè)試框架的好壞對(duì)自動(dòng)化測(cè)試的成功有直接影響。目前業(yè)界公認(rèn)的自動(dòng)化測(cè)試框架,主要有四種:數(shù)據(jù)驅(qū)動(dòng)框架、測(cè)試腳本模塊化框架、測(cè)試庫(kù)架構(gòu)框架和關(guān)鍵詞驅(qū)動(dòng)框架。
1)數(shù)據(jù)驅(qū)動(dòng)框架
測(cè)試驅(qū)動(dòng)引擎從數(shù)據(jù)文件讀取輸入數(shù)據(jù),通過(guò)變量的參數(shù)化,將測(cè)試數(shù)據(jù)傳入測(cè)試腳本,不同的數(shù)據(jù)文件對(duì)應(yīng)不同的測(cè)試用例,數(shù)據(jù)驅(qū)動(dòng)腳本將測(cè)試腳本(執(zhí)行步驟)和數(shù)據(jù)分離,將測(cè)試輸入數(shù)據(jù)存儲(chǔ)在獨(dú)立的數(shù)據(jù)文件中,而不是直接存儲(chǔ)在腳本中[1]。在腳本中引入變量,執(zhí)行時(shí)通過(guò)變量來(lái)讀取數(shù)據(jù)文件中的數(shù)據(jù)。通過(guò)數(shù)據(jù)驅(qū)動(dòng)腳本,同一個(gè)腳本可以測(cè)試不同的輸入數(shù)據(jù),提高了腳本的重用率和可維護(hù)性。其缺點(diǎn)是初始建立的開銷較大,由被測(cè)試應(yīng)用程序的變化所導(dǎo)致的工作量在所有架構(gòu)中是最多的,因此維護(hù)成本是相當(dāng)高的。
2)測(cè)試腳本模塊化框架
測(cè)試腳本模塊化框架的測(cè)試腳本中包含了各功能點(diǎn)的控件識(shí)別和業(yè)務(wù)邏輯操作,其中包含調(diào)用外部測(cè)試數(shù)據(jù)。框架結(jié)構(gòu)如圖1所示。圖中箭頭方向代表的是調(diào)用關(guān)系。負(fù)責(zé)自動(dòng)化測(cè)試腳本維護(hù)的開發(fā)工程師必須了解自動(dòng)化編程和業(yè)務(wù)邏輯。負(fù)責(zé)為花測(cè)試數(shù)據(jù)的工作由測(cè)試工程師完成。它的優(yōu)點(diǎn)是控件和業(yè)務(wù)邏輯一旦發(fā)生變化,底層的測(cè)試腳本就要進(jìn)行修改和維護(hù)(這比沒(méi)有任何抽象封裝的自動(dòng)化測(cè)試程序稍好一點(diǎn))。缺點(diǎn)是幾乎所有大的變更導(dǎo)致的工作量都要交給自動(dòng)化測(cè)試開發(fā)工程師來(lái)完成;控件識(shí)別和業(yè)務(wù)邏輯本身屬于不同的領(lǐng)域,
沒(méi)有很好進(jìn)行抽象封裝。
3)測(cè)試庫(kù)構(gòu)架框架
所有的針對(duì)測(cè)試系統(tǒng)本身的控件識(shí)別和支持的操作將被封裝在測(cè)試庫(kù)中;通過(guò)測(cè)試腳本調(diào)用測(cè)試庫(kù)的同時(shí)傳遞外部的測(cè)試數(shù)據(jù);自動(dòng)化測(cè)試開發(fā)工程師在編寫測(cè)試庫(kù)的同時(shí)(無(wú)需了解業(yè)務(wù)),還需要負(fù)責(zé)控件的變更和維護(hù);對(duì)業(yè)務(wù)比較熟悉的自動(dòng)化測(cè)試開發(fā)工程師編寫測(cè)試腳本,并負(fù)責(zé)業(yè)務(wù)邏輯的變更和維護(hù);測(cè)試工程師則只需要維護(hù)測(cè)試數(shù)據(jù)(無(wú)需了解自動(dòng)化開發(fā))??蚣芙Y(jié)構(gòu)如圖2所示。其優(yōu)點(diǎn)是在被測(cè)試系統(tǒng)中,無(wú)論是哪一層的變化,其需要的變更維護(hù)工作只需要交給相應(yīng)人員即可;這從根本上實(shí)現(xiàn)了控件識(shí)別操作和業(yè)務(wù)邏輯的抽象分離。其缺點(diǎn)是由變更引起的工作量還是附加在自動(dòng)化測(cè)試開發(fā)工程師身上。
4)關(guān)鍵詞驅(qū)動(dòng)框架
關(guān)鍵詞驅(qū)動(dòng)框架是數(shù)據(jù)驅(qū)動(dòng)框架的一種改進(jìn)類型。在該框架中,需要定義關(guān)鍵詞表格,關(guān)鍵詞表格一般存儲(chǔ)在測(cè)試數(shù)據(jù)庫(kù)、Excel或文件中,表格一般包括所需要的所有對(duì)象、操作和測(cè)試數(shù)據(jù)。編寫驅(qū)動(dòng)代碼讀取表格數(shù)據(jù),分析測(cè)試對(duì)象、測(cè)試操作和測(cè)試數(shù)據(jù)。關(guān)鍵詞驅(qū)動(dòng)的主要思想是:腳本與數(shù)據(jù)分離、界面元素名與測(cè)試內(nèi)部對(duì)象名分離、測(cè)試描述與具體實(shí)現(xiàn)細(xì)節(jié)分離[2]。關(guān)鍵詞驅(qū)動(dòng)模式具有以下優(yōu)點(diǎn):在同一個(gè)特定格式的數(shù)據(jù)表中就可以實(shí)現(xiàn)測(cè)試步驟、測(cè)試數(shù)據(jù)以及驗(yàn)證結(jié)果的編寫;獨(dú)立于測(cè)試腳本語(yǔ)言開發(fā)測(cè)試用例;所需腳本數(shù)量是隨著軟件的規(guī)模而不是測(cè)試的數(shù)量而變化的;可以用于工具無(wú)關(guān)的方法實(shí)現(xiàn)測(cè)試;實(shí)現(xiàn)測(cè)試的方法可以剪裁適合測(cè)試者而不是測(cè)試工具。
3 自動(dòng)化測(cè)試用例的生成
自動(dòng)化測(cè)試中,自動(dòng)化測(cè)試用例是重中之重,一個(gè)設(shè)計(jì)優(yōu)秀的自動(dòng)化測(cè)試用例能在很大程度上決定自動(dòng)化測(cè)試是否成功。自動(dòng)化測(cè)試用例應(yīng)用腳本技術(shù)進(jìn)行用例解析,是針對(duì)自動(dòng)化測(cè)試框架的,在進(jìn)行設(shè)計(jì)時(shí)應(yīng)滿足兩個(gè)原則[3]:①選擇操作過(guò)程相同的一些測(cè)試需求,來(lái)組成用例場(chǎng)景,使用測(cè)試用例結(jié)構(gòu)化指導(dǎo)測(cè)試腳本的結(jié)構(gòu)化。②場(chǎng)景包含的用例不能太多,當(dāng)一個(gè)場(chǎng)景包含的用例數(shù)量較多時(shí),可以考慮對(duì)場(chǎng)景進(jìn)行分拆。
1)自動(dòng)化測(cè)試用例要素分析
在設(shè)計(jì)自動(dòng)化測(cè)試用例時(shí),除了必須包含測(cè)試目標(biāo)、測(cè)試前提條件、測(cè)試環(huán)境要求、測(cè)試類別、測(cè)試用例標(biāo)識(shí)、測(cè)試操作ID、測(cè)試操作描述、測(cè)試操作路徑、測(cè)試輸入數(shù)據(jù)和期望結(jié)果等元素,對(duì)必填元素在編寫結(jié)束后必須進(jìn)行判空校驗(yàn),以確保測(cè)試用例自動(dòng)執(zhí)行時(shí)的有效性。
設(shè)計(jì)測(cè)試用例時(shí),首先要保證測(cè)試用例名稱能唯一標(biāo)識(shí)某一個(gè)用例,例如“新用戶注冊(cè)”。在自動(dòng)化測(cè)試底層會(huì)一般是通過(guò)添加ID來(lái)控制用例的唯一性,但是在界面上顯示時(shí),一般通過(guò)醒目的信息提示等手段對(duì)唯一性進(jìn)行控制。其次,每一個(gè)測(cè)試活動(dòng)通常存在前提條件。一個(gè)測(cè)試用例往往是另外一個(gè)用例執(zhí)行的前提。正常情況下在執(zhí)行登陸操作之前,用戶需要進(jìn)行注冊(cè)操作。所以把新用戶注冊(cè)用例作為用戶登陸用例的前提。另外,因?yàn)闇y(cè)試用例已經(jīng)存在于測(cè)試用例庫(kù),所以要想使計(jì)算機(jī)能夠知道在執(zhí)行該用例之前,必須先執(zhí)行某一個(gè)用例,那么就需要在相關(guān)用例之間建立前置關(guān)聯(lián)關(guān)系。最后,測(cè)試步驟的操作過(guò)程在自動(dòng)化測(cè)試過(guò)程中實(shí)際分為操作步驟、控件和數(shù)據(jù)三個(gè)關(guān)鍵詞段[4]。操作步驟就是用戶的操作順序。在測(cè)試過(guò)程中,測(cè)試人員主要對(duì)控件實(shí)施某種行為,例如:用戶進(jìn)行注冊(cè)時(shí),是在注冊(cè)頁(yè)面中輸入用戶名、密碼以及各種其他信息,然后點(diǎn)擊“注冊(cè)”按鈕,這是針對(duì)文本框和按鈕等控件進(jìn)行操作。而數(shù)據(jù)主要是用戶在這些控件上所填充的輸入內(nèi)容。在自動(dòng)化測(cè)試來(lái)說(shuō),標(biāo)識(shí)控件的可以通過(guò)對(duì)象本身以及該對(duì)象的屬性來(lái)進(jìn)行描述。
2)測(cè)試用例的粒度設(shè)計(jì)
測(cè)試用例的粒度因?yàn)橛泻芏嗯c之相關(guān)的因素,包括項(xiàng)目的質(zhì)量、時(shí)間以及用戶要求等等,在整個(gè)軟件測(cè)試領(lǐng)域目前還沒(méi)有統(tǒng)一定論。測(cè)試用例的粒度決定了用例模型級(jí)的復(fù)雜度,也決定了每一個(gè)用例內(nèi)部的復(fù)雜度。應(yīng)該視軟件的具體情況來(lái)把握各個(gè)層次的復(fù)雜度,在盡可能保證整個(gè)用例模型的易理解性前提下決定用例的大小和數(shù)目[4]。在進(jìn)行用例粒度設(shè)計(jì)時(shí)應(yīng)注意以下問(wèn)題:第一,一個(gè)用例不能對(duì)多個(gè)功能點(diǎn)進(jìn)行校驗(yàn),盡量保證每個(gè)用例驗(yàn)證功能點(diǎn)單一化;第二,在設(shè)計(jì)用例步驟時(shí),不應(yīng)涵蓋步驟之間的相互跳轉(zhuǎn)操作。
4 結(jié)束語(yǔ)
隨著軟件規(guī)模的的日益龐大,實(shí)施軟件測(cè)試的成本也越來(lái)越高。將自動(dòng)化軟件測(cè)試技術(shù)引入到軟件開發(fā)的整個(gè)過(guò)程,不僅可以縮短軟件開發(fā)周期,讓產(chǎn)品更快投放市場(chǎng),能夠提高軟件測(cè)試的準(zhǔn)確度和精確度,增加軟件的可信任度,另外還能增強(qiáng)測(cè)試的穩(wěn)定性和可靠性。自動(dòng)化測(cè)試包含的內(nèi)容有方方面面,這里只是對(duì)其中的一部分進(jìn)行研究。對(duì)于自動(dòng)化測(cè)試,我們除了要建立一個(gè)正確的認(rèn)識(shí)觀之外,還應(yīng)該力求在自動(dòng)化測(cè)試領(lǐng)域不斷創(chuàng)新,制定出更系統(tǒng)的自動(dòng)化測(cè)試體系,為軟件質(zhì)量保駕護(hù)航。
參考文獻(xiàn):
[1] 劉旭.軟件測(cè)試自動(dòng)化的測(cè)試研究[J].煤炭技術(shù),2012(7):168-169.
[2] 黃威.關(guān)鍵詞驅(qū)動(dòng)的測(cè)試自動(dòng)化框架模型與系統(tǒng)實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012(4):57-60.
[3] 李翼,陳創(chuàng).計(jì)算機(jī)軟件測(cè)試技術(shù)淺談[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012(11):113-115.
[4] 郭德紅.自動(dòng)化測(cè)試的測(cè)試用例設(shè)計(jì)[J].價(jià)值工程,2012(20):195-197.