1. 傳統(tǒng)軟件測試過程中的問題
測試在所有的軟件開發(fā)過程中都是重要的部分。在軟件開發(fā)過程中,一方面要求我們通過測試活動(dòng)驗(yàn)證所開發(fā)的軟件在功能上滿足軟件需求中描述的每一條特性,性能上滿足客戶要求的負(fù)載壓力和相應(yīng)的響應(yīng)時(shí)間、吞吐量要求;另一方面,面向市場和客戶,開發(fā)團(tuán)隊(duì)還要滿足在預(yù)算范圍內(nèi)盡快發(fā)布軟件的要求。
傳統(tǒng)的軟件測試流程一般是先在軟件開發(fā)過程中進(jìn)行少量的單元測試,然后在整個(gè)軟件開發(fā)結(jié)束階段,集中進(jìn)行大量的測試,包括功能和性能的集成測試和系統(tǒng)測試。隨著開發(fā)的軟件項(xiàng)目越來越復(fù)雜,傳統(tǒng)的軟件測試流程不可避免地給我們的工作帶來以下問題:
問題一:項(xiàng)目進(jìn)度難于控制,項(xiàng)目管理難度加大
大量的軟件錯(cuò)誤往往只有到了項(xiàng)目后期系統(tǒng)測試時(shí)才能夠被發(fā)現(xiàn),解決問題所花的時(shí)間很難預(yù)料,經(jīng)常導(dǎo)致項(xiàng)目進(jìn)度無法控制,同時(shí)在整個(gè)軟件開發(fā)過程中,項(xiàng)目管理人員缺乏對(duì)軟件質(zhì)量狀況的了解和控制,加大了項(xiàng)目管理難度。
問題二:對(duì)于項(xiàng)目風(fēng)險(xiǎn)的控制能力較弱
項(xiàng)目風(fēng)險(xiǎn)在項(xiàng)目開發(fā)較晚的時(shí)候才能夠真正降低。往往是經(jīng)過系統(tǒng)測試之后,才真正確定該設(shè)計(jì)是否能夠滿足系統(tǒng)功能、性能和可靠性方面的需求。
問題三:軟件項(xiàng)目開發(fā)費(fèi)用超出預(yù)算
在整個(gè)軟件開發(fā)周期中,錯(cuò)誤發(fā)現(xiàn)的越晚,單位錯(cuò)誤修復(fù)成本越高,如圖二所示,錯(cuò)誤的延遲解決必然導(dǎo)致整個(gè)項(xiàng)目成本的急劇增加。
2. 采用測試佳成功經(jīng)驗(yàn)解決傳統(tǒng)測試問題
這里有三個(gè)佳成功經(jīng)驗(yàn)是:盡早測試、連續(xù)測試、自動(dòng)化測試,并在此基礎(chǔ)上提供了完整的軟件測試流程和一整套的軟件自動(dòng)化測試工具,使我們終能夠做到:一個(gè)測試團(tuán)隊(duì),基于一套完整的軟件測試流程,使用一套完整的自動(dòng)化軟件測試工具,完成全方位的軟件質(zhì)量驗(yàn)證。
2.1 成功經(jīng)驗(yàn)一:盡早測試
所謂盡早測試是指在整個(gè)軟件開發(fā)生命周期中通過各種軟件工程技術(shù)盡量早的完成各種軟件測試任務(wù)的一種思想。IBM Rational主要在以下三個(gè)方面為我們提供的盡早測試的軟件工程技術(shù):
首先,軟件的整個(gè)測試生命周期是與軟件的開發(fā)生命周期基本平齊的過程,如圖三所示,即當(dāng)需求分析基本明確后我們應(yīng)該基于需求分析的結(jié)果和整個(gè)項(xiàng)目計(jì)劃來進(jìn)行軟件的測試計(jì)劃;伴隨著分析設(shè)計(jì)過程同時(shí)應(yīng)該完成測試用例的設(shè)計(jì);當(dāng)軟件的第一個(gè)發(fā)布出來后,測試人員要馬上基于它進(jìn)行測試腳本的實(shí)現(xiàn),并基于測試計(jì)劃中的測試目的執(zhí)行測試用例,對(duì)測試結(jié)果進(jìn)行評(píng)估報(bào)告。這樣,我們可以通過各種測試指標(biāo)實(shí)時(shí)監(jiān)控項(xiàng)目質(zhì)量狀況,提高對(duì)整個(gè)項(xiàng)目的控制和管理能力。
其次,通過迭代是軟件開發(fā)把原來的整個(gè)軟件開發(fā)生命周期分成多個(gè)迭代周期,在每個(gè)迭代周期都進(jìn)行測試,這樣在很大程度上提前了軟件系統(tǒng)測試發(fā)生的時(shí)間,這可以在很大程度上降低項(xiàng)目風(fēng)險(xiǎn)和項(xiàng)目開發(fā)成本。
后,盡早測試成功經(jīng)驗(yàn)還體現(xiàn)在它擴(kuò)展了傳統(tǒng)軟件測試階段從單元測試、集成測試到系統(tǒng)測試、驗(yàn)收測試的劃分,將整個(gè)軟件的測試按階段劃分成開發(fā)員測試和系統(tǒng)測試兩個(gè)階段,如圖四所示,它把軟件的測試責(zé)無旁貸地?cái)U(kuò)展到整個(gè)開發(fā)人員的工作過程。通過提前測試發(fā)生的時(shí)間來盡早地提高軟件質(zhì)量、降低軟件測試成本。
2.2 成功經(jīng)驗(yàn)二:連續(xù)測試
測試成功經(jīng)驗(yàn)連續(xù)測試是從迭代式軟件開發(fā)模式得來。在迭代化的方法中,我們將整個(gè)項(xiàng)目的開發(fā)目標(biāo)劃分成為一些更易于完成和達(dá)到的階段性小目標(biāo),這些小目標(biāo)都有一個(gè)定義明確的階段性評(píng)估標(biāo)準(zhǔn)。迭代是為了完成一定的階段性目標(biāo)而從事的一系列開發(fā)活動(dòng),在每個(gè)迭代開始前都要根據(jù)項(xiàng)目當(dāng)前的狀態(tài)和所要達(dá)到的階段性目標(biāo)制定迭代計(jì)劃,而且每個(gè)迭代中都包括需求、設(shè)計(jì)、編碼、集成、測試等一系列的開發(fā)活動(dòng),都會(huì)增量式集成一些新的系統(tǒng)功能。通過每次迭代,我們都產(chǎn)生一個(gè)可運(yùn)行的系統(tǒng),通過對(duì)于這個(gè)可運(yùn)行系統(tǒng)的測試來評(píng)估該次迭代有沒有達(dá)到預(yù)定的迭代目標(biāo),并以此為依據(jù)來制定下一次迭代的目標(biāo)。由此可見,在迭代式軟件開發(fā)的每個(gè)迭代周期我們都會(huì)進(jìn)行軟件測試活動(dòng),整個(gè)軟件測試的完成是通過每個(gè)迭代周期不斷增量測試和回歸測試實(shí)現(xiàn)的。 采用連續(xù)測試的軟件成功測試經(jīng)驗(yàn),不但能夠持續(xù)的提高軟件質(zhì)量、監(jiān)控質(zhì)量狀態(tài),同時(shí)也使系統(tǒng)測試的盡早實(shí)現(xiàn)成為可能。從而有效的控制開發(fā)風(fēng)險(xiǎn)、減低測試成本和保證項(xiàng)目進(jìn)度。
2.3 成功經(jīng)驗(yàn)三:自動(dòng)化測試
在整個(gè)軟件的測試過程中要想實(shí)現(xiàn)盡早測試、連續(xù)測試,可以說完善的測試流程是前提,自動(dòng)化測試工具是保證。自動(dòng)化測試成功經(jīng)驗(yàn)主要是指利用軟件測試工具提供完整的軟件測試流程的支持和各種測試的自動(dòng)化實(shí)現(xiàn)。