軟件測試的分類
軟件測試可以按照不同的標(biāo)準(zhǔn)進行分類,如按照開發(fā)階段分類、按照測試環(huán)境分類、按照測試技術(shù)分類、按照軟件質(zhì)量特性分類等。
按照開發(fā)階段分類
軟件測試按照開發(fā)階段可分為單元測試、集成測試、確認測試、系統(tǒng)測試和驗收測試。
1.單元測試
單元測試又稱模塊測試,是針對軟件設(shè)計的最小單位——程序模塊進行正確性檢驗的測試工作。其目的在于檢查每個程序單元能否滿足詳細設(shè)計說明中的模塊功能、性能、接口和設(shè)計約束等要求,發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯誤。單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例。多個模塊可以平行地獨立進行單元測試。
2.集成測試
集成測試也叫作組裝測試,通常是在單元測試的基礎(chǔ)上,對所有的程序模塊進行有序的、遞增的測試。集成測試檢驗程序單元或部件的接口關(guān)系,使它們逐步集成為符合概要設(shè)計要求的程序部件或整個系統(tǒng)。
軟件集成是一個持續(xù)的過程,會形成很多個臨時版本。在此過程中,保證功能集成的穩(wěn)定性是真正的挑戰(zhàn)。每個版本在提交時,都需要進行冒煙測試,即對程序主要功能進行驗證。冒煙測試也叫版本驗證測試、提交測試。
3.確認測試
確認測試是通過檢查和提供客觀證據(jù),證實軟件是否滿足特定預(yù)期用途的需求。確認測試檢測與證實軟件是否滿足軟件需求說明書中提出的要求。
4.系統(tǒng)測試
系統(tǒng)測試是為驗證和確認系統(tǒng)是否達到其原始目標(biāo),而對集成的硬件和軟件系統(tǒng)進行的測試。系統(tǒng)測試在真實或模擬系統(tǒng)運行的環(huán)境下,檢查完整的程序系統(tǒng)能否與硬件、外設(shè)、網(wǎng)絡(luò)和系統(tǒng)軟件、支持平臺等正確匹配、連接,并滿足用戶需求。
5.驗收測試
驗收測試是按照項目任務(wù)書或合同、供需雙方約定的驗收依據(jù)文檔對整個系統(tǒng)進行的測試與評審,決定產(chǎn)品被接收或拒收。
按照測試環(huán)境分類
當(dāng)軟件是為特定用戶開發(fā)時,需要進行一系列的驗收,讓用戶驗證所有的需求是否已經(jīng)得到滿足。當(dāng)軟件是為多個用戶開發(fā)時,讓每個用戶逐個執(zhí)行正式的驗收測試是不切實際的,因此很多軟件產(chǎn)品生產(chǎn)者采用?α?測試和?β?測試以發(fā)現(xiàn)可能只有最終用戶才能發(fā)現(xiàn)的錯誤。
α?測試是由一個用戶在開發(fā)環(huán)境下進行的測試,也可以是開發(fā)機構(gòu)內(nèi)部的用戶在模擬實際操作環(huán)境下進行的測試。軟件在一個自然設(shè)置狀態(tài)下使用,開發(fā)者坐在用戶旁邊,隨時記下錯誤情況和使用中的問題。這是在受控制的環(huán)境下進行的測試,α?測試的目的是測試軟件產(chǎn)品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持),尤其注重產(chǎn)品的界面和特色。
β?測試是在軟件的一個或多個用戶的實際使用環(huán)境下進行的測試。這些用戶是與公司簽訂了支持產(chǎn)品預(yù)發(fā)行合同的外部客戶,他們要使用該產(chǎn)品,并返回相關(guān)錯誤信息給開發(fā)者。
按照測試技術(shù)分類
軟件測試按照測試技術(shù)分為白盒測試、黑盒測試、灰盒測試,也可分為靜態(tài)測試和動態(tài)測試。靜態(tài)測試是指不運行程序,通過人工方式對程序和文檔進行分析與檢查; 動態(tài)測試是指通過運行被測程序來檢查運行結(jié)果與預(yù)期結(jié)果的差異,并分析運行效率和健壯性等指標(biāo)。此處討論的白盒測試、黑盒測試、灰盒測試在實現(xiàn)測試的方法上既包括動態(tài)測試,又包括靜態(tài)測試。
1.白盒測試
白盒測試通過對程序內(nèi)部結(jié)構(gòu)的分析、檢測來尋找問題。它將測試對象看成一個透明盒子,即清楚了解程序結(jié)構(gòu)和處理過程,以此檢查軟件內(nèi)部動作是否按照設(shè)計說明的規(guī)定正常進行。
2.黑盒測試
黑盒測試通過軟件的外部表現(xiàn)來發(fā)現(xiàn)其缺陷和錯誤。它把測試對象看成一個黑盒子,完全不考慮程序內(nèi)部結(jié)構(gòu)和處理過程。黑盒測試在程序界面處進行測試,它只檢查程序是否按照規(guī)格說明書的規(guī)定正常運行。
3.灰盒測試
灰盒測試是介于白盒測試與黑盒測試之間的測試?;液袦y試關(guān)注輸出對于輸入的正確性,同時也關(guān)注內(nèi)部表現(xiàn),但這種內(nèi)部關(guān)注不像白盒測試那樣詳細、完整,只是通過一些表征性的現(xiàn)象、事件、標(biāo)志來判斷內(nèi)部的運行狀態(tài)。 軟件測試方法和技術(shù)的分類與軟件開發(fā)過程相關(guān)聯(lián),它貫穿了整個軟件生命周期。單元測試、集成測試、系統(tǒng)測試應(yīng)用于整個開發(fā)過程中的不同階段。單元測試應(yīng)用白盒測試方法,集成測試應(yīng)用近似灰盒測試方法,系統(tǒng)測試和確認測試應(yīng)用黑盒測試方法。
按照軟件質(zhì)量特性分類
軟件測試按照軟件質(zhì)量特性可分為功能測試與性能測試。
功能測試是一種黑盒測試,它檢查軟件的實際功能是否符合用戶的需求, 一般分為邏輯功能測試、界面測試、易用性測試、安裝測試、兼容性測試等。
性能測試針對軟件的各方面性能,主要是時間性能和空間性能。
時間性能主要是指軟件的一個具體事務(wù)的響應(yīng)時間。比如登錄 163 郵箱,輸入用戶名和密 碼,單擊“登錄”按鈕,如果從單擊按鈕的那一刻起,到最終登錄后的頁面反饋,時間間隔為3 秒,則稱 163 郵箱在這一次登錄事務(wù)中的響應(yīng)時間為 3 秒。通常通過多次登錄來記錄不同的響應(yīng)時間,最后取平均值,這樣的數(shù)據(jù)才有參考價值。
空間性能主要指軟件運行時所消耗的系統(tǒng)資源,比如安裝軟件之前,軟件提示用戶的安裝最低要求。
性能測試一般分為如下幾種。
(1)一般性能測試:指讓被測系統(tǒng)在正常的軟硬件環(huán)境下運行,不向其施加任何壓力的性能測試。
(2)穩(wěn)妥定性測試:也稱可靠性測試,指連續(xù)運行被測系統(tǒng),檢查系統(tǒng)運行的穩(wěn)定程度。
(3)負載測試:通常是指讓被測系統(tǒng)在其能忍受的壓力的極限范圍之內(nèi)連續(xù)運行來測試系統(tǒng)的穩(wěn)定性。
(4)壓力測試:通常是指持續(xù)不斷地給被測系統(tǒng)增加壓力,直到將被測系統(tǒng)壓垮為止,用來測試系統(tǒng)所能承受的最大壓力。
其他分類
回歸測試是指在軟件的新版本測試時,重復(fù)執(zhí)行該軟件的某一個舊版本的所有測試用例。目的是驗證舊版本所有缺陷已全部被修復(fù),以及確認修復(fù)這些缺陷沒有引發(fā)新的缺陷。
冒煙測試是指在對一個新版本進行大規(guī)模的系統(tǒng)測試之前,先驗證一下軟件的基本功能是否實現(xiàn),是否具備可測性。
隨機測試也稱為隨意性測試,是測試人員基于經(jīng)驗和直覺的探索性測試,其目的是模擬用戶的真實操作,并發(fā)現(xiàn)一些邊緣性的錯誤。