配套課件-軟件測(cè)試及其案例分析_第1頁(yè)
配套課件-軟件測(cè)試及其案例分析_第2頁(yè)
配套課件-軟件測(cè)試及其案例分析_第3頁(yè)
配套課件-軟件測(cè)試及其案例分析_第4頁(yè)
配套課件-軟件測(cè)試及其案例分析_第5頁(yè)
已閱讀5頁(yè),還剩1786頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一章軟件測(cè)試基礎(chǔ)1.1軟件測(cè)試的背景和概念 1.2軟件測(cè)試認(rèn)識(shí)誤區(qū)1.3軟件測(cè)試的對(duì)象、目標(biāo)、目的和意義1.4軟件測(cè)試的特點(diǎn)1.5軟件測(cè)試的原則第一章軟件測(cè)試基礎(chǔ)1.6軟件測(cè)試性的定義和認(rèn)識(shí)1.7軟件測(cè)試人員的素質(zhì)和職責(zé)1.8軟件測(cè)試的執(zhí)行者1.9軟件測(cè)試職業(yè)的發(fā)展前景本章小結(jié)軟件測(cè)試是IT產(chǎn)業(yè)的一個(gè)重要領(lǐng)域,近年來(lái)進(jìn)入了飛速發(fā)展階段,并為IT經(jīng)濟(jì)做出了巨大貢獻(xiàn)。軟件測(cè)試是保證軟件質(zhì)量的關(guān)鍵步驟,是對(duì)軟件規(guī)格說(shuō)明、設(shè)計(jì)和編碼的最后復(fù)審。本章給出了軟件測(cè)試和軟件測(cè)試性的不同定義,各種定義在表達(dá)形式、表述內(nèi)容、適用范圍上存在著一些差異,但可以使人們對(duì)軟件測(cè)試和軟件測(cè)試性概念有更深入的了解,增強(qiáng)人們對(duì)軟件測(cè)試的重視程度。

1.軟件測(cè)試的背景

隨著現(xiàn)代信息技術(shù)和大規(guī)模復(fù)雜數(shù)據(jù)挖掘技術(shù)的發(fā)展,計(jì)算機(jī)的應(yīng)用已經(jīng)滲透到社會(huì)生活的各個(gè)方面和科學(xué)技術(shù)的各個(gè)領(lǐng)域。目前,所有計(jì)算機(jī)應(yīng)用領(lǐng)域都對(duì)軟件質(zhì)量提出了更高的全方位的要求,包括功能、性能、靈活性、穩(wěn)定性、可靠性以及安全性等。1.1軟件測(cè)試的背景和概念一些關(guān)鍵領(lǐng)域如航空航天、醫(yī)療、核能、通信、交通、金融、商務(wù)等對(duì)軟件可靠性和安全性都有很高的要求,在這些領(lǐng)域中,軟件的一個(gè)小小錯(cuò)誤可能造成很大甚至致命性的損失。如1963年美國(guó)的首次金星探測(cè)計(jì)劃就因?yàn)榘蜒h(huán)“DO5I=1,3”誤寫(xiě)為“DO5I=1.3”,這樣一個(gè)小小的逗號(hào)錯(cuò)誤釀成發(fā)射失敗,導(dǎo)致?lián)p失達(dá)上千萬(wàn)美元的事故。實(shí)際上,由于軟件錯(cuò)誤導(dǎo)致系統(tǒng)的失效,釀成重大損失的事例不勝枚舉。因此,在軟件投入市場(chǎng)前對(duì)軟件進(jìn)行軟件測(cè)試是很有必要的。20世紀(jì)70年代,美國(guó)由于缺乏軟件測(cè)試,軟件項(xiàng)目的死亡率超過(guò)70%,而且90%以上做出來(lái)的項(xiàng)目在時(shí)間和成本上超出預(yù)算。與其他產(chǎn)品出現(xiàn)質(zhì)量問(wèn)題一樣,軟件也不可避免地會(huì)出現(xiàn)各種漏洞或Bug(錯(cuò)誤、缺陷)。如果軟件中的Bug太多,可能會(huì)導(dǎo)致電腦頻繁“死機(jī)”,影響用戶的正常使用。如果軟件測(cè)試不充分,那么這些問(wèn)題會(huì)潛伏在軟件中,等到用戶發(fā)現(xiàn)以后,再由開(kāi)發(fā)人員進(jìn)行維護(hù),改正錯(cuò)誤的費(fèi)用一般是開(kāi)發(fā)階段的40倍到60倍。因此,為了保證軟件的各項(xiàng)功能正常,就需要在開(kāi)發(fā)過(guò)程中不斷地對(duì)軟件進(jìn)行檢驗(yàn)和測(cè)試。軟件測(cè)試是軟件質(zhì)量保證的重要手段,據(jù)研究機(jī)構(gòu)統(tǒng)計(jì)分析表明,國(guó)外軟件開(kāi)發(fā)機(jī)構(gòu)40%的工作量花費(fèi)在軟件測(cè)試上,軟件測(cè)試費(fèi)用占軟件開(kāi)發(fā)總費(fèi)用的30%~50%。對(duì)于一些要求可靠性高、安全性高的軟件,軟件測(cè)試費(fèi)用可能相當(dāng)于整個(gè)軟件項(xiàng)目開(kāi)發(fā)總費(fèi)用的3~5倍。由此可見(jiàn),要成功開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品,必須重視并加強(qiáng)軟件測(cè)試工作。

2.軟件測(cè)試的概念

在不同的時(shí)期,人們對(duì)軟件測(cè)試的認(rèn)識(shí)也不同,其發(fā)展大致經(jīng)歷了四個(gè)階段:

第一階段,軟件測(cè)試就是“程序調(diào)試”。在這個(gè)時(shí)期,軟件規(guī)模小、復(fù)雜程度低,軟件測(cè)試的含義比較狹窄,開(kāi)發(fā)人員將軟件測(cè)試等同于“程序調(diào)試”,目的是糾正軟件中已經(jīng)知道的故障,通常由開(kāi)發(fā)人員自己完成這部分的工作。整個(gè)項(xiàng)目對(duì)軟件測(cè)試工作的規(guī)劃少、投入少,軟件測(cè)試工作介入比較晚,一般在程序代碼形成之后、產(chǎn)品已經(jīng)基本完成時(shí)才進(jìn)行軟件測(cè)試(即軟件調(diào)試)。第二階段,軟件測(cè)試就是“驗(yàn)證軟件系統(tǒng)的正確性”。直到1957年,軟件測(cè)試才被作為一種發(fā)現(xiàn)軟件缺陷或錯(cuò)誤、故障、問(wèn)題等(以后沒(méi)有特別說(shuō)明,都稱(chēng)之為Bug)的活動(dòng),開(kāi)始與“軟件調(diào)試”區(qū)別開(kāi)來(lái)。但是,對(duì)軟件測(cè)試目的的理解仍局限于“使自己確信產(chǎn)品能正常工作”。軟件測(cè)試始終在開(kāi)發(fā)活動(dòng)之后開(kāi)始,當(dāng)時(shí)缺乏有效的軟件測(cè)試方法,主要依靠“錯(cuò)誤推測(cè)”來(lái)尋找軟件中的Bug。因此,大量軟件交付后,仍存在很多Bug,質(zhì)量無(wú)法保證。到了20世紀(jì)70年代,人們才開(kāi)始認(rèn)真思考軟件開(kāi)發(fā)流程的問(wèn)題。盡管對(duì)“軟件測(cè)試”的真正含義還缺乏共識(shí),但已有一些軟件測(cè)試研究人員建議在軟件生命周期的開(kāi)始階段就根據(jù)需求制訂軟件測(cè)試計(jì)劃。

第三個(gè)階段,軟件測(cè)試就是“找出軟件存在的Bug”。Myers在他的論著《TheArtofSoftwareTesting》中認(rèn)為,軟件測(cè)試不應(yīng)該著眼于驗(yàn)證軟件是可以工作的,應(yīng)該首先認(rèn)定軟件是有Bug的,然后用逆向思維去發(fā)現(xiàn)盡可能多的Bug。1979年他給出了對(duì)軟件測(cè)試的認(rèn)識(shí):“軟件測(cè)試是為發(fā)現(xiàn)Bug而執(zhí)行一個(gè)程序或者系統(tǒng)的過(guò)程”。第四階段,軟件測(cè)試是“對(duì)軟件質(zhì)量的度量”。20世紀(jì)80年代初期,軟件和IT行業(yè)進(jìn)入了大發(fā)展,軟件趨向大型化、高復(fù)雜度,軟件的質(zhì)量越來(lái)越重要。人們將“質(zhì)量”的概念融入其中,軟件測(cè)試不再單純是一個(gè)發(fā)現(xiàn)Bug的過(guò)程,而是將軟件測(cè)試作為軟件質(zhì)量保證的主要職能,包含軟件質(zhì)量評(píng)價(jià)的內(nèi)容。90年代后期以來(lái)人們更加關(guān)注軟件有效的過(guò)程管理,認(rèn)識(shí)到軟件管理對(duì)于軟件測(cè)試的重要性,出現(xiàn)了各種軟件測(cè)試模型、軟件測(cè)試能力成熟度模型等。

3.專(zhuān)家對(duì)軟件測(cè)試的不同定義

下面給出不同時(shí)期一些專(zhuān)家對(duì)軟件測(cè)試的認(rèn)識(shí)或定義:

(1)

20世紀(jì)50年代中期,英國(guó)著名的計(jì)算機(jī)科學(xué)家圖靈認(rèn)為,軟件測(cè)試是軟件正確性確認(rèn)的實(shí)驗(yàn)方法的一種極端形式,通過(guò)軟件測(cè)試達(dá)到確認(rèn)程序正確性的目的。

(2)

1973年W.Hetzel指出,軟件測(cè)試是對(duì)程序或系統(tǒng)能否完成特定任務(wù)建立信心的過(guò)程。這種認(rèn)識(shí)在一段時(shí)間內(nèi)曾經(jīng)起過(guò)作用。

(3)

1983年BillHetzel指出,軟件測(cè)試指為評(píng)價(jià)一個(gè)程序或系統(tǒng)展開(kāi)的各種活動(dòng),是度量軟件質(zhì)量的一個(gè)過(guò)程。雖然上面對(duì)軟件測(cè)試的定義目前看來(lái)具有一定的局限性,規(guī)定的范圍似乎過(guò)于狹窄,但在當(dāng)時(shí)仍然具有指導(dǎo)意義。

(4)

1983年,IEEE在軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)中提出的軟件測(cè)試文檔標(biāo)準(zhǔn)(IEEEStandardforSoftwareTestDocument)對(duì)軟件測(cè)試定義:使用人工或自動(dòng)手段來(lái)運(yùn)行或測(cè)定某個(gè)系統(tǒng)或系統(tǒng)部件的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。在1990年頒布的軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)集中沿用了這一概念。這一概念非常明確地認(rèn)為軟件測(cè)試以檢驗(yàn)是否滿足用戶需求為目標(biāo)。該定義包含兩方面含義:①是否滿足規(guī)定的需求;②是否有差別。如果有差別,說(shuō)明設(shè)計(jì)或?qū)崿F(xiàn)中存在故障,自然不滿足規(guī)定的需求。因此,這一定義非常明確地提出了軟件測(cè)試是以檢驗(yàn)軟件是否滿足需求為目標(biāo)。

(5)1998年,Brown從以下幾個(gè)不同的方面解釋軟件測(cè)試:①軟件測(cè)試是執(zhí)行或模擬一個(gè)系統(tǒng)或一個(gè)程序的操作;②軟件測(cè)試是為了確認(rèn)軟件是按照它所要求的方式執(zhí)行,而不會(huì)執(zhí)行不被希望的操作;③軟件測(cè)試是帶著發(fā)現(xiàn)Bug的意圖來(lái)分析程序;④軟件測(cè)試是度量程序的功能和質(zhì)量;⑤軟件測(cè)試是評(píng)價(jià)程序和項(xiàng)目工作產(chǎn)品的屬性和能力,并且評(píng)估是否獲得了期望和可接受的結(jié)果。

4.當(dāng)代學(xué)者對(duì)軟件測(cè)試的不同定義

下面列舉出當(dāng)前一些學(xué)者從不同的角度對(duì)軟件測(cè)試的定義。

(1)廣義上講,軟件測(cè)試是指在產(chǎn)品生存周期內(nèi)對(duì)產(chǎn)品質(zhì)量的所有的檢查、評(píng)審和確認(rèn)活動(dòng),如設(shè)計(jì)評(píng)審、系統(tǒng)軟件測(cè)試。

(2)狹義上講,軟件測(cè)試是對(duì)產(chǎn)品質(zhì)量的檢驗(yàn)和評(píng)價(jià)。它一方面檢查產(chǎn)品質(zhì)量中存在的質(zhì)量問(wèn)題,同時(shí)對(duì)產(chǎn)品質(zhì)量進(jìn)行客觀的評(píng)價(jià)。

(3)軟件測(cè)試是根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批軟件測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期結(jié)果的集合),并利用這些軟件測(cè)試用例去執(zhí)行程序,以發(fā)現(xiàn)軟件Bug的過(guò)程。該定義強(qiáng)調(diào)尋找Bug是軟件測(cè)試的目的。

(4)軟件測(cè)試是為了發(fā)現(xiàn)Bug而執(zhí)行程序的過(guò)程。

(5)軟件測(cè)試是一種軟件質(zhì)量保證活動(dòng),其動(dòng)機(jī)是通過(guò)一些經(jīng)濟(jì)有效的方法,發(fā)現(xiàn)軟件中存在的Bug,從而保證軟件質(zhì)量。

(6)軟件測(cè)試

=

驗(yàn)證

+

確認(rèn)。驗(yàn)證和確認(rèn)是互補(bǔ)的,發(fā)現(xiàn)Bug的效果會(huì)由于它們中的一個(gè)或另一個(gè)沒(méi)有完成而受到損失,它們是為捕獲不同類(lèi)型問(wèn)題而設(shè)計(jì)的過(guò)濾器。多年來(lái),軟件測(cè)試一直主要針對(duì)確認(rèn),而且這種情況還將繼續(xù),這并不是說(shuō)應(yīng)該停止進(jìn)行確認(rèn),而是應(yīng)更清楚怎么去做,并怎樣結(jié)合驗(yàn)證去做,必須保證在適當(dāng)?shù)臅r(shí)間對(duì)適當(dāng)?shù)漠a(chǎn)品進(jìn)行驗(yàn)證和確認(rèn)。

(7)從使用軟件測(cè)試工具的角度定義:利用軟件測(cè)試工具按照軟件測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫(xiě)不同的軟件測(cè)試工具,設(shè)計(jì)和維護(hù)軟件測(cè)試系統(tǒng),對(duì)軟件測(cè)試方案可能出現(xiàn)的Bug進(jìn)行分析和評(píng)估。執(zhí)行軟件測(cè)試用例后,需要跟蹤Bug,以確保開(kāi)發(fā)的產(chǎn)品適合需求。

(8)從軟件測(cè)試過(guò)程定義:在受控制的條件下對(duì)系統(tǒng)或應(yīng)用程序進(jìn)行操作并評(píng)價(jià)操作結(jié)果的過(guò)程,所謂控制條件應(yīng)包括正常條件與非正常條件。軟件測(cè)試過(guò)程中應(yīng)該故意地促使Bug的發(fā)生,也就是結(jié)果在不該出現(xiàn)時(shí)出現(xiàn)或者在應(yīng)該出現(xiàn)時(shí)沒(méi)有出現(xiàn)。從本質(zhì)上說(shuō),軟件測(cè)試是“探測(cè)”,在“探測(cè)”中發(fā)現(xiàn)軟件的Bug。

(9)也有學(xué)者從軟件測(cè)試的不同階段定義軟件測(cè)試(見(jiàn)圖1.1)。

由圖1.1看出,軟件測(cè)試歷經(jīng)了三個(gè)主要階段:第一階段,軟件測(cè)試是尋找產(chǎn)品中的Bug。Bug的定義很廣泛,在軟件使用過(guò)程中所出現(xiàn)的任何一個(gè)可疑問(wèn)題,或者導(dǎo)致軟件不能符合設(shè)計(jì)要求或滿足消費(fèi)者需要的問(wèn)題都是Bug,即使這個(gè)Bug在實(shí)踐中是可行的。

第二階段,軟件測(cè)試是對(duì)軟件質(zhì)量的度量。

第三階段,軟件測(cè)試是為了度量和提高被測(cè)試軟件的質(zhì)量,對(duì)軟件測(cè)試進(jìn)行設(shè)計(jì)、使用和維護(hù)的過(guò)程。軟件測(cè)試過(guò)程中所使用的軟件測(cè)試案例、軟件測(cè)試腳本等都稱(chēng)為軟件測(cè)試件,使用軟件測(cè)試件去度量和提高被測(cè)試軟件的質(zhì)量。

圖1.1軟件測(cè)試的不同階段目前,在中國(guó)大部分軟件企業(yè),尤其是中、小型的軟件企業(yè),軟件測(cè)試主要用來(lái)尋找軟件中的Bug,所以軟件測(cè)試基本停留在第一階段。一些公司可能使用軟件測(cè)試案例和軟件測(cè)試腳本等,但并不完全依據(jù)軟件測(cè)試案例進(jìn)行軟件測(cè)試,目前軟件測(cè)試案例等工作更多地成為一種形式上的產(chǎn)物,所以實(shí)際的軟件測(cè)試工作多處于第一、二階段之間。

(10)微軟公司對(duì)軟件測(cè)試的認(rèn)識(shí)。微軟公司認(rèn)為軟件測(cè)試是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié),直接影響著軟件的質(zhì)量評(píng)估。軟件測(cè)試是微軟公司的一項(xiàng)非常重要的工作。該公司對(duì)軟件測(cè)試的重視表現(xiàn)在工程開(kāi)發(fā)隊(duì)伍的人員構(gòu)成上,他們把軟件測(cè)試人員分成兩種職位:

①軟件測(cè)試組的軟件開(kāi)發(fā)工程師。實(shí)際上他們屬于開(kāi)發(fā)人員,具備編寫(xiě)代碼的能力和開(kāi)發(fā)工具軟件的經(jīng)驗(yàn),側(cè)重于開(kāi)發(fā)自動(dòng)化軟件測(cè)試工具和軟件測(cè)試腳本,實(shí)現(xiàn)軟件測(cè)試的自動(dòng)化。

②軟件測(cè)試工程師。他們具體負(fù)責(zé)測(cè)試產(chǎn)品,主要完成一些手工軟件測(cè)試以及安裝配置軟件測(cè)試。微軟的項(xiàng)目經(jīng)理、軟件開(kāi)發(fā)人員和軟件測(cè)試人員的比例基本是1∶3∶6至1∶4∶24,可以看出開(kāi)發(fā)人員與軟件測(cè)試人員的比例是1∶2至1∶6之間。微軟對(duì)于軟件測(cè)試的重視還表現(xiàn)在最后產(chǎn)品要發(fā)布時(shí),此產(chǎn)品的所有相關(guān)部門(mén)都必須簽字,而軟件測(cè)試人員則具有絕對(duì)的否決權(quán)。

軟件測(cè)試貫穿于軟件生命周期的全過(guò)程,軟件交付后,軟件測(cè)試只是從軟件測(cè)試人員轉(zhuǎn)移到用戶,用戶每次使用程序都是一次軟件測(cè)試。軟件測(cè)試是一門(mén)技術(shù),是一個(gè)從實(shí)踐到理論再由理論到實(shí)踐循環(huán)往復(fù)的過(guò)程,是一門(mén)包括編程方法、模型設(shè)計(jì)、統(tǒng)計(jì)方法、預(yù)測(cè)等多領(lǐng)域的實(shí)踐性很強(qiáng)的綜合學(xué)科。不同系統(tǒng)、不同環(huán)境、不同對(duì)象所關(guān)心的側(cè)重點(diǎn)不同,采用的軟件測(cè)試方法自然隨著具體系統(tǒng)而設(shè)定。從上面敘述可以看出,不同時(shí)代、不同的人或從不同的角度對(duì)于軟件測(cè)試的認(rèn)識(shí)和定義不同。但不論從哪個(gè)角度或哪種觀點(diǎn)出發(fā),都可以認(rèn)為軟件測(cè)試是在一個(gè)可控的環(huán)境中分析或執(zhí)行程序(或系統(tǒng))的過(guò)程,其根本目的是以盡可能少的時(shí)間和人力發(fā)現(xiàn)并改正軟件中潛在的各種Bug,提高軟件的質(zhì)量。

人們對(duì)軟件測(cè)試的認(rèn)識(shí)很多,但也存在不少的誤解,這些誤解不但不利于軟件測(cè)試的發(fā)展,而且在實(shí)際中可能會(huì)造成一定的經(jīng)濟(jì)損失。較常見(jiàn)的誤解如下。

(1)軟件測(cè)試是相對(duì)簡(jiǎn)單的工作。實(shí)際上并非如此,要真正做好軟件測(cè)試工作并非易事,軟件測(cè)試需要很多相關(guān)技術(shù)和工具。1.2軟件測(cè)試認(rèn)識(shí)誤區(qū)

(2)軟件測(cè)試比編寫(xiě)程序容易。

(3)軟件測(cè)試就是程序測(cè)試,軟件測(cè)試發(fā)現(xiàn)了Bug就說(shuō)明程序員所編寫(xiě)的程序有問(wèn)題。實(shí)際上,軟件測(cè)試的對(duì)象不僅僅是軟件代碼,還包括軟件需求文檔和設(shè)計(jì)文檔等。

(4)軟件測(cè)試是為了證明程序的正確性或?yàn)榱舜_保軟件不存在Bug。事實(shí)上,要證明程序的正確性是不可能的,因?yàn)橐粋€(gè)大型的集成化的軟件系統(tǒng)測(cè)試時(shí)不可能遍歷所有的路徑,即使遍歷了所有的路徑,Bug也仍有可能隱藏。即使一個(gè)完成兩個(gè)兩位數(shù)相加的小程序,其有效的輸入也有39601個(gè)不同數(shù)對(duì)。所以一般情況下,人們不可能測(cè)試程序中所有的輸入數(shù)據(jù)和執(zhí)行所有的路徑。

(5)軟件測(cè)試是事后之事,即認(rèn)為應(yīng)在軟件開(kāi)發(fā)完成后進(jìn)行軟件測(cè)試。這個(gè)誤解是因?yàn)椴涣私廛浖y(cè)試周期。

(6)軟件測(cè)試等于程序調(diào)試。軟件測(cè)試并不等于程序調(diào)試。軟件測(cè)試是發(fā)現(xiàn)漏洞的過(guò)程,調(diào)試是跟蹤漏洞產(chǎn)生的根源并進(jìn)行修復(fù)的過(guò)程。

(7)測(cè)試后的軟件沒(méi)有Bug。軟件需要不斷地進(jìn)行測(cè)試,并不是經(jīng)過(guò)了各項(xiàng)軟件測(cè)試后,其所有的Bug就能暴露出來(lái)。

(8)所有軟件Bug都要改正。在軟件測(cè)試中,有一種令人沮喪的情況是,即使拼盡全力,也不能使所有的軟件Bug被修復(fù)或改正。事實(shí)上,不是所有的軟件Bug都需要進(jìn)行修復(fù)或改正。

(9)自動(dòng)化軟件測(cè)試工具完全可以代替手工軟件測(cè)試。分析這些誤解產(chǎn)生的原因,主要有以下幾點(diǎn):

(1)國(guó)內(nèi)軟件企業(yè)多為中小型公司。這些企業(yè)的規(guī)模不足以成立專(zhuān)門(mén)的軟件測(cè)試部門(mén),無(wú)法達(dá)到軟件開(kāi)發(fā)人員與軟件測(cè)試人員的比例為1∶1的國(guó)際標(biāo)準(zhǔn)。

(2)企業(yè)所承接的項(xiàng)目規(guī)模比較小。國(guó)內(nèi)企業(yè)在投標(biāo)時(shí)為了中標(biāo),把費(fèi)用壓得很低,沒(méi)有考慮足夠的資金投入軟件測(cè)試階段。

(3)企業(yè)為爭(zhēng)奪項(xiàng)目,在承接項(xiàng)目時(shí)承諾在用戶要求的時(shí)間內(nèi)完成,根本沒(méi)有為軟件測(cè)試階段安排足夠的時(shí)間。

(4)受傳統(tǒng)軟件開(kāi)發(fā)思維的影響。一些公司認(rèn)為軟件開(kāi)發(fā)最重要的是實(shí)現(xiàn)項(xiàng)目需求的所有功能,因而輕視了軟件測(cè)試部分的作用,不愿意投入過(guò)多的財(cái)力和人力在這個(gè)看不見(jiàn)很多效果的測(cè)試階段。

以上這些誤解阻礙了國(guó)內(nèi)軟件測(cè)試的發(fā)展。對(duì)軟件企業(yè)來(lái)說(shuō),不僅要提高對(duì)軟件測(cè)試的認(rèn)識(shí),同時(shí)要建立獨(dú)立的軟件測(cè)試部門(mén),采用先進(jìn)的測(cè)試技術(shù),充分運(yùn)用測(cè)試工具,不斷改善軟件開(kāi)發(fā)流程,建立完善的軟件質(zhì)量保證的管理體系。只有這樣,才有可能達(dá)到軟件開(kāi)發(fā)的預(yù)期目標(biāo),降低軟件開(kāi)發(fā)的成本和風(fēng)險(xiǎn),提高軟件開(kāi)發(fā)的效率,確保及時(shí)地發(fā)布高質(zhì)量的軟件產(chǎn)品。

1.軟件測(cè)試的對(duì)象

在整個(gè)軟件生命周期的不同階段,軟件都有相應(yīng)的輸出結(jié)果,其中包括軟件需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)及程序編碼等各階段所產(chǎn)生的文檔和源程序,所有這些輸出結(jié)果都是軟件測(cè)試的對(duì)象。1.3軟件測(cè)試的對(duì)象、目標(biāo)、目的和意義

2.軟件測(cè)試的目標(biāo)

具體地講,軟件測(cè)試一般要達(dá)到以下目標(biāo):

(1)確保軟件產(chǎn)品完成了它所承諾或公布的功能,并且所有用戶可以訪問(wèn)到的功能都有明確的書(shū)面說(shuō)明。

(2)確保軟件產(chǎn)品滿足性能和效率的要求。

(3)確保軟件產(chǎn)品是健壯的和適應(yīng)用戶環(huán)境的。健壯性即穩(wěn)定性,是產(chǎn)品質(zhì)量的基本要求。

3.軟件測(cè)試的目的和意義

軟件測(cè)試的目的決定了如何去組織軟件測(cè)試。不同的機(jī)構(gòu)會(huì)有不同的軟件測(cè)試目的;相同的機(jī)構(gòu)也可能有不同的測(cè)試目的,即使同一區(qū)域測(cè)試也有不同層次測(cè)試。如果軟件測(cè)試的目的是為了盡可能多地找出Bug,那么軟件測(cè)試就應(yīng)該直接針對(duì)軟件比較復(fù)雜的部分或是以前出錯(cuò)比較多的部分;如果軟件測(cè)試目的是為了給最終用戶提供具有一定可信度的質(zhì)量評(píng)價(jià),那么軟件測(cè)試就應(yīng)該直接針對(duì)在實(shí)際應(yīng)用中會(huì)經(jīng)常用到的商業(yè)假設(shè)。基于不同的立場(chǎng),一般存在著兩種完全不同的測(cè)試目的。從用戶的角度出發(fā),普遍希望通過(guò)軟件測(cè)試暴露軟件中隱藏的Bug,以考慮是否可接受該產(chǎn)品;從軟件開(kāi)發(fā)者的角度出發(fā),則希望軟件測(cè)試成為表明產(chǎn)品中不存在Bug的過(guò)程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求,確立了人們對(duì)軟件質(zhì)量的信心。軟件測(cè)試的目的和意義可簡(jiǎn)單地歸納如下:

(1)測(cè)試是程序的執(zhí)行過(guò)程,目的在于發(fā)現(xiàn)Bug,但沒(méi)有發(fā)現(xiàn)Bug的軟件測(cè)試也是有價(jià)值的,完整的軟件測(cè)試是評(píng)定軟件質(zhì)量的一種方法。

(2)軟件測(cè)試并不僅是為了找出Bug。通過(guò)分析Bug產(chǎn)生的原因和產(chǎn)生趨勢(shì),可以幫助項(xiàng)目管理者發(fā)現(xiàn)當(dāng)前軟件開(kāi)發(fā)過(guò)程中的Bug,以便及時(shí)改進(jìn)。如果一個(gè)產(chǎn)品開(kāi)發(fā)完成之后發(fā)現(xiàn)很多Bug,說(shuō)明此軟件開(kāi)發(fā)過(guò)程很可能有Bug。

(3)確認(rèn)軟件的質(zhì)量。作為軟件測(cè)試人員,在軟件開(kāi)發(fā)過(guò)程中的任務(wù)就是尋找Bug、避免軟件開(kāi)發(fā)過(guò)程中的Bug、衡量軟件的品質(zhì)、關(guān)注用戶的需求等,而最終目標(biāo)是確保軟件的質(zhì)量。

(4)希望以最少的時(shí)間和人力,系統(tǒng)地找出軟件中潛在的各種Bug。如果人們成功地實(shí)施了軟件測(cè)試,就能夠發(fā)現(xiàn)軟件中的Bug。

(5)軟件測(cè)試的附帶收獲是,它能夠證明軟件的功能和性能與需求說(shuō)明相符合。

(6)軟件測(cè)試收集到的測(cè)試結(jié)果數(shù)據(jù)為軟件可靠性分析提供了依據(jù)。在軟件分析設(shè)計(jì)階段就介入軟件測(cè)試,可以發(fā)現(xiàn)早期的一些軟件設(shè)計(jì)方面的Bug和不足,降低項(xiàng)目的成本。只有充分的軟件測(cè)試才能保證軟件質(zhì)量,通過(guò)軟件測(cè)試可以盡可能早和盡可能多地發(fā)現(xiàn)軟件Bug,及時(shí)進(jìn)行修改和彌補(bǔ),由此提高軟件的質(zhì)量。實(shí)踐證明,軟件測(cè)試成本隨著產(chǎn)品逐步成形而增加。假如需求分析、設(shè)計(jì)階段的一些Bug沒(méi)有被發(fā)現(xiàn),等到編碼階段完成后,通過(guò)軟件測(cè)試發(fā)現(xiàn)這些Bug,而這些Bug只能由更改設(shè)計(jì)來(lái)修復(fù)的話,那么不論是軟件測(cè)試還是軟件開(kāi)發(fā)的成本無(wú)形中增大了幾倍,項(xiàng)目不能如期交付的風(fēng)險(xiǎn)會(huì)很大。

1.軟件測(cè)試的復(fù)雜性

(1)無(wú)法對(duì)程序進(jìn)行完全測(cè)試,原因如下:

測(cè)試所需要的輸入量太大;

軟件實(shí)現(xiàn)的途徑太多;

測(cè)試的輸出結(jié)果太多;

軟件規(guī)格說(shuō)明沒(méi)有一個(gè)客觀標(biāo)準(zhǔn)。1.4軟件測(cè)試的特點(diǎn)

(2)測(cè)試無(wú)法顯示潛在的軟件Bug。通過(guò)軟件測(cè)試只能報(bào)告軟件已被發(fā)現(xiàn)的Bug,無(wú)法報(bào)告隱藏的軟件Bug。

(3)不能修復(fù)所有的軟件Bug。我們能夠做到的是:要進(jìn)行正確的判斷、合理的取舍,根據(jù)風(fēng)險(xiǎn)分析決定哪些故障或Bug必須修復(fù),哪些可以不修復(fù)。

2.軟件測(cè)試的局限性

(1)軟件測(cè)試不如硬件板卡測(cè)試普遍。

(2)測(cè)試工作缺乏可度量的管理手段。

(3)軟件的功能性測(cè)試不夠完善,需要新的方法補(bǔ)充。

(4)嵌入式系統(tǒng)代碼量日益增多,測(cè)試難度增加。

(5)系統(tǒng)越復(fù)雜,測(cè)試越復(fù)雜,風(fēng)險(xiǎn)越大。

(6)軟件測(cè)試具有長(zhǎng)期性。軟件生命周期每一階段中都應(yīng)包含軟件測(cè)試,從而檢驗(yàn)本階段的成果是否接近預(yù)期的目標(biāo),以便盡可能早地發(fā)現(xiàn)Bug并加以修正。如果不在早期階段進(jìn)行軟件測(cè)試,Bug的延時(shí)擴(kuò)散常常會(huì)導(dǎo)致最后成品軟件測(cè)試的巨大困難。

(7)軟件測(cè)試不是事后之事。有效的自動(dòng)軟件測(cè)試強(qiáng)調(diào)應(yīng)該從軟件開(kāi)發(fā)生存周期一開(kāi)始就引入軟件測(cè)試。

(8)軟件測(cè)試出的“錯(cuò)誤(Bug)”具有特殊性。軟件測(cè)試后發(fā)現(xiàn)軟件系統(tǒng)中存在的Bug不同其他可以看見(jiàn)的Bug,具有十分隱蔽的特性。

(9)軟件測(cè)試與軟件設(shè)計(jì)具有同步性。在整個(gè)軟件開(kāi)發(fā)流程中,軟件測(cè)試不是到了某個(gè)階段才開(kāi)始做,或過(guò)了這個(gè)階段就結(jié)束的事情,而是穿插在整個(gè)開(kāi)發(fā)流程中,從需求分析到最后軟件成品的交付,每個(gè)步驟都存在軟件測(cè)試的工作。

(10)軟件測(cè)試工作的不完善性,即指測(cè)試后的軟件仍存在Bug。

(11)軟件測(cè)試的不完備性。無(wú)論從理論上還是從經(jīng)驗(yàn)上,人們都不可能發(fā)現(xiàn)軟件系統(tǒng)中所有的Bug。一個(gè)成功的、投放市場(chǎng)的軟件系統(tǒng)必定還存在著B(niǎo)ug,因此軟件測(cè)試必然有一定的局限。

(12)軟件測(cè)試容易受到心理影響。把程序測(cè)試定義為在程序中找出Bug的過(guò)程,就使軟件測(cè)試成了可以完成的任務(wù),從而克服了心理上存在的問(wèn)題。

3.軟件測(cè)試的特殊性

(1)獨(dú)立性。獨(dú)立性指軟件測(cè)試工作由在經(jīng)濟(jì)上和管理上獨(dú)立于開(kāi)發(fā)機(jī)構(gòu)的組織進(jìn)行。采用獨(dú)立軟件測(cè)試方式,無(wú)論在技術(shù)上還是管理上,對(duì)提高軟件測(cè)試的有效性都具有重要意義。經(jīng)濟(jì)上的獨(dú)立性使軟件測(cè)試有更充分的條件按軟件測(cè)試要求去完成。

(2)客觀性。對(duì)軟件測(cè)試和軟件中的Bug抱著客觀的態(tài)度,這種客觀的態(tài)度可以解決軟件測(cè)試中的心理學(xué)問(wèn)題,既能以揭露軟件中Bug的態(tài)度工作,也可以不受發(fā)現(xiàn)的Bug的影響。

(3)專(zhuān)業(yè)性。軟件測(cè)試作為一種專(zhuān)業(yè)工作,在長(zhǎng)期的工作過(guò)程中勢(shì)必能夠積累大量實(shí)踐經(jīng)驗(yàn),形成自己的專(zhuān)業(yè)知識(shí)。同時(shí)軟件測(cè)試也是技術(shù)含量很高的工作,需要由專(zhuān)業(yè)隊(duì)伍加以研究,并進(jìn)行工程實(shí)踐。專(zhuān)業(yè)化分工是提高軟件測(cè)試水平、保證軟件測(cè)試質(zhì)量、充分發(fā)揮軟件測(cè)試效應(yīng)的必然途徑。

(4)權(quán)威性。由于專(zhuān)業(yè)優(yōu)勢(shì),獨(dú)立軟件測(cè)試工作形成的測(cè)試結(jié)果更具信服力,而軟件測(cè)試結(jié)果常常與對(duì)軟件的質(zhì)量評(píng)價(jià)聯(lián)系在一起,專(zhuān)業(yè)化的獨(dú)立軟件測(cè)試機(jī)構(gòu)的評(píng)價(jià)更客觀、公正和具有權(quán)威性。

(5)持久性。完整的軟件測(cè)試工作應(yīng)該貫穿整個(gè)軟件生存周期,它有兩方面的含義:①軟件開(kāi)發(fā)不同階段都有軟件測(cè)試工作;②軟件測(cè)試工作的各個(gè)步驟分布在整個(gè)軟件生存周期中。

(6)資源保證性。獨(dú)立軟件測(cè)試機(jī)構(gòu)的主要任務(wù)是進(jìn)行獨(dú)立軟件測(cè)試工作,這使得軟件測(cè)試工作在經(jīng)費(fèi)、人力和計(jì)劃方面更有保證,不會(huì)因?yàn)殚_(kāi)發(fā)的壓力減少對(duì)軟件測(cè)試的投入,以及降低軟件測(cè)試的有效性。由此可以避免開(kāi)發(fā)單位側(cè)重軟件開(kāi)發(fā)而對(duì)軟件測(cè)試工作產(chǎn)生不利的影響。

4.軟件測(cè)試的可操作特性

(1)動(dòng)態(tài)性:軟件測(cè)試是在給出輸入值的基礎(chǔ)上進(jìn)行的動(dòng)態(tài)過(guò)程(這里不包括靜態(tài)分析)。

(2)有限性:軟件測(cè)試執(zhí)行的次數(shù)必須是有限的,而且軟件測(cè)試過(guò)程還必須具有可管理性,也就是說(shuō)軟件測(cè)試意味著要在有限的資源與潛在的、無(wú)限的軟件測(cè)試需求之間進(jìn)行平衡,這一對(duì)矛盾就是軟件測(cè)試技術(shù)要解決的兩個(gè)根本問(wèn)題:

制定相應(yīng)的軟件測(cè)試充分性判定準(zhǔn)則;●

制定相應(yīng)的軟件測(cè)試過(guò)程管理規(guī)范以考查軟件測(cè)試的效果。

(3)選擇性:軟件測(cè)試的關(guān)鍵問(wèn)題就是如何選擇有限的軟件測(cè)試用例。選擇不同的軟件測(cè)試用例集合會(huì)產(chǎn)生截然不同的軟件測(cè)試結(jié)果,在給定條件下,確定最合適的軟件測(cè)試用例選擇準(zhǔn)則是目前軟件測(cè)試技術(shù)研究的熱點(diǎn)問(wèn)題之一,也是能提高軟件測(cè)試效果的有效手段。

(4)預(yù)測(cè)性:應(yīng)該能夠判定程序執(zhí)行后的結(jié)果是否可接受。常用預(yù)示程序給出程序運(yùn)行的可能結(jié)果,但如何給出預(yù)示程序是軟件測(cè)試的難點(diǎn)之一。

軟件測(cè)試的基本原則是從用戶和開(kāi)發(fā)者的角度對(duì)產(chǎn)品進(jìn)行全面測(cè)試。

中國(guó)軟件評(píng)測(cè)中心的軟件測(cè)試原則就是從用戶和開(kāi)發(fā)者的角度出發(fā)進(jìn)行產(chǎn)品測(cè)試,通過(guò)軟件測(cè)試,為用戶提供放心的產(chǎn)品,并對(duì)優(yōu)秀的產(chǎn)品進(jìn)行認(rèn)證。

(1)應(yīng)當(dāng)把軟件測(cè)試貫穿到整個(gè)軟件開(kāi)發(fā)的全過(guò)程,而不應(yīng)該把軟件測(cè)試看做是其過(guò)程中的一個(gè)獨(dú)立階段。因?yàn)樵谲浖_(kāi)發(fā)的每一環(huán)節(jié)都有可能產(chǎn)生意想不到的Bug,其影響因素有很多,

1.5軟件測(cè)試的原則如軟件本身的抽象性和復(fù)雜性、軟件所涉及問(wèn)題的復(fù)雜性、軟件開(kāi)發(fā)各個(gè)階段工作的多樣性,以及各層次工作人員的協(xié)作關(guān)系等。所以要堅(jiān)持軟件開(kāi)發(fā)各階段的技術(shù)評(píng)審,把Bug清除在早期,從而減少成本,提高軟件質(zhì)量。

(2)程序設(shè)計(jì)單位不應(yīng)測(cè)試自己設(shè)計(jì)的程序。要程序設(shè)計(jì)組織者持客觀、公正的態(tài)度測(cè)試自己的程序是不現(xiàn)實(shí),因?yàn)槿绻谜_的觀點(diǎn)對(duì)待軟件測(cè)試,就不大可能按預(yù)定計(jì)劃完成軟件測(cè)試,也不大可能把耗費(fèi)的代價(jià)限制在要求的范圍以內(nèi)。

(3)充分注意回歸測(cè)試的關(guān)聯(lián)性。實(shí)際中,往往修改一個(gè)Bug可能會(huì)引起更多的Bug。軟件Bug修改后要進(jìn)行回歸測(cè)試,即用修改前測(cè)試過(guò)的測(cè)試用例進(jìn)行測(cè)試,再用新的測(cè)試用例進(jìn)行測(cè)試。

(4)充分注意軟件測(cè)試中的群集現(xiàn)象。一定要充分注意測(cè)試中出現(xiàn)的Bug群集現(xiàn)象,這與程序員的編程水平和習(xí)慣有很大的關(guān)系。若發(fā)現(xiàn)Bug數(shù)目較多,則可能殘存的Bug數(shù)目也較多,程序某部分中殘存Bug數(shù)可能與在該段程序中已發(fā)現(xiàn)的Bug數(shù)成正比,這種Bug出現(xiàn)的群集現(xiàn)象,已被許多程序測(cè)試實(shí)踐所證實(shí)。

(5)

Bug的Good-enough原則。軟件測(cè)試是相對(duì)的,不能進(jìn)行所有的測(cè)試,要根據(jù)人力物力合理安排測(cè)試,并選擇好測(cè)試用例、測(cè)試方法和策略及工具。對(duì)于相對(duì)復(fù)雜的產(chǎn)品或系統(tǒng)來(lái)說(shuō),零Bug是一種理想,Good-enough則是人們遵循的原則。Good-enough是Gerhart于1975年在研究軟件測(cè)試能否保證軟件的正確性時(shí)提出的原則。Good-enough原則就是一種權(quán)衡投入/產(chǎn)出比的原則:不充分的測(cè)試是不負(fù)責(zé)任的;相反的,過(guò)分的測(cè)試是資源的浪費(fèi),同樣也是一種不負(fù)責(zé)任的表現(xiàn)。一般情況下,在分析、設(shè)計(jì)、實(shí)現(xiàn)階段的復(fù)審和測(cè)試工作能夠發(fā)現(xiàn)和避免80%的Bug,而系統(tǒng)測(cè)試又能找出其余Bug中的80%,最后的20%的Bug可能只有在用戶大范圍、長(zhǎng)時(shí)間使用后才會(huì)暴露出來(lái)。因?yàn)檐浖y(cè)試只能夠保證盡可能多地發(fā)現(xiàn)Bug,無(wú)法保證能夠發(fā)現(xiàn)所有的Bug。

(6)制定嚴(yán)格的軟件測(cè)試計(jì)劃。軟件測(cè)試要以軟件需求規(guī)格說(shuō)明書(shū)為標(biāo)準(zhǔn)設(shè)計(jì)測(cè)試用例,并安排軟件測(cè)試時(shí)間,嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除軟件測(cè)試的隨意性,以避免發(fā)生疏漏或做重復(fù)無(wú)效的工作。

(7)要預(yù)先確定被測(cè)試軟件的測(cè)試結(jié)果。應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面、仔細(xì)地檢查,這一點(diǎn)常常被人們忽略而導(dǎo)致許多Bug被遺漏。

(8)對(duì)軟件測(cè)試Bug結(jié)果一定要有一個(gè)確認(rèn)過(guò)程。確認(rèn)Bug的有效性,一般由甲測(cè)試人員發(fā)現(xiàn)的Bug,一定要由乙測(cè)試人員來(lái)進(jìn)行確認(rèn)。如果發(fā)現(xiàn)嚴(yán)重的Bug,就要召開(kāi)評(píng)審會(huì)進(jìn)行討論和分析。

(9)妥善保存一切測(cè)試過(guò)程文檔。軟件測(cè)試的重現(xiàn)往往要靠測(cè)試文檔,測(cè)試用例作為測(cè)試報(bào)告,以后可以反復(fù)測(cè)試使用,重新驗(yàn)證程序是否有錯(cuò)。妥善保存一切測(cè)試過(guò)程文檔、測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,以備回歸測(cè)試和方便軟件維護(hù)。

在遵守以上原則的基礎(chǔ)上進(jìn)行軟件測(cè)試,盡量以最少的時(shí)間和人力找出軟件中的各種Bug,從而達(dá)到保證軟件質(zhì)量的目的。

軟件測(cè)試性度量就是度量軟件測(cè)試性大小,是軟件測(cè)試性分析和設(shè)計(jì)的依據(jù)。合適的軟件測(cè)試性度量是軟件測(cè)試性研究的基礎(chǔ),是順利進(jìn)行軟件測(cè)試性分析和設(shè)計(jì)的保證。通過(guò)軟件測(cè)試性度量,軟件測(cè)試人員能為軟件的不同部分分配不同的軟件測(cè)試資源以進(jìn)行更充分的測(cè)試,并能針對(duì)軟件測(cè)試性的薄弱環(huán)節(jié)采取措施,以改進(jìn)設(shè)計(jì);1.6軟件測(cè)試性的定義和認(rèn)識(shí)項(xiàng)目管理人員也能更全面地掌握軟件情況、決定軟件測(cè)試終止和軟件發(fā)布的時(shí)機(jī)。因此,人們有必要對(duì)軟件測(cè)試性度量進(jìn)行深入研究。

最常見(jiàn)的軟件測(cè)試性度量衍生自硬件、軟件測(cè)試,分別用于衡量程序測(cè)試執(zhí)行時(shí)的開(kāi)銷(xiāo)和程序的固有屬性。簡(jiǎn)單地說(shuō),軟件測(cè)試性是指軟件易于軟件測(cè)試和暴露Bug的能力。軟件測(cè)試性高的軟件不僅可以大幅節(jié)約軟件測(cè)試成本,同時(shí)可以保證軟件質(zhì)量。軟件測(cè)試性的集合表示如下:ST={Sen,Und,Con,Obv,TSC,Sim,Dec,App,Tr}。其中,ST

(SoftwareTestability)表示軟件測(cè)試性,Sen

(Sensitivity)表示敏感性,Und(Understandability)表示可理解性,Con

(Controllability)表示可控性,Obv

(Observability)表示可觀測(cè)性,TSC

(TestingSupportCapability)表示測(cè)試支持能力,Sim

(Simple)表示簡(jiǎn)單性,Dec

(Decomposability)

表示可分解性,App

(Applicability)表示適用性,Tr

(Traceability)表示可跟蹤性。

軟件測(cè)試性與軟件測(cè)試性特性的關(guān)系如圖1.2所示。

圖1.2軟件測(cè)試性與軟件測(cè)試性特性軟件測(cè)試性可劃分為軟件易于測(cè)試能力和軟件易于暴露Bug能力兩部分,其中軟件易于測(cè)試能力又可細(xì)分為可理解性、可控性、可觀測(cè)性、軟件測(cè)試支持能力、簡(jiǎn)單性、可分解性、適用性和可跟蹤性。軟件測(cè)試性特性中除了可觀測(cè)性和可跟蹤性,其他軟件測(cè)試性特性分別代表了軟件測(cè)試性的不同方面且相互獨(dú)立。可跟蹤性可看做是可觀測(cè)性的一種擴(kuò)展,要求能根據(jù)功能的執(zhí)行觀察相應(yīng)的操作、屬性或行為的輸出。如果將可觀測(cè)性限定為對(duì)固定的外部輸出或內(nèi)部狀態(tài)的觀測(cè),可跟蹤性就是對(duì)變化的輸出的觀察,兩者將代表軟件測(cè)試性兩個(gè)互不交叉的范圍。至此,軟件測(cè)試性可用軟件測(cè)試性特性集合表示,對(duì)軟件測(cè)試性的分析也可分解為對(duì)各軟件測(cè)試性特性的分析。

軟件測(cè)試性與軟件測(cè)試難易程度之間存在著密切關(guān)系:①軟件測(cè)試性能夠預(yù)計(jì)軟件測(cè)試的難易程度;②軟件測(cè)試難易程度同樣能反映軟件測(cè)試性能的好壞。但兩者還有區(qū)別:軟件測(cè)試性是軟件本身的屬性,理論上只要軟件不發(fā)生變化,軟件測(cè)試性也不會(huì)發(fā)生變化;而軟件測(cè)試難易程度不僅與軟件相關(guān),而且與軟件測(cè)試的過(guò)程、方法、工具等外部條件相關(guān),使用不同的軟件測(cè)試方法和不同的測(cè)試工具都會(huì)影響軟件測(cè)試難易程度。因此,使用軟件測(cè)試難易程度定義軟件測(cè)試性并不恰當(dāng)。

1.測(cè)試人員的素質(zhì)

軟件測(cè)試人員處于重要的崗位。軟件測(cè)試人員應(yīng)該具備的素質(zhì)歸納如下:

(1)扎實(shí)的專(zhuān)業(yè)技能。專(zhuān)業(yè)技能是軟件測(cè)試工程師應(yīng)該必備的首要素質(zhì),是做好軟件測(cè)試工作的前提條件。軟件測(cè)試人員應(yīng)具備三方面能力:軟件測(cè)試專(zhuān)業(yè)技能、軟件編程技能和掌握網(wǎng)絡(luò)、操作系統(tǒng)、數(shù)據(jù)庫(kù)等基礎(chǔ)知識(shí)。1.7軟件測(cè)試人員的素質(zhì)和職責(zé)

(2)熟悉軟件開(kāi)發(fā)測(cè)試流程,掌握軟件測(cè)試?yán)碚?、方法和操作技能,能編?xiě)軟件測(cè)試計(jì)劃、設(shè)計(jì)軟件測(cè)試方案、軟件測(cè)試用例和軟件測(cè)試報(bào)告;了解軟件測(cè)試基本概念,具有實(shí)際測(cè)試操作經(jīng)驗(yàn)。

(3)熟悉中國(guó)和國(guó)際軟件測(cè)試標(biāo)準(zhǔn),熟練掌握和操作國(guó)際流行的系列軟件測(cè)試工具,能夠承擔(dān)比較復(fù)雜的軟件分析、軟件測(cè)試、品質(zhì)管理等任務(wù),軟件測(cè)試技術(shù)隨著時(shí)間的變化也要進(jìn)一步提高和改進(jìn)。因此,軟件測(cè)試人員要善于利用書(shū)籍、網(wǎng)站、論壇、交流等各種途徑不斷提高自己的軟件測(cè)試水平。

(4)當(dāng)軟件測(cè)試人員發(fā)現(xiàn)軟件中存在Bug時(shí),往往需要編寫(xiě)B(tài)ug報(bào)告,所以軟件測(cè)試人員要有較高的寫(xiě)作能力。

(5)軟件測(cè)試人員還應(yīng)當(dāng)具有一定的市場(chǎng)意識(shí)和風(fēng)險(xiǎn)意識(shí),能夠站在不同的角度,盡可能地分析系統(tǒng)可能存在的風(fēng)險(xiǎn)場(chǎng)景。

2.軟件測(cè)試人員的職責(zé)

軟件測(cè)試人員要對(duì)最終軟件產(chǎn)品的質(zhì)量負(fù)責(zé),甚至具有批準(zhǔn)或者拒絕軟件產(chǎn)品的發(fā)布的權(quán)限。軟件測(cè)試是協(xié)助提高軟件產(chǎn)品質(zhì)量,因?yàn)檐浖a(chǎn)品的質(zhì)量過(guò)程控制應(yīng)該由軟件質(zhì)量保證(QA)負(fù)責(zé),好的軟件產(chǎn)品是設(shè)計(jì)和開(kāi)發(fā)等共同生產(chǎn)出來(lái)的。為此,軟件測(cè)試人員主要職責(zé)歸納如下:

(1)為主管部門(mén)提供服務(wù)。軟件測(cè)試人員將產(chǎn)品的軟件測(cè)試報(bào)告提供給主管部門(mén),由主管部門(mén)做出有關(guān)決策。

(2)為項(xiàng)目經(jīng)理提供服務(wù)。向項(xiàng)目經(jīng)理提供的軟件測(cè)試報(bào)告應(yīng)滿足項(xiàng)目經(jīng)理關(guān)注的需求,主要包括:產(chǎn)品的功能有哪些未滿足,性能方面有哪些問(wèn)題,哪些問(wèn)題已與開(kāi)發(fā)人員溝通但未達(dá)成一致意見(jiàn)等。

(3)為開(kāi)發(fā)人員提供服務(wù)。測(cè)試人員通常比開(kāi)發(fā)人員更了解業(yè)務(wù)領(lǐng)域,因此他能從業(yè)務(wù)員的角度來(lái)檢測(cè)產(chǎn)品的功能;通過(guò)軟件測(cè)試能發(fā)現(xiàn)開(kāi)發(fā)人員不易想到的問(wèn)題;從最終用戶的角度所進(jìn)行的隨機(jī)軟件測(cè)試,檢查產(chǎn)品的可用性。

(4)為市場(chǎng)推廣人員提供服務(wù)。軟件產(chǎn)品最終要投放市場(chǎng),在產(chǎn)品投產(chǎn)前,市場(chǎng)推廣人員必須了解產(chǎn)品的優(yōu)缺點(diǎn)和與同類(lèi)產(chǎn)品對(duì)比的特色,從而有利于組織產(chǎn)品的廣告宣傳,這些資料都來(lái)源于軟件測(cè)試人員以及軟件測(cè)試報(bào)告。

(5)軟件測(cè)試人員應(yīng)該與質(zhì)量管理人員一樣,在項(xiàng)目中起到過(guò)程監(jiān)控點(diǎn)的作用,能夠從全局的角度反映項(xiàng)目存在的問(wèn)題。

目前,按照軟件測(cè)試主體來(lái)分,國(guó)內(nèi)常見(jiàn)的軟件測(cè)試執(zhí)行者有三種類(lèi)型:

(1)承擔(dān)項(xiàng)目的軟件公司自己組織軟件測(cè)試。其優(yōu)點(diǎn)是對(duì)項(xiàng)目了解;缺點(diǎn)是軟件測(cè)試同開(kāi)發(fā)難以截然分離,在一定程度上影響到測(cè)試結(jié)果的客觀公正性,而且由軟件公司自己對(duì)其開(kāi)發(fā)的軟件進(jìn)行軟件測(cè)試,有時(shí)也不容易發(fā)現(xiàn)其中存在的Bug。1.8軟件測(cè)試的執(zhí)行者

(2)由用戶自行組織軟件測(cè)試。這一做法的好處是用戶出于維護(hù)自身利益的目的,能夠積極組織工作;缺點(diǎn)是由于用戶往往缺乏系統(tǒng)的計(jì)算機(jī)知識(shí),而且一般不具備可靠的軟件測(cè)試工具和軟件測(cè)試方法,所以軟件測(cè)試結(jié)果往往不夠系統(tǒng)、全面。

(3)第三方軟件測(cè)試。它指委托第三方專(zhuān)業(yè)軟件測(cè)試機(jī)構(gòu),由專(zhuān)業(yè)軟件測(cè)試人員采用特定軟件測(cè)試工具、方法對(duì)軟件質(zhì)量進(jìn)行全面檢測(cè)。因?yàn)榈谌杰浖y(cè)試機(jī)構(gòu)獨(dú)立于軟件開(kāi)發(fā)方和用戶之外,具備獨(dú)立性和權(quán)威性,如國(guó)家應(yīng)用產(chǎn)品質(zhì)量監(jiān)督檢驗(yàn)中心以及一些省級(jí)的軟件評(píng)測(cè)中心等,這些都是經(jīng)國(guó)家計(jì)量認(rèn)證的第三方產(chǎn)品質(zhì)量評(píng)測(cè)機(jī)構(gòu)。由第三方產(chǎn)品質(zhì)量評(píng)測(cè)機(jī)構(gòu)進(jìn)行軟件測(cè)試是當(dāng)前國(guó)內(nèi)軟件測(cè)試發(fā)展的方向。

在西方發(fā)達(dá)國(guó)家對(duì)一些需要比較專(zhuān)業(yè)的質(zhì)量認(rèn)證的軟件或大型軟件一般都是委托第三方機(jī)構(gòu)來(lái)完成的,他們?cè)谲浖_(kāi)發(fā)初期就參與軟件測(cè)試。但是,在我國(guó)委托第三方機(jī)構(gòu)來(lái)進(jìn)行軟件測(cè)試通常都是在軟件開(kāi)發(fā)完成或基本完成之后,即軟件測(cè)試被作為一個(gè)獨(dú)立的工作階段?,F(xiàn)在軟件開(kāi)發(fā)項(xiàng)目的規(guī)模越來(lái)越大,越來(lái)越復(fù)雜,在軟件開(kāi)發(fā)完成之后再進(jìn)行軟件測(cè)試,如果到這時(shí)才發(fā)現(xiàn)軟件有嚴(yán)重問(wèn)題,有時(shí)甚至不得不全部推倒從頭再來(lái),就會(huì)大大增加軟件的開(kāi)發(fā)成本,同時(shí)也延長(zhǎng)了軟件開(kāi)發(fā)的時(shí)間,并且增加了軟件測(cè)試的難度。因此,目前作為我國(guó)第三方軟件測(cè)試機(jī)構(gòu)主力的國(guó)家和省級(jí)軟件評(píng)測(cè)中心應(yīng)當(dāng)積極參與軟件開(kāi)發(fā)的整個(gè)過(guò)程,若能如此,將會(huì)對(duì)我國(guó)軟件開(kāi)發(fā)的質(zhì)量保障起到極大的推動(dòng)作用。此點(diǎn)也可以從軟件開(kāi)發(fā)的W模型中得到印證。

隨著軟件產(chǎn)業(yè)的發(fā)展,產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為軟件企業(yè)生存與發(fā)展的核心。幾乎每個(gè)大中型IT企業(yè)的產(chǎn)品在發(fā)布前都需要做大量的質(zhì)量控制、軟件測(cè)試和文檔工作,而這些工作必須依靠擁有熟練技術(shù)的專(zhuān)業(yè)軟件人員來(lái)完成。軟件測(cè)試工程師就是這樣一個(gè)企業(yè)的重頭角色。隨著我國(guó)軟件業(yè)的發(fā)展,專(zhuān)業(yè)的軟件測(cè)試人員成為了眾多知名公司追逐的對(duì)象,軟件測(cè)試有著廣闊的發(fā)展前景。1.9軟件測(cè)試職業(yè)的發(fā)展前景

1.軟件測(cè)試人員劃分

在一般中、大型IT企業(yè)內(nèi),軟件測(cè)試人員具體可以分為以下幾類(lèi):

(1)初級(jí)軟件測(cè)試工程師:初級(jí)職位,開(kāi)發(fā)軟件測(cè)試腳本,執(zhí)行軟件測(cè)試。

(2)軟件測(cè)試工程師/程序分析員:編寫(xiě)自動(dòng)軟件測(cè)試腳本程序。

(3)高級(jí)軟件測(cè)試工程師/程序分析員:確定軟件測(cè)試過(guò)程并指導(dǎo)初級(jí)軟件測(cè)試工程師。

(4)軟件測(cè)試組負(fù)責(zé)人:監(jiān)管1~3人工作,負(fù)責(zé)規(guī)模/成本估算。

(5)軟件測(cè)試/編程負(fù)責(zé)人:監(jiān)管4~8人,安排和領(lǐng)導(dǎo)任務(wù)完成,提出技術(shù)方法。

(6)軟件測(cè)試/質(zhì)量保證/項(xiàng)目經(jīng)理:負(fù)責(zé)8名以上人員的一個(gè)或多個(gè)項(xiàng)目,負(fù)責(zé)從軟件項(xiàng)目可行性分析,到需求分析,軟件設(shè)計(jì)、編碼、測(cè)試、后期服務(wù)的全過(guò)程。

(7)業(yè)務(wù)/產(chǎn)品經(jīng)理:負(fù)責(zé)多個(gè)項(xiàng)目的人員管理,負(fù)責(zé)項(xiàng)目方向和財(cái)務(wù)盈虧。

2.軟件測(cè)試職業(yè)發(fā)展方向

軟件測(cè)試職業(yè)發(fā)展方向,大體上可以分為管理路線、技術(shù)路線、管理

+

技術(shù)路線。

(1)軟件測(cè)試初級(jí)階段:軟件測(cè)試工程師屬于軟件測(cè)試職業(yè)生涯的初級(jí)階段,其適用范圍是入行軟件測(cè)試3年內(nèi)的常規(guī)軟件測(cè)試從業(yè)者,其主要工作內(nèi)容是按照軟件測(cè)試主管(即直接上司)分配的任務(wù)計(jì)劃,編寫(xiě)軟件測(cè)試用例、執(zhí)行軟件測(cè)試用例、提交軟件Bug,包括提交階段性軟件測(cè)試報(bào)告、參與階段性評(píng)審等。

(2)管理

+

技術(shù)路線:首先是常規(guī)路線,這條發(fā)展路線要求管理與技術(shù)并重,因?yàn)檐浖y(cè)試的行業(yè)特點(diǎn)決定了這個(gè)因素:軟件測(cè)試工程師向上晉升到軟件測(cè)試主管、軟件測(cè)試經(jīng)理、軟件測(cè)試總監(jiān),直至咨詢域的更高方向。

(3)軟件測(cè)試主管是企業(yè)項(xiàng)目級(jí)主管,其工作內(nèi)容是根據(jù)項(xiàng)目經(jīng)理或軟件測(cè)試經(jīng)理的計(jì)劃安排,調(diào)配軟件測(cè)試工程師執(zhí)行模塊級(jí)或項(xiàng)目級(jí)軟件測(cè)試工作,并控制與監(jiān)督軟件Bug的追蹤,保證每個(gè)軟件測(cè)試環(huán)節(jié)與階段的順利進(jìn)行。應(yīng)該說(shuō),在一個(gè)企業(yè)里做了3年左右軟件測(cè)試的人員,一般具有豐富的軟件測(cè)試技術(shù)和方法,具有對(duì)測(cè)試流程的監(jiān)控力與執(zhí)行力的職業(yè)素質(zhì),就可晉升為測(cè)試主管。

(4)軟件測(cè)試經(jīng)理是更高級(jí)別的軟件測(cè)試管理者,屬于高級(jí)軟件測(cè)試方向域。對(duì)于大中型軟件公司,該職位尤為重要,并且對(duì)其職業(yè)要求也比較高,一般適合4~8年的軟件測(cè)試從業(yè)者,在管理與技術(shù)能力比較強(qiáng)的情況下,可以結(jié)合具體環(huán)境晉升到該級(jí)別。軟件測(cè)試經(jīng)理負(fù)責(zé)企業(yè)級(jí)或大型項(xiàng)目級(jí)總體軟件測(cè)試工作的策劃與實(shí)施。軟件測(cè)試經(jīng)理除了需要統(tǒng)籌整個(gè)企業(yè)級(jí)或項(xiàng)目級(jí)軟件測(cè)試流程外,還要對(duì)于不同軟件架構(gòu)、不同開(kāi)發(fā)技術(shù)下的軟件測(cè)試方法進(jìn)行研究與探索,為企業(yè)的軟件測(cè)試團(tuán)隊(duì)成員提供指導(dǎo)與解決思路,同時(shí)還要合理調(diào)配不同專(zhuān)項(xiàng)軟件測(cè)試的人力資源(如業(yè)務(wù)測(cè)試工程師、自動(dòng)化測(cè)試工程師等),對(duì)軟件進(jìn)行全面的測(cè)試;另外,軟件測(cè)試經(jīng)理還需要與用戶交流與溝通,負(fù)責(zé)部分的銷(xiāo)售性或技術(shù)支持性工作。

(5)軟件測(cè)試總監(jiān)屬于常規(guī)發(fā)展路線的最高域,該職位一般在大型或跨國(guó)型軟件企業(yè),或者軟件測(cè)試服務(wù)型企業(yè)所設(shè)立。一般設(shè)立軟件測(cè)試總監(jiān)的企業(yè),該職位都相當(dāng)于CTO或副總的級(jí)別,是企業(yè)級(jí)或集團(tuán)級(jí)軟件測(cè)試工作的最高領(lǐng)導(dǎo)者,駕馭著企業(yè)全部的軟件測(cè)試與軟件測(cè)試相關(guān)資源,管理著企業(yè)的全部軟件測(cè)試及質(zhì)量類(lèi)工作,而其職業(yè)要求也是技術(shù)與管理雙結(jié)合。

本章介紹了軟件測(cè)試的基本概念、對(duì)象、目標(biāo)、目的、意義和特點(diǎn),以及軟件測(cè)試的原則和準(zhǔn)則。介紹了軟件測(cè)試性的基本概念和認(rèn)識(shí),比較了軟件測(cè)試與軟件測(cè)試性之間的關(guān)系,介紹了軟件測(cè)試人員應(yīng)具備的素質(zhì)及其職責(zé)。本章小結(jié)第二章基本軟件測(cè)試方法和常用測(cè)試工具2.1軟件測(cè)試方法簡(jiǎn)介2.2軟件審查2.3軟件測(cè)試自動(dòng)化技術(shù)2.4軟件測(cè)試工具及其選擇原則2.5常用的軟件測(cè)試工具介紹本章小結(jié)隨著軟件測(cè)試技術(shù)的發(fā)展,軟件測(cè)試方法更加多樣化,針對(duì)性更強(qiáng)。在實(shí)際中,選擇合適的軟件測(cè)試方法或軟件測(cè)試工具可以讓我們事半功倍。本章簡(jiǎn)要介紹常用的軟件測(cè)試方法、測(cè)試技術(shù)和常用的測(cè)試工具。

軟件測(cè)試是由一系列不同類(lèi)型的測(cè)試過(guò)程組成的,每種測(cè)試類(lèi)型都有具體的測(cè)試目標(biāo)和支持技術(shù),只側(cè)重于對(duì)測(cè)試目標(biāo)的一個(gè)或多個(gè)特征或?qū)傩赃M(jìn)行測(cè)試,準(zhǔn)確的測(cè)試類(lèi)型可以給軟件測(cè)試帶來(lái)事半功倍的效果。2.1軟件測(cè)試方法簡(jiǎn)介

1.軟件測(cè)試方法分類(lèi)

軟件測(cè)試的方法和技術(shù)是多種多樣的。軟件測(cè)試內(nèi)容包括文檔審查、代碼審查、靜態(tài)分析、代碼走查、邏輯測(cè)試、功能測(cè)試、性能測(cè)試、接口測(cè)試、人機(jī)交互界面測(cè)試、強(qiáng)度測(cè)試、余量測(cè)試、可靠性測(cè)試、安全性測(cè)試、恢復(fù)性測(cè)試、邊界測(cè)試、數(shù)據(jù)處理測(cè)試、安裝性測(cè)試、容量測(cè)試、互操作性測(cè)試、敏感性測(cè)試、標(biāo)準(zhǔn)符合性測(cè)試、兼容性測(cè)試和本地化測(cè)試等。

(1)從大的方面軟件測(cè)試方法可以分為兩大類(lèi):人工軟件測(cè)試和基于計(jì)算機(jī)的軟件測(cè)試。

(2)從生成軟件測(cè)試用例的數(shù)據(jù)來(lái)源劃分,軟件測(cè)試方法可以分為基于規(guī)約的軟件測(cè)試(又稱(chēng)黑盒測(cè)試或功能測(cè)試)、基于程序的軟件測(cè)試(又稱(chēng)白盒測(cè)試、玻璃盒測(cè)試或結(jié)構(gòu)測(cè)試)以及這兩種方法結(jié)合的軟件測(cè)試。

①基于規(guī)約的軟件測(cè)試指軟件測(cè)試人員無(wú)須了解程序的內(nèi)部結(jié)構(gòu),直接根據(jù)程序輸入和輸出之間的關(guān)系或程序的需求規(guī)約來(lái)確定軟件測(cè)試用例進(jìn)行測(cè)試,具體包括:等價(jià)類(lèi)劃分、因果圖、判定表、邊值分析、正交實(shí)驗(yàn)設(shè)計(jì)、狀態(tài)軟件測(cè)試、事務(wù)流軟件測(cè)試等。②基于程序的軟件測(cè)試指軟件測(cè)試人員根據(jù)程序的內(nèi)部結(jié)構(gòu)特征和與程序路徑相關(guān)的數(shù)據(jù)特性設(shè)計(jì)軟件測(cè)試數(shù)據(jù),主要包括控制流測(cè)試和數(shù)據(jù)流測(cè)試兩類(lèi)主要技術(shù),以及域軟件測(cè)試、符號(hào)執(zhí)行、程序插裝和變異軟件測(cè)試等其他技術(shù)。

③程序與規(guī)約相結(jié)合的軟件測(cè)試方法綜合考慮軟件的規(guī)范和程序的內(nèi)部結(jié)構(gòu)來(lái)生成測(cè)試數(shù)據(jù)。

(3)根據(jù)軟件測(cè)試數(shù)據(jù)設(shè)計(jì)方法,或從軟件測(cè)試是否針對(duì)系統(tǒng)的內(nèi)部結(jié)構(gòu)和具體實(shí)現(xiàn)算法的角度來(lái)看,傳統(tǒng)順序程序的軟件測(cè)試方法通常被分為功能性測(cè)試和結(jié)構(gòu)性測(cè)試。在結(jié)構(gòu)性測(cè)試過(guò)程中,軟件測(cè)試者對(duì)程序的語(yǔ)句、分支和邏輯路徑進(jìn)行各種覆蓋測(cè)試,可以在不同點(diǎn)檢查程序的狀態(tài),以確定實(shí)際狀態(tài)與預(yù)期狀態(tài)是否一致。

(4)按軟件測(cè)試階段分類(lèi),軟件測(cè)試分為單元測(cè)試、組件測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、安裝測(cè)試等,測(cè)試階段是“從小到大”、“由內(nèi)至外”、“循序漸進(jìn)”的測(cè)試過(guò)程,體現(xiàn)了“分而治之”的思想。單元測(cè)試的粒度最小,一般由開(kāi)發(fā)小組采用白盒方式來(lái)測(cè)試,主要測(cè)試單元是否符合“設(shè)計(jì)”要求。

(5)按軟件測(cè)試的目的分類(lèi),軟件測(cè)試分為正確性測(cè)試(白盒測(cè)試、黑盒測(cè)試)、性能測(cè)試、可靠性測(cè)試(強(qiáng)壯性測(cè)試、異常處理測(cè)試、負(fù)載測(cè)試)、回歸測(cè)試、安全性測(cè)試和兼容性測(cè)試等。

(6)按軟件測(cè)試過(guò)程分類(lèi),軟件測(cè)試分為需求階段的測(cè)試、設(shè)計(jì)階段的測(cè)試、程序階段的測(cè)試、測(cè)試結(jié)果的評(píng)估、安裝測(cè)試、驗(yàn)收測(cè)試、測(cè)試變化和維護(hù)。

(7)按軟件測(cè)試的實(shí)施方分類(lèi),軟件測(cè)試分為開(kāi)發(fā)方測(cè)試、用戶測(cè)試、第三方測(cè)試。

一般軟件測(cè)試方法的分類(lèi)見(jiàn)圖2.1。

圖2.1軟件測(cè)試方法分類(lèi)

2.軟件測(cè)試的基本方法

按照軟件工程的觀點(diǎn),軟件開(kāi)發(fā)過(guò)程包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等多個(gè)階段。為保證軟件產(chǎn)品的質(zhì)量,軟件開(kāi)發(fā)過(guò)程的每一個(gè)階段都需要進(jìn)行測(cè)試,即軟件測(cè)試需要貫穿于軟件開(kāi)發(fā)的全過(guò)程。下面簡(jiǎn)單介紹不同階段、不同目的等涉及多種軟件測(cè)試的方法。

(1)單元測(cè)試:?jiǎn)卧獪y(cè)試是最微小規(guī)模的測(cè)試,以測(cè)試某個(gè)功能或代碼塊。很多情況下由程序員而非測(cè)試員來(lái)做,因?yàn)樗枰纼?nèi)部程序設(shè)計(jì)和編碼的細(xì)節(jié)知識(shí)。這個(gè)工作不容易做好,除非應(yīng)用系統(tǒng)有一個(gè)設(shè)計(jì)很好的體系結(jié)構(gòu),還可能需要開(kāi)發(fā)測(cè)試驅(qū)動(dòng)器模塊或測(cè)試工具。

(2)白盒測(cè)試(結(jié)構(gòu)測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于程序的測(cè)試):白盒測(cè)試要利用白盒測(cè)試法進(jìn)行動(dòng)態(tài)測(cè)試時(shí),需要測(cè)試軟件產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過(guò)程,不需測(cè)試軟件產(chǎn)品的功能。通過(guò)白盒測(cè)試可檢測(cè)產(chǎn)品內(nèi)部活動(dòng)是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,白盒測(cè)試要按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作。白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟件驗(yàn)證。

(3)黑盒測(cè)試(功能測(cè)試、數(shù)據(jù)驅(qū)動(dòng)測(cè)試或基于規(guī)格說(shuō)明的測(cè)試):測(cè)試人員通過(guò)各種輸入和軟件的各種輸出結(jié)果來(lái)發(fā)現(xiàn)軟件缺陷(Bug),而不關(guān)心程序具體如何實(shí)現(xiàn)的一種測(cè)試方法,是根據(jù)軟件的規(guī)格對(duì)軟件進(jìn)行的測(cè)試,黑盒測(cè)試不考慮軟件內(nèi)部的運(yùn)作原理,軟件對(duì)用戶來(lái)說(shuō)就像一個(gè)黑盒子,所依據(jù)的只有程序的外部特性。

(4)動(dòng)態(tài)測(cè)試:指通過(guò)運(yùn)行軟件來(lái)檢驗(yàn)軟件的動(dòng)態(tài)行為和運(yùn)行結(jié)果的正確性。動(dòng)態(tài)測(cè)試一般通過(guò)對(duì)源代碼或者二進(jìn)制代碼進(jìn)行插裝,然后根據(jù)程序執(zhí)行所搜集到的信息進(jìn)行Bug檢測(cè)。根據(jù)動(dòng)態(tài)測(cè)試在軟件開(kāi)發(fā)過(guò)程中所處的階段和作用,動(dòng)態(tài)測(cè)試又可分為單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試、回歸測(cè)試等。

(5)靜態(tài)測(cè)試:指在不執(zhí)行程序的情況下,應(yīng)用各種技術(shù)對(duì)代碼進(jìn)行分析和評(píng)估。如檢查和審閱產(chǎn)品說(shuō)明書(shū);直接分析程序源代碼;借助專(zhuān)用的測(cè)試工具評(píng)審軟件文檔或程序,度量程序靜態(tài)復(fù)雜度。靜態(tài)測(cè)試通過(guò)分析或檢查源程序的文法、結(jié)構(gòu)、過(guò)程、接口等來(lái)檢查程序的正確性,以便發(fā)現(xiàn)編寫(xiě)的程序的不足之處,減少錯(cuò)誤出現(xiàn)的概率。

(6)靜態(tài)白盒測(cè)試(結(jié)構(gòu)分析):在軟件不執(zhí)行的條件下有條理地仔細(xì)審查軟件設(shè)計(jì)、體系結(jié)構(gòu)和代碼,從而找出軟件Bug的過(guò)程。

(7)可靠性測(cè)試與排錯(cuò)性測(cè)試:可靠性測(cè)試以驗(yàn)證或評(píng)估軟件的可靠性為目的,并不關(guān)心測(cè)試過(guò)程中所發(fā)現(xiàn)的Bug。排錯(cuò)性測(cè)試則恰恰相反,是以排除軟件Bug為目的,一旦測(cè)試發(fā)現(xiàn)Bug,就立刻予以排除。一般而言,排錯(cuò)性測(cè)試用于測(cè)試的早期階段,以白盒測(cè)試為主要測(cè)試手段。而可靠性測(cè)試用于測(cè)試的末尾階段,一般以黑盒測(cè)試為主要測(cè)試手段。

(8)人工測(cè)試:采用人工的手段對(duì)軟件實(shí)施的測(cè)試,是相對(duì)自動(dòng)測(cè)試而言的。與靜態(tài)分析不同,人工測(cè)試貫穿于軟件生存期的各個(gè)階段,通過(guò)人工和審查會(huì)議的形式對(duì)軟件實(shí)施測(cè)試。在人工測(cè)試中,主要是測(cè)試人員根據(jù)一些成熟的軟件設(shè)計(jì)規(guī)則對(duì)軟件的正確性等進(jìn)行審查,檢驗(yàn)所進(jìn)行的設(shè)計(jì)是否能滿足需要。統(tǒng)計(jì)表明,人工測(cè)試能發(fā)現(xiàn)30%~70%的Bug。

(9)自動(dòng)測(cè)試:自動(dòng)測(cè)試要依靠配置管理來(lái)提供良好的運(yùn)行環(huán)境,同時(shí)需要與開(kāi)發(fā)中的軟件構(gòu)建緊密配合。

(10)等價(jià)劃分測(cè)試(等價(jià)分配測(cè)試):是根據(jù)等價(jià)類(lèi)設(shè)計(jì)測(cè)試用例的一種技術(shù),是黑盒測(cè)試的典型方法之一。該測(cè)試通過(guò)把被測(cè)試程序所有可能的輸入數(shù)據(jù)域按等價(jià)原則劃分成若干部分,縮減可能的測(cè)試案例組合數(shù),但保證其仍然足以測(cè)試軟件的控制范圍。從而可有效減少測(cè)試次數(shù),極大提高測(cè)試效率,縮短軟件開(kāi)發(fā)周期。等價(jià)類(lèi)劃分測(cè)試的目的就是為了在有限的測(cè)試資源的情況下,用少量有代表性的數(shù)據(jù)得到比較好的測(cè)試效果。

(11)需求測(cè)試:根據(jù)軟件工程統(tǒng)計(jì),50%以上的系統(tǒng)Bug是由于錯(cuò)誤的需求或缺少需求導(dǎo)致的,因此,需求測(cè)試是必要的,也是必不可少的。需求測(cè)試貫穿于整個(gè)軟件開(kāi)發(fā)周期,通過(guò)需求測(cè)試可指導(dǎo)測(cè)試的各個(gè)階段,它可幫助我們?cè)O(shè)計(jì)整個(gè)測(cè)試,如測(cè)試計(jì)劃怎樣安排、測(cè)試用例怎樣選取、軟件的確認(rèn)要達(dá)到哪些要求等。

(12)初始化測(cè)試:指系統(tǒng)剛安裝完成后,在數(shù)據(jù)位空的情況下,如果被調(diào)用的模塊為空,點(diǎn)擊調(diào)用模塊時(shí),系統(tǒng)是否進(jìn)行容錯(cuò)的測(cè)試。

(13)鑒定測(cè)試:對(duì)申報(bào)科技項(xiàng)目、科技成果的軟件產(chǎn)品作為項(xiàng)目申報(bào)或?qū)<诣b定的技術(shù)依據(jù)。從技術(shù)與應(yīng)用的角度對(duì)軟件應(yīng)用情況作全面的質(zhì)量評(píng)測(cè)。

(14)健全測(cè)試:對(duì)軟件的健全性進(jìn)行測(cè)試目的在于確定其是否具備進(jìn)行下一步測(cè)試的能力。例如如果一個(gè)新版軟件每5分鐘與系統(tǒng)沖突,使系統(tǒng)陷于癱瘓,說(shuō)明該軟件不夠“健全”,目前不具備進(jìn)一步測(cè)試的條件。

(15)功能測(cè)試:功能測(cè)試主要是針對(duì)產(chǎn)品需求說(shuō)明書(shū)的測(cè)試,是在規(guī)定的一段時(shí)間內(nèi)運(yùn)行軟件系統(tǒng)的所有功能,以驗(yàn)證這個(gè)軟件系統(tǒng)有無(wú)嚴(yán)重Bug。功能測(cè)試包括原定功能的檢驗(yàn)、是否有冗余功能、遺漏功能,以及菜單、工具欄、快捷鍵、下拉框、按鈕、單選按鈕、復(fù)選按鈕,切換、鏈接、觸發(fā)鍵等的檢驗(yàn)。

(16)衰竭測(cè)試:指軟件或環(huán)境修復(fù)或更正后的“再測(cè)試”。一般很難確定需要多少遍再測(cè)試,尤其在接近開(kāi)發(fā)周期結(jié)束時(shí)。自動(dòng)測(cè)試工具對(duì)這類(lèi)測(cè)試尤其有用。

(17)競(jìng)爭(zhēng)條件測(cè)試:在多任務(wù)環(huán)境軟件設(shè)計(jì)中,必須處理隨時(shí)被中斷的情況,使之能夠與其他任何軟件在系統(tǒng)中同時(shí)運(yùn)行,并且共享內(nèi)存、磁盤(pán)、通信設(shè)備以及其他硬件資源。要達(dá)到這樣的結(jié)果,可能競(jìng)爭(zhēng)條件問(wèn)題,即軟件未預(yù)料到的中斷發(fā)生,時(shí)序就會(huì)發(fā)生錯(cuò)亂。競(jìng)爭(zhēng)條件測(cè)試難以設(shè)計(jì),最好是首先仔細(xì)查看狀態(tài)轉(zhuǎn)換圖中的每一個(gè)狀態(tài),以找出哪些外部影響會(huì)中斷該狀態(tài);考慮要使用數(shù)據(jù)如果沒(méi)有準(zhǔn)備好,或者在用到時(shí)數(shù)據(jù)發(fā)生了變化,狀態(tài)會(huì)怎樣;數(shù)條弧線或者直線同時(shí)相連的情形如何等。

(18)失敗測(cè)試(破壞測(cè)試):純粹為了破壞軟件、蓄意攻擊軟件的薄弱環(huán)節(jié)而設(shè)計(jì)和執(zhí)行的測(cè)試,也稱(chēng)為迫使出錯(cuò)測(cè)試。不合適數(shù)據(jù)(如非法、錯(cuò)誤、不正確和垃圾數(shù)據(jù))測(cè)試是失敗測(cè)試的對(duì)象。這類(lèi)測(cè)試沒(méi)有實(shí)際規(guī)則,只是設(shè)法破壞軟件。

(19)過(guò)程測(cè)試:在一些大型的系統(tǒng)中,部分工作由軟件自動(dòng)完成,其他工作則需由各種人員,包括操作員、數(shù)據(jù)庫(kù)管理員、終端用戶等,按一定規(guī)程與計(jì)算機(jī)配合,人工來(lái)完成。指定由人工完成的過(guò)程也需經(jīng)過(guò)仔細(xì)的檢查,這就是過(guò)程測(cè)試。

(20)互連測(cè)試:互連測(cè)試是要驗(yàn)證兩個(gè)或多個(gè)不同的系統(tǒng)之間的互連性。

(21)累積綜合測(cè)試:當(dāng)增加一個(gè)新功能后,對(duì)應(yīng)用系統(tǒng)所做的連續(xù)測(cè)試。它要求應(yīng)用系統(tǒng)的不同形態(tài)的功能能夠足夠獨(dú)立以能夠在全部系統(tǒng)完成前分別工作,或當(dāng)需要時(shí)那些測(cè)試驅(qū)動(dòng)器已被開(kāi)發(fā)出來(lái);這種測(cè)試可由程序員或測(cè)試員來(lái)做。

(22)界面測(cè)試(UI測(cè)試):軟件用戶界面的設(shè)計(jì)是否合乎用戶期望或要求,常包括菜單、對(duì)話框及對(duì)話框上所有按鈕、文字、出錯(cuò)提示,所有按鈕是否對(duì)齊、字符串字體大小、出錯(cuò)信息內(nèi)容和字體大小、工具欄位置/圖標(biāo)、幫助信息(Menu和Helpcontent)等很多方面的測(cè)試,以及測(cè)試用戶界面的風(fēng)格是否滿足客戶要求,文字是否正確,頁(yè)面是否美觀,文字和圖片組合是否完美,操作是否友好等,包括登錄界面、總界面、輸入界面(增、刪、改、查)、處理界面、輸出界面、報(bào)表界面、提示界面。

(23)文字測(cè)試:測(cè)試軟件中文字是否拼寫(xiě)正確,是否易懂,不存在二義性,沒(méi)有語(yǔ)法錯(cuò)誤;提示文字與輸入內(nèi)容是否有出入等,包括圖片文字。如請(qǐng)輸入正確的證件號(hào)碼,何謂正確的證件號(hào)碼,證件可以為身份證、駕駛證,也可為軍官證。如果改為:請(qǐng)輸入正確的身份證號(hào)碼,用戶就比較容易理解。

(24)文檔測(cè)試:主要測(cè)試開(kāi)發(fā)過(guò)程中針對(duì)用戶的文檔,以用戶手冊(cè)、安裝手冊(cè)等為主,檢驗(yàn)文檔是否與實(shí)際應(yīng)用存在差別。文檔測(cè)試不需要編寫(xiě)測(cè)試用例。這種測(cè)試是檢查用戶文檔(如用戶手冊(cè))的正確性、清晰性和精確性。用戶文檔中所使用的例子必須在測(cè)試中一一試過(guò),確保敘述正確無(wú)誤。

(25)需求文檔測(cè)試:主要測(cè)試需求文檔中是否存在邏輯矛盾以及需求在技術(shù)上是否可以實(shí)現(xiàn)。

(26)設(shè)計(jì)文檔測(cè)試:測(cè)試設(shè)計(jì)是否符合全部需求以及設(shè)計(jì)是否合理。

(27)文檔審核測(cè)試:文檔審核測(cè)試主要包括需求文檔測(cè)試、設(shè)計(jì)文檔測(cè)試,為前置測(cè)試中的一部分。前置測(cè)試方法越來(lái)越受到重視。

(28)基于設(shè)計(jì)的測(cè)試:是根據(jù)軟件的構(gòu)架或詳細(xì)設(shè)計(jì)引出測(cè)試用例的一種方法,是一種基于設(shè)計(jì)模型的測(cè)試方法。該方法利用用戶界面自動(dòng)生成法,把設(shè)計(jì)模型中的類(lèi)屬性定義和實(shí)現(xiàn)中的控件屬性組織在一起,構(gòu)建描述界面的邏輯對(duì)照表,輔助測(cè)試腳本引擎執(zhí)行自動(dòng)測(cè)試腳本。

(29)基于模型的測(cè)試:模型實(shí)際上是用語(yǔ)言把一個(gè)系統(tǒng)的行為描述出來(lái),定義出它可能的各種狀態(tài),以及它們之間的轉(zhuǎn)換關(guān)系,即狀態(tài)轉(zhuǎn)換圖?;谀P偷臏y(cè)試主要考慮系統(tǒng)的功能,可以認(rèn)為是功能測(cè)試的一種。

(30)條件測(cè)試:條件測(cè)試的目的在于測(cè)試程序模塊中所有的邏輯條件是否正確。

(31)邊界條件測(cè)試:指環(huán)繞邊界值的測(cè)試,是一種黑盒測(cè)試方法,是適度等價(jià)類(lèi)分析方法的一種補(bǔ)充。由長(zhǎng)期的測(cè)試工作經(jīng)驗(yàn)得知,軟件經(jīng)常在邊界上失效,大量的Bug發(fā)生在輸入或輸出的邊界上,采用邊界值分析技術(shù),針對(duì)邊界值及其各種邊界情況設(shè)計(jì)測(cè)試

用例,可能發(fā)現(xiàn)更多新的Bug。邊界條件測(cè)試是單元測(cè)試中最后一項(xiàng)也是最重要的一項(xiàng)任務(wù)。

(32)次邊界條件測(cè)試:有些邊界在軟件內(nèi)部,最終用戶幾乎看不到,但是仍有必要檢查,這樣的邊界條件稱(chēng)為次邊界條件或者內(nèi)部邊界條件。尋找這樣的邊界條件,不要求測(cè)試員成為程序員或者具有閱讀源代碼的能力,但是確實(shí)要求其大體了解軟件的工作方式。

(33)默認(rèn)值測(cè)試(默認(rèn)、空白、空值、零值和無(wú)):好的軟件會(huì)處理這種情況,常用的方法包括:①將輸入內(nèi)容默認(rèn)為合法邊界內(nèi)的最小值,或者合法區(qū)間內(nèi)某個(gè)合理值;②返回錯(cuò)誤提示信息。這些值在軟件中通常需要進(jìn)行特殊處理。因此應(yīng)當(dāng)建立單獨(dú)的等價(jià)區(qū)間。在這種默認(rèn)下,如果用戶輸入0或

-1作為非法值,就可以執(zhí)行不同的軟件處理過(guò)程。

(34)數(shù)據(jù)測(cè)試:對(duì)數(shù)據(jù)進(jìn)行測(cè)試就是檢查用戶輸入的信息、返回結(jié)果以及中間計(jì)算結(jié)果是否正確。軟件由數(shù)據(jù)(包括鍵盤(pán)輸入、鼠標(biāo)單擊、磁盤(pán)文件、打印輸出等)和程序(可執(zhí)行的流程、轉(zhuǎn)換、邏輯和運(yùn)算)兩個(gè)最基本的要素組成。數(shù)據(jù)類(lèi)型,包括數(shù)值、字符、位置、數(shù)量、地址、尺寸等,都會(huì)包含確定的邊界。

(35)數(shù)據(jù)流測(cè)試:根據(jù)定義的位置和使用的變量選擇測(cè)試路徑進(jìn)行測(cè)試。

(36)數(shù)據(jù)完整性測(cè)試:指當(dāng)主表的某一條件信息被刪除后,與這一條相關(guān)的級(jí)聯(lián)從表的信息都應(yīng)該被刪除。如果某些數(shù)據(jù)的主鍵是由數(shù)據(jù)庫(kù)本身實(shí)現(xiàn),可以不用刪除;如果有些主、從表是由程序員寫(xiě)的代碼來(lái)實(shí)現(xiàn),則要進(jìn)行數(shù)據(jù)完整性測(cè)試。

(37)隱藏?cái)?shù)據(jù)測(cè)試:指在軟件驗(yàn)收和確認(rèn)階段十分必要和重要的一部分。程序的質(zhì)量不僅僅通過(guò)用戶界面的可視化數(shù)據(jù)來(lái)驗(yàn)證,而且必須包括遍歷系統(tǒng)的所有數(shù)據(jù)。

(38)狀態(tài)測(cè)試:指通過(guò)不同的狀態(tài)驗(yàn)證程序的邏輯流程。測(cè)試員必須測(cè)試軟件的狀態(tài)及其轉(zhuǎn)換。軟件狀態(tài)是指軟件當(dāng)前所處的情況或者模式。軟件通過(guò)代碼進(jìn)入某一個(gè)流程分支,觸發(fā)一些數(shù)據(jù)位,設(shè)置某些變量,讀取某些變量,從而轉(zhuǎn)入一個(gè)新的狀態(tài)。

與數(shù)據(jù)測(cè)試一樣,狀態(tài)測(cè)試運(yùn)用等價(jià)分配技術(shù)選擇狀態(tài)和分支。因?yàn)檫x擇不完全測(cè)試,所以要承擔(dān)一定的風(fēng)險(xiǎn),但是通過(guò)合理選擇可以減少危險(xiǎn)。

(39)比較測(cè)試:指與競(jìng)爭(zhēng)伙伴的產(chǎn)品的比較測(cè)試,如軟件的弱點(diǎn)、優(yōu)點(diǎn)或?qū)嵙?。目的是取長(zhǎng)補(bǔ)短,以增強(qiáng)產(chǎn)品的競(jìng)爭(zhēng)力。

(40)接受測(cè)試:指基于客戶或最終用戶的規(guī)格書(shū)的最終測(cè)試,或基于用戶使用一段時(shí)間后,看軟件是否滿足客戶要求。一般從軟件功能、用戶界面、性能、業(yè)務(wù)關(guān)聯(lián)性進(jìn)行測(cè)試。

(41)可接受性測(cè)試:可接受性測(cè)試是在把測(cè)試的版本交付測(cè)試部門(mén)進(jìn)行大范圍測(cè)試以前,對(duì)基本功能進(jìn)行的簡(jiǎn)單測(cè)試,即必須滿足一些最低要求,如程序或系統(tǒng)不會(huì)很容易就掛起或崩潰。如果一個(gè)新版本沒(méi)通過(guò)可接受性測(cè)試,就應(yīng)該阻攔測(cè)試部門(mén)花時(shí)間在該測(cè)試版本上測(cè)試。同時(shí)還要找到造成該版本不穩(wěn)定的主要Bug,并督促盡快加以修正。

(42)可用性測(cè)試:指對(duì)“用戶友好性”的測(cè)試。這是主觀的,且將取決于目標(biāo)最終用戶或客戶。用戶面談、調(diào)查、用戶對(duì)話的錄像和其他一些技術(shù)都可使用。程序員和測(cè)試員通常都不宜作可用性測(cè)試員。

(43)探索或開(kāi)放型測(cè)試:不是按部就班地按照一個(gè)又一個(gè)正式的測(cè)試用例來(lái)進(jìn)行,也不局限于測(cè)試用例特定的步驟。這種測(cè)試是測(cè)試人員在理解該軟件功能的基礎(chǔ)上,運(yùn)用靈活多樣的想象力和創(chuàng)造力去模擬用戶的需求來(lái)使用該軟件的多種功能。通常涉及很多的測(cè)試用例或者通過(guò)更復(fù)雜的步驟來(lái)使用該軟件。

(44)深度測(cè)試:指執(zhí)行一個(gè)產(chǎn)品的一個(gè)特性的所有細(xì)節(jié),但不測(cè)試所有特性。當(dāng)比較函數(shù)返回“真”時(shí)才顯示出效果來(lái)。必須啟用“深度測(cè)試”功能,才能執(zhí)行深度測(cè)試。不使用時(shí)需要關(guān)閉。

(45)域測(cè)試:域測(cè)試一般分為單域測(cè)試和多域測(cè)試,單域測(cè)試包括設(shè)備測(cè)試和業(yè)務(wù)測(cè)試。設(shè)備測(cè)試包括測(cè)試某個(gè)系統(tǒng)的軟交換設(shè)備、中繼媒體網(wǎng)關(guān)設(shè)備、信令網(wǎng)關(guān)設(shè)備、接入媒體網(wǎng)關(guān)和IAD設(shè)備等。

(46)規(guī)格說(shuō)明書(shū)測(cè)試:為了提高軟件的可靠性及正確性,采用形式化的方法來(lái)書(shū)寫(xiě)需求規(guī)格說(shuō)明書(shū)已成為符合軟件工程要求的方法。形式化需求規(guī)格說(shuō)明書(shū)是以特定的形式,如有限狀態(tài)機(jī)、判定表及判定樹(shù)等來(lái)表現(xiàn);而傳統(tǒng)需求規(guī)格說(shuō)明書(shū)是以自然語(yǔ)言書(shū)寫(xiě)。從內(nèi)容上講,前者僅針對(duì)系統(tǒng)的一些關(guān)鍵的需求而省略所有的細(xì)節(jié),如資源限制等;而后者卻從系統(tǒng)的功能、資源、性能等方面進(jìn)行詳細(xì)的需求描述。這些區(qū)別決定了形式化測(cè)試有聚合性強(qiáng)的特點(diǎn),因而容易進(jìn)行形式化的測(cè)試。

(47)接口測(cè)試(業(yè)務(wù)流程測(cè)試):接口測(cè)試是系統(tǒng)組件之間接口的一種測(cè)試,包括程序內(nèi)接口(如導(dǎo)入、導(dǎo)出)和程序外接口(調(diào)試)測(cè)試。接口測(cè)試在單元測(cè)試階段進(jìn)行了一部分工作,而大部分都是在集成測(cè)試階段完成的,由開(kāi)發(fā)人員進(jìn)行。

(48)模塊測(cè)試:模塊測(cè)試方法分模塊的功能測(cè)試和模塊的結(jié)構(gòu)測(cè)試兩種方法。

①模塊的功能測(cè)試法。設(shè)計(jì)階段在完成概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的同時(shí),也為完成模塊的功能測(cè)試創(chuàng)造了足夠的條件,完成功能測(cè)試即利用功能測(cè)試方法生成測(cè)試用例。功能測(cè)試方法是為完成模塊乃至函數(shù)的測(cè)試而提出的方法。

②結(jié)構(gòu)測(cè)試法。結(jié)構(gòu)測(cè)試方法中用得較多的是控制流選擇標(biāo)準(zhǔn)。對(duì)于一份流程圖,最基本的測(cè)試方法是將程序中的路徑遍歷一次。但對(duì)較復(fù)雜的程序,滿足這樣條件的測(cè)試用例數(shù)是一個(gè)天文數(shù)字。因此,在實(shí)際中是不可行的,從而人們提出了一些覆蓋標(biāo)準(zhǔn),試圖達(dá)到完全查錯(cuò)的目的。

(49)結(jié)構(gòu)覆蓋測(cè)試:運(yùn)行插裝后的被測(cè)試軟件,使用功能測(cè)試、人機(jī)界面測(cè)試、邊界測(cè)試等各種測(cè)試用例,查看結(jié)構(gòu)覆蓋情況,并根據(jù)覆蓋情況,設(shè)計(jì)新的測(cè)試用例,逐步達(dá)到結(jié)構(gòu)覆蓋測(cè)試的要求。

(50)性能測(cè)試:指檢驗(yàn)安裝在系統(tǒng)內(nèi)的軟件運(yùn)行性能。這種測(cè)試往往與強(qiáng)度測(cè)試結(jié)合起來(lái)進(jìn)行。為記錄性能需要在系統(tǒng)中安裝必要的測(cè)量?jī)x表或是為度量性能而設(shè)置的軟件(或程序段)。性能測(cè)試關(guān)注的是系統(tǒng)的整體。它與通常所說(shuō)的強(qiáng)度、壓力/負(fù)載測(cè)試測(cè)試有密切關(guān)系。所以壓力和強(qiáng)度測(cè)試應(yīng)該與性能測(cè)試一同進(jìn)行。

(51)強(qiáng)度測(cè)試:是檢驗(yàn)系統(tǒng)的能力最高實(shí)現(xiàn)限度,要檢查在系統(tǒng)運(yùn)行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運(yùn)行到何種程度的測(cè)試。進(jìn)行強(qiáng)度測(cè)試時(shí),讓系統(tǒng)處于資源的異常數(shù)量、異常頻率和異常批量的條件下運(yùn)行,驗(yàn)證軟件的性能是否還能正常工作;或者說(shuō)是驗(yàn)證軟件的性能在各種極端環(huán)境和系統(tǒng)條件下的承受能力。

(52)回歸測(cè)試:回歸測(cè)試是在軟件維護(hù)階段,對(duì)修改之后的軟件重新進(jìn)行測(cè)試先前的測(cè)試以保證修改的正確性。

(53)一致性測(cè)試:旨在驗(yàn)證被測(cè)系統(tǒng)的測(cè)試行為與規(guī)范是否一致。

(54)本地化測(cè)試:本地化測(cè)試的對(duì)象是軟件的本地化版本。這類(lèi)測(cè)試一般包括驗(yàn)證菜單、對(duì)話框、出錯(cuò)信息、幫助內(nèi)容等所有用戶界面上的文字都能夠顯示正確翻譯好的當(dāng)?shù)匚淖?。本地化就是將軟件版本語(yǔ)言進(jìn)行更改,如將英文的Windows改成中文的Windows就是本地化。本地化測(cè)試的目的是測(cè)試特定目標(biāo)區(qū)域設(shè)置的軟件本地化質(zhì)量。

(55)α測(cè)試(Alpha測(cè)試):

測(cè)試是指開(kāi)發(fā)組織內(nèi)部人員模擬各類(lèi)用戶對(duì)即將發(fā)布的軟件產(chǎn)品(稱(chēng)為α版本)進(jìn)行測(cè)試,試圖發(fā)現(xiàn)Bug并修正。α測(cè)試是在系統(tǒng)開(kāi)發(fā)接近完成時(shí)對(duì)應(yīng)用系統(tǒng)的測(cè)試,測(cè)試后仍然會(huì)有少量的設(shè)計(jì)變更。這種測(cè)試一般由最終用戶或其他人員完成,由一個(gè)用戶在開(kāi)發(fā)環(huán)境下進(jìn)行的測(cè)試,也可以是公司內(nèi)部的用戶在模擬實(shí)際操作環(huán)境下進(jìn)行的受控測(cè)試,α測(cè)試不能由該系統(tǒng)的程序員或測(cè)試員完成。

(56)

β測(cè)試(Beta測(cè)試):經(jīng)過(guò)

測(cè)試調(diào)整的軟件產(chǎn)品稱(chēng)為β版本。緊隨其后的β測(cè)試是指開(kāi)發(fā)者組織各方面的典型用戶在日常工作中實(shí)際使用β版本,并要求用戶報(bào)告異常情況、提出批評(píng)意見(jiàn),然后開(kāi)發(fā)者再對(duì)舊版本進(jìn)行改錯(cuò)和完善。β測(cè)試的關(guān)鍵在于盡可能通過(guò)真實(shí)地模擬實(shí)際運(yùn)行環(huán)境和用戶對(duì)軟件產(chǎn)品的操作并盡最大努力涵蓋所有可能的用戶操作方式。

(57)可移植性測(cè)試:可移植性測(cè)試是指測(cè)試軟件是否可以被成功移植到指定的硬件或軟件平臺(tái)上,是測(cè)試軟件在一個(gè)特定的硬件/軟件/操作系統(tǒng)/網(wǎng)絡(luò)等環(huán)境下的性能如何。

(58)兼容性測(cè)試:這類(lèi)測(cè)試主要希望驗(yàn)證軟件產(chǎn)品在不同版本之間的兼容性,或驗(yàn)證該功能能夠如預(yù)期的那樣與其他程序或者構(gòu)件協(xié)調(diào)工作。兼容性經(jīng)常意味著新舊版本之間的協(xié)調(diào),也包括測(cè)試的產(chǎn)品與其他產(chǎn)品的兼容使用。如用同樣產(chǎn)品的新版本時(shí)不影響與用舊版本用戶之間保存文件、格式和其他數(shù)據(jù)等操作。兼容性包括向上兼容、向下兼容、軟件兼容、硬件兼容。軟件的兼容性有很多,如瀏覽器兼容性,即測(cè)試軟件在不同產(chǎn)商的瀏覽器下是否能夠正確顯示與運(yùn)行,操作系統(tǒng)兼容性,即測(cè)試軟件在不同操作系統(tǒng)下是否能夠正確顯示與運(yùn)行,如測(cè)試軟件在Windows98、Windows2000、WindowsXP、Linux、Unix下是否可以運(yùn)行。

(59)面向復(fù)用的測(cè)試:主要從使用的合理性和方便性等角度對(duì)軟件系統(tǒng)進(jìn)行檢查,發(fā)現(xiàn)人為因素或使用上的問(wèn)題。要保證在足夠詳細(xì)的程度下,用戶界面便于使用;對(duì)輸入量可容錯(cuò),響應(yīng)時(shí)間和響應(yīng)方式合理可行,輸出信息有意義、正確并前后一致;出錯(cuò)信息能夠引導(dǎo)用戶去解決問(wèn)題;軟件文檔全面、正規(guī)、確切。

面向復(fù)用的測(cè)試比傳統(tǒng)的測(cè)試模型多了構(gòu)件生成和入庫(kù)過(guò)程,要求每一個(gè)測(cè)試實(shí)例一開(kāi)始就要體現(xiàn)復(fù)用思想??蓮?fù)用的資源有測(cè)試思想、測(cè)試工具、測(cè)試技巧、測(cè)試指南、測(cè)試數(shù)據(jù)、測(cè)試結(jié)果、測(cè)試生成器、測(cè)試框架、測(cè)試過(guò)程記錄等,為在測(cè)試進(jìn)行的同時(shí)提供詳細(xì)的資料,這些記錄將被測(cè)試庫(kù)擴(kuò)充和維護(hù)人員使用。

(60)循環(huán)測(cè)試:對(duì)許多算法進(jìn)行基本的循環(huán)測(cè)試。可以定義循環(huán)為簡(jiǎn)單的、并置的、嵌套的或是無(wú)結(jié)構(gòu)的。

(61)驗(yàn)收測(cè)試:驗(yàn)收測(cè)試是指相關(guān)的用戶或獨(dú)立測(cè)試人員根據(jù)測(cè)試計(jì)劃和結(jié)果對(duì)系統(tǒng)進(jìn)行測(cè)試和接收。驗(yàn)收測(cè)試讓系統(tǒng)用戶決定是否接收系統(tǒng)。它是一項(xiàng)確定產(chǎn)品是否能夠滿足合同或用戶所規(guī)定需求的測(cè)試,旨在向軟件的購(gòu)買(mǎi)者展示該軟件系統(tǒng)滿足其用戶的需求。它的測(cè)試數(shù)據(jù)通常是系統(tǒng)測(cè)試的測(cè)試數(shù)據(jù)的子集。所不同的是,驗(yàn)收測(cè)試往往有軟件系統(tǒng)的購(gòu)買(mǎi)者代表在現(xiàn)場(chǎng),甚至是在軟件安裝使用的現(xiàn)場(chǎng),也是軟件在投入使用之前的最后測(cè)試。

(62)負(fù)面測(cè)試(反向測(cè)試或逆向測(cè)試):負(fù)面測(cè)試是相對(duì)于正面測(cè)試而言的,測(cè)試瞄準(zhǔn)于使系統(tǒng)不能工作。負(fù)面測(cè)試與正面測(cè)試都是測(cè)試設(shè)計(jì)時(shí)的兩個(gè)非常重要的劃分。簡(jiǎn)單點(diǎn)說(shuō),正面測(cè)試指測(cè)試系統(tǒng)是否完成了它應(yīng)該完成的工作;而負(fù)面測(cè)試指測(cè)試系統(tǒng)是否不執(zhí)行它不應(yīng)該完成的操作。

(63)非功能性需求測(cè)試:非功能性需求測(cè)試是與功能不相關(guān)的需求測(cè)試,如性能測(cè)試、可用性測(cè)試等。雖然在設(shè)計(jì)解決方案的過(guò)程中滿足功能性需求很重要,但是如果沒(méi)有考慮非功能性需求,則解決方案很難取得實(shí)效。非功能性需求特點(diǎn):不要脫離實(shí)際環(huán)境、可靠性、可用性、有效性、可維護(hù)性、可移植性等。

(64)按階段測(cè)試:可以分為單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試(參見(jiàn)后面詳細(xì)介紹)??梢园岩陨蠝y(cè)試方法進(jìn)行歸類(lèi),歸類(lèi)原則可以選擇:

①此軟件能做什么?如針對(duì)數(shù)據(jù)進(jìn)行功能、接口、容錯(cuò)、界面、權(quán)限、初始化、數(shù)據(jù)完整性測(cè)試。

②軟件做得怎么樣?如性能、負(fù)載、恢復(fù)、穩(wěn)定性、并發(fā)、系統(tǒng)安全等。

③軟件在什么環(huán)境條件下測(cè)試?如配置、安裝、文檔、可用性等。軟件測(cè)試是由一系列不同的測(cè)試方法和技術(shù)組成,主要目的是對(duì)以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)進(jìn)行充分的測(cè)試。雖然軟件測(cè)試方法和技術(shù)很多,但不是所有的軟件都要進(jìn)行任何類(lèi)型的測(cè)試。實(shí)際中,一般根據(jù)產(chǎn)品的具體情況進(jìn)行組裝不同類(lèi)型的測(cè)試方法。不同的測(cè)試方法對(duì)各個(gè)階段Bug的檢測(cè)效果一般不同。有時(shí)在同一階段,當(dāng)各種方法組合使用時(shí),Bug檢測(cè)的效果會(huì)更好。

l974年M.E.Fagan首先提出了軟件審查會(huì)的想法,接著在IBM公司和其他一些軟件開(kāi)發(fā)機(jī)構(gòu)中試行,取得了較好的效果。此后逐漸被更多的軟件開(kāi)發(fā)部門(mén)接受,至今成為在軟件開(kāi)發(fā)過(guò)程中把握產(chǎn)品質(zhì)量的有效方法。有專(zhuān)家統(tǒng)計(jì),這一方法用于檢驗(yàn)程序時(shí),能夠有效地發(fā)現(xiàn)30%~70%的邏輯設(shè)計(jì)Bug和編碼Bug。IBM公司代碼審查會(huì)的查錯(cuò)效率更高,竟能查出全部Bug的80%。2.2軟件審查軟件審查的對(duì)象可以是各開(kāi)發(fā)階段的成果,如需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等階段的成果以及編碼、軟件測(cè)試計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論