楊麗波
摘要:隨著計(jì)算機(jī)技術(shù)的高速發(fā)展和軟件技術(shù)的不斷提高,軟件已經(jīng)應(yīng)用在各行各業(yè),軟件的質(zhì)量也越來(lái)越得到人們的重視。軟件測(cè)試是提高軟件質(zhì)量的一個(gè)重要手段。文章對(duì)軟件測(cè)試方法中的自動(dòng)化測(cè)試方法的發(fā)展現(xiàn)狀作了簡(jiǎn)單的分析,列舉了現(xiàn)階段常用的軟件自動(dòng)化測(cè)試方法,并對(duì)在采用自動(dòng)化測(cè)試方法中容易出現(xiàn)的誤區(qū)和不適合采用自動(dòng)化測(cè)試方法的情況~_45-了分析。
關(guān)鍵詞:軟件技術(shù);軟件測(cè)試;自動(dòng)化測(cè)試
軟件的質(zhì)量就是軟件的生命。隨著軟件產(chǎn)品的應(yīng)用范圍越來(lái)越廣、功能越來(lái)越復(fù)雜,軟件質(zhì)量的管理也越來(lái)越困難,雖然人們?cè)谶M(jìn)行軟件開發(fā)的過(guò)程中使用了許多有效的分析、設(shè)計(jì)和實(shí)現(xiàn)方法,但仍然不能避免出現(xiàn)各種各樣的錯(cuò)誤,因此,采用更加切實(shí)有效的方法發(fā)現(xiàn)軟件產(chǎn)品中的錯(cuò)誤和缺陷將成為軟件測(cè)試人員的首要任務(wù)?,F(xiàn)階段可以采用的軟件測(cè)試方法包括人工測(cè)試和自動(dòng)化測(cè)試,人工測(cè)試就是測(cè)試人員模擬用戶對(duì)軟件產(chǎn)品進(jìn)行操作,從而發(fā)現(xiàn)軟件的功能和性能與用戶的需求不一致的地方,即軟件缺陷。軟件的自動(dòng)化測(cè)試就是使用自動(dòng)化測(cè)試工具或手段,按照測(cè)試工程師的預(yù)定計(jì)劃自動(dòng)實(shí)現(xiàn)多次重復(fù)測(cè)試,并分析測(cè)試結(jié)果。采用自動(dòng)化的測(cè)試方法可以大幅度地提高測(cè)試的效率,具有良好的可操作性。
1.自動(dòng)化測(cè)試方法
1.1最初的軟件自動(dòng)化測(cè)試技術(shù)
最初的軟件自動(dòng)化測(cè)試技術(shù)出現(xiàn)在20世紀(jì)90年代初期,主要采用硬件方式來(lái)錄制鍵盤輸入和操作過(guò)程,然后通過(guò)播放實(shí)現(xiàn)重復(fù)的測(cè)試過(guò)程,在一定程度上提高了測(cè)試的效率,但是不能實(shí)現(xiàn)檢查點(diǎn)的功能,即不能針對(duì)某個(gè)功能點(diǎn)進(jìn)行功能和屬性的檢查。在這種模式下,記錄操作過(guò)程的腳本和所操作的數(shù)據(jù)是混在一起的,因此維護(hù)的成本很高。而且,一旦界面進(jìn)行了簡(jiǎn)單的變化,從前的腳本就完全無(wú)法使用,必須重新錄制,這種方式不但使腳本的使用率降低,而且也降低了整個(gè)測(cè)試工作的效率。
1.2基于數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)
在20世紀(jì)90年代后期,隨著軟件測(cè)試技術(shù)的不斷發(fā)展,使得錄制和播放測(cè)試腳本的功能由硬件實(shí)現(xiàn)轉(zhuǎn)變?yōu)檐浖绞綄?shí)現(xiàn),并且增加了檢查點(diǎn)的功能,即可以通過(guò)對(duì)某個(gè)功能實(shí)現(xiàn)所涉及的參數(shù)值或者屬性值與預(yù)期值進(jìn)行比對(duì)來(lái)判斷該功能是否正確實(shí)現(xiàn)。
這種技術(shù)與最初的自動(dòng)化測(cè)試不同的是可以實(shí)現(xiàn)從數(shù)據(jù)文件中讀取數(shù)據(jù),數(shù)據(jù)和操作過(guò)程腳本實(shí)現(xiàn)了分離,被稱為基于數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)。它將輸入數(shù)據(jù)、預(yù)期輸出組織成表,表中的一行數(shù)據(jù)就對(duì)應(yīng)著一次測(cè)試過(guò)程,測(cè)試時(shí)從表中一行一行的讀取數(shù)據(jù),然后通過(guò)變量的形式傳入事先錄制好的或者是手工編寫的測(cè)試腳本中,這樣利用相同的測(cè)試過(guò)程測(cè)試不同的輸入、輸出數(shù)據(jù)的組合。這種方法對(duì)于具有很多不同數(shù)據(jù)作為測(cè)試用例的被測(cè)系統(tǒng)來(lái)說(shuō)是非常有效的。
1.3基于關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)
基于關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)的應(yīng)用開始于2001年,是基于數(shù)據(jù)驅(qū)動(dòng)測(cè)試技術(shù)的擴(kuò)展,關(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試用自然語(yǔ)言來(lái)描述測(cè)試用例,將測(cè)試腳本抽象化,使不懂任何代碼的非技術(shù)人員,也可以使用測(cè)試工具進(jìn)行測(cè)試?;陉P(guān)鍵字驅(qū)動(dòng)的自動(dòng)化測(cè)試用關(guān)鍵字組成測(cè)試的業(yè)務(wù)邏輯,其主要思想是:腳本和數(shù)據(jù)實(shí)現(xiàn)分離、測(cè)試描述與具體實(shí)現(xiàn)細(xì)節(jié)分離、界面元素名和測(cè)試內(nèi)部對(duì)象名實(shí)現(xiàn)分離。主要關(guān)鍵字包括:被操作對(duì)象(Item),操作(Operation)和價(jià)值(value),用面向?qū)ο笮问娇蓪⑵浔憩F(xiàn)為Itern.Operation(Value)。
1.4基于領(lǐng)域驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)
基于領(lǐng)域驅(qū)動(dòng)的自動(dòng)化測(cè)試是在關(guān)鍵字驅(qū)動(dòng)測(cè)試的基礎(chǔ)上發(fā)展而來(lái)的,主要特點(diǎn)是:從領(lǐng)域模型出發(fā),使用被測(cè)軟件產(chǎn)品的領(lǐng)域語(yǔ)言描述測(cè)試用例,進(jìn)行建模,并對(duì)測(cè)試用例和領(lǐng)域關(guān)鍵字進(jìn)行分析、設(shè)計(jì)、開發(fā)和組織管理,從而進(jìn)行有效的測(cè)試。領(lǐng)域驅(qū)動(dòng)的自動(dòng)化測(cè)試優(yōu)點(diǎn)如下:(1)測(cè)試用例用領(lǐng)域語(yǔ)言描述,易于理解:(2)測(cè)試用例可以通過(guò)將領(lǐng)域關(guān)鍵字和設(shè)置參數(shù)進(jìn)行組合來(lái)得到;(3)當(dāng)被測(cè)軟件產(chǎn)品的實(shí)現(xiàn)方式發(fā)生變化時(shí),可以更新領(lǐng)域驅(qū)動(dòng)測(cè)試庫(kù)以適應(yīng)新的變化,測(cè)試用例不需要做任何修改。
1.5基于功能驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)
基于功能驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)首先將整個(gè)系統(tǒng)劃分為多個(gè)獨(dú)立的模塊,在執(zhí)行自動(dòng)化測(cè)試時(shí)首先要實(shí)現(xiàn)每個(gè)模塊的自動(dòng)化測(cè)試,每個(gè)模塊都是一個(gè)可實(shí)現(xiàn)的測(cè)試載體,每個(gè)測(cè)試體被實(shí)現(xiàn)為一個(gè)包含測(cè)試信息的測(cè)試函數(shù),代表著一個(gè)獨(dú)立的測(cè)試用例,并可以根據(jù)需要調(diào)用代表一個(gè)獨(dú)立功能模塊的應(yīng)用模塊,讀取驅(qū)動(dòng)這些應(yīng)用所需的測(cè)試數(shù)據(jù)。在應(yīng)用模塊中封裝著所有對(duì)系統(tǒng)界面的操作和輸入。由于應(yīng)用模塊代表獨(dú)立的功能,所以對(duì)其進(jìn)行維護(hù)也相對(duì)獨(dú)立。
由于在整個(gè)基于功能驅(qū)動(dòng)的自動(dòng)化測(cè)試中,所有與被測(cè)軟件系統(tǒng)有關(guān)的操作及屬性,都被封裝在每個(gè)應(yīng)用模塊腳本中,當(dāng)系統(tǒng)界面變化以后,只需去修改被影響的應(yīng)用模塊的腳本,其他腳本可以保持穩(wěn)定。
1.6基于指令驅(qū)動(dòng)的自動(dòng)化測(cè)試技術(shù)
基于指令驅(qū)動(dòng)的自動(dòng)化測(cè)試是基于數(shù)據(jù)驅(qū)動(dòng)自動(dòng)化測(cè)試技術(shù)的改進(jìn),其整個(gè)過(guò)程所包含的功能都是由指令驅(qū)動(dòng)的,可以支持由不同序列或多個(gè)不同路徑組成的測(cè)試。指令驅(qū)動(dòng)的自動(dòng)化測(cè)試建立在數(shù)據(jù)驅(qū)動(dòng)自動(dòng)化測(cè)試方法之上,但是表中存放的不是數(shù)據(jù),而是指令,其獨(dú)立于執(zhí)行測(cè)試的自動(dòng)化工具,是對(duì)數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化測(cè)試的有效改進(jìn),也是到目前為止,被學(xué)術(shù)界認(rèn)為是比較理想的自動(dòng)化測(cè)試。
2.使用自動(dòng)化測(cè)試的誤區(qū)
軟件的自動(dòng)化測(cè)試技術(shù)具有良好的可重復(fù)性和高效率等優(yōu)點(diǎn),但也有一些局限性,下面來(lái)分析一下人們?cè)谑褂米詣?dòng)化測(cè)試的過(guò)程中存在的一些誤區(qū)。
2.1采用自動(dòng)化測(cè)試能夠完全取代手工測(cè)試
在很多情形下,軟件系統(tǒng)的測(cè)試過(guò)程必須由人來(lái)進(jìn)行控制,只有當(dāng)上一個(gè)步驟執(zhí)行完畢,才可以根據(jù)執(zhí)行結(jié)果判定下面如何執(zhí)行,或是輸入哪些測(cè)試數(shù)據(jù),這樣的決策必須由人來(lái)做出,機(jī)器是無(wú)法完成的,所以不能期望在所有的情況下都使用自動(dòng)化測(cè)試來(lái)取代手工測(cè)試。
2.2能夠?qū)σ子眯苑矫娴膶傩赃M(jìn)行測(cè)試
因?yàn)楣ぞ弑旧聿痪哂袑徝烙^和想象力,所以對(duì)于一些界面美觀和易用性方面的測(cè)試無(wú)法作出判斷,也就無(wú)法實(shí)現(xiàn)自動(dòng)化測(cè)試。
2.3只要使用自動(dòng)化測(cè)試就能縮短測(cè)試時(shí)間、提高測(cè)試效率
要采用自動(dòng)化的測(cè)試方法,必須在測(cè)試執(zhí)行之前花費(fèi)更多的時(shí)間搭建測(cè)試環(huán)境、錄制腳本、建立數(shù)據(jù)表格并輸入數(shù)據(jù)等等,與采用手工測(cè)試相比,要花費(fèi)5~10倍的時(shí)間來(lái)開發(fā)一個(gè)自動(dòng)化測(cè)試用例。因此如果不能增加額外的資源和時(shí)間,不可能進(jìn)行大量的投入來(lái)搭建自動(dòng)化測(cè)試框架,對(duì)于規(guī)模較小,測(cè)試用例較少的被測(cè)軟件系統(tǒng)來(lái)說(shuō)采用自動(dòng)化測(cè)試反而會(huì)增加測(cè)試時(shí)間、降低效率。
自動(dòng)化測(cè)試工具采用圖形化界面,操作容易掌握,對(duì)測(cè)試人員的技術(shù)要求不高?!颁浿?回放”的方法操作簡(jiǎn)單容易掌握,但是并不能實(shí)現(xiàn)有效的、長(zhǎng)期的自動(dòng)化測(cè)試,要想根據(jù)被測(cè)系統(tǒng)的特點(diǎn)來(lái)創(chuàng)建有效的自動(dòng)化測(cè)試腳本,測(cè)試人員必須能夠熟練掌握腳本語(yǔ)言,可以對(duì)腳本進(jìn)行編輯和優(yōu)化,最理想的測(cè)試人員是既有編程經(jīng)驗(yàn),又有測(cè)試經(jīng)驗(yàn)。測(cè)試過(guò)程中,測(cè)試人員要對(duì)測(cè)試腳本庫(kù)中的腳本實(shí)時(shí)進(jìn)行維護(hù)。
3.不適合自動(dòng)化測(cè)試的情況
軟件的自動(dòng)化測(cè)試技術(shù)雖然具有較好的可重復(fù)性、高效率等優(yōu)點(diǎn),但是并不適合測(cè)試所有類型的軟件產(chǎn)品。以下情況不適合采用自動(dòng)化測(cè)試方法。
定制型軟件項(xiàng)目:有些項(xiàng)目是根據(jù)客戶要求定制的,其維護(hù)階段是由客戶自己承擔(dān)的,而且有些定制型項(xiàng)目采用的開發(fā)語(yǔ)言、運(yùn)行環(huán)境也是客戶方特別要求的,這就使得公司里對(duì)這個(gè)項(xiàng)目所積累的測(cè)試信息很少,所以這樣的項(xiàng)目不適合做自動(dòng)化測(cè)試。
周期很短的項(xiàng)目:如果項(xiàng)目的開發(fā)周期短,那么測(cè)試周期就短,就不值得花費(fèi)精力去投資自動(dòng)化測(cè)試,即使有足夠的時(shí)間和資源搭建好測(cè)試環(huán)境,建立好測(cè)試腳本,但是不能得到充分的重復(fù)利用,也是不可取的。
業(yè)務(wù)規(guī)則復(fù)雜的軟件產(chǎn)品:如果被測(cè)軟件系統(tǒng)具有復(fù)雜的業(yè)務(wù)規(guī)則,有很多邏輯關(guān)系、運(yùn)算關(guān)系,那么就必須由人來(lái)參與,工具就很難實(shí)現(xiàn)測(cè)試。
易用性、美觀性和聲音等方面的測(cè)試:與人的感受、感官和體驗(yàn)有關(guān)的測(cè)試,包括系統(tǒng)界面的美觀性、聲音的效果、系統(tǒng)的易用性的測(cè)試只能由人來(lái)實(shí)現(xiàn),機(jī)器是無(wú)法完成的。
很少運(yùn)行的軟件系統(tǒng):采用自動(dòng)化的測(cè)試技術(shù)就是讓軟件不厭其煩地反復(fù)運(yùn)行,以此來(lái)提高測(cè)試效率,很少運(yùn)行的軟件使用自動(dòng)化測(cè)試就是一種浪費(fèi)。
4.結(jié)語(yǔ)
本文從軟件測(cè)試是提高軟件質(zhì)量的重要手段談起,重點(diǎn)討論了軟件的自動(dòng)化測(cè)試的不同方法的特點(diǎn)和實(shí)現(xiàn)原理,以及人們?cè)诓捎米詣?dòng)化測(cè)試過(guò)程中存在的誤區(qū),并且對(duì)不適合采用自動(dòng)化測(cè)試的情況進(jìn)行了分析,可以為從事軟件測(cè)試工作的人員提供參照。