1. 程式人生 > >【軟體測試筆記】軟體測試基礎

【軟體測試筆記】軟體測試基礎

軟體測試的目標

(1)測試是為了發現程式中的錯誤而執行程式的過程

(2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案

(3)成功的測試是發現了至今為止尚未發現的錯誤的測試

在綜合測試階段通常由其他人員組成測試小組來完成測試,而不能讓程式編寫者自己進行測試。

軟體測試準則

(1)所有測試都應該能追溯到使用者需求。從使用者角度看,最嚴重的錯誤是導致程式不能滿足使用者需求的那些錯誤。

(2)在測試開始之前就要制定出測試計劃。一旦完成了需求模型就可以制定測試計劃,在建立設計模式之後就可以設計詳細的測試方案。在編碼之前就可以對所以測試工作進行計劃和設計

(3)根據Pareto原理說明,測試發現的錯誤中的80%很可能是由程式中20%的模組造成的。

(4)應該從“小規模”測試開始,逐步進行“大規模”測試。首先重點測試單個程式模組,然後測試重點轉向繼承的模組簇中尋找錯誤,最後在整個系統中尋找錯誤。

(5)窮舉測試是不可能的。

(6)為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。所謂“最佳效果”是指有最大可能性發現錯誤的測試。

測試方法

測試有兩種方法,如果已經知道了產品的功能,可以通過測試來檢驗是否每個功能都能正常使用,這種稱為黑盒測試;如果知道產品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規格說明書的規定正常進行,這種方法稱為白盒測試。

黑盒測試把程式看做一個黑盒子,完全不考慮程式內部結構和處理過程。黑盒測試是在程式介面進行的測試,它只檢查程式功能是否能按照規格說明書的規定正常使用,程式是否能適當地接收輸入資料併產生正確的輸出資訊,程式執行過程中能否保持外部資訊(例如資料庫)的完整性。黑盒測試又稱為功能測試

白盒測試與黑盒測試相反,它把程式看成一個透明的白盒子,測試者完全知道程式的結構和處理演算法。這種方法按照程式內部的邏輯測試程式,檢測程式中的主要通路是否按預定要求正確工作。白盒測試又稱為結構測試。

測試步驟

模組測試

模組測試的目的是保證每個模組作為一個單元能正確執行,所以模組測試通常又稱為單元測試。在這個測試中發現的是編碼詳細設計的錯誤

子系統測試

子系統測試是把經過單元測試的模組放在一起形成一個子系統來測試。模組間相互的協調和通訊是這個測試過程中的主要問題。這個步驟著重測試模組的介面

系統測試

系統測試是把經過測試的子系統裝配成一個完整的系統來測試。這個過程中不僅發現設計和編碼的錯誤,還應驗證系統確實能提供指定的功能,而且系統的動態特性也符合預定要求。這個步驟發現的往往是軟體設計

需求說明書中的錯誤。

子系統測試和系統測試都兼有檢測組裝兩種含義,通常稱為整合測試。

驗收測試

驗收測試把軟體系統作為單一的實體進行測試,是在使用者積極參與下進行的,而且可能主要使用實際資料。驗收測試的目的是驗證系統能滿足使用者的需求,這個步驟發現的往往是系統需求說明書中的錯誤。驗收測試也稱為確認測試

平行執行

所謂平行執行就是同時執行新開發出來的系統和將被它取代的舊系統,以便比較新舊兩個系統的處理結果。這樣做的目的是:

(1)可以在準生產環境中執行新系統又不冒風險

(2)使用者能有一段熟悉新系統的時間

(3)可以驗證使用者指南和使用手冊之類的文件

(4)能夠以準確生產模式對新系統進行全負荷測試,可以用測試結果驗證效能指標

單元測試

單元測試主要使用白盒測試技術,而且是對多個模組的測試可以並行地進行。

測試的重點:

(1)模組介面

(2)區域性資料結構

(3)重要的執行通路

(4)出錯處理通路

(5)邊界條件

整合測試

整合測試是測試和組裝軟體的系統化技術,主要目標是發現與介面有關的問題(系統測試類似)。

由模組組裝成程式有兩種方法:一種方式是先分別測試每個模組,再把所有模組按設計要求組合成所需要的程式,這種稱為非漸增式測試方法;另一種方法是把下一個要測試的模組和已經測試好的那些模組結合起來進行測試,測試完後再把下一個要測試的模組結合進來測試,這種每次增加一個模組的方法稱為漸增式測試,這種方法可以同時完成單元測試和整合測試。

自頂向下整合

從主控制模組開始,沿著程式的控制層次向下移動,逐漸把各個模組結合起來。在把附屬於主控制模組的那些模組組裝到程式結構中去時,使用深度優先策略或廣度優先策略。

自頂向下的結合策略能夠在測試 的早期對主要的控制或關鍵的抉擇進行檢驗。

自底向上整合

自底向上測試從“原子”模組開始組裝和測試。因為是從底部向上結合模組,總能得到所需下層模組的處理功能,因此不需要存根程式。

確認測試

確認測試也稱為驗收測試,它的目的是驗證軟體的有效性。

確認測試必須有使用者積極參與,或者以使用者為主進行。

確認測試通常使用黑盒測試。

白盒測試技術

通常把測試資料和預期的輸出結果稱為測試用例。

邏輯覆蓋

有選擇地執行程式中某些最有代表性的通路是對窮盡測試的唯一可行的替代方法。

語句覆蓋

為了暴露更多錯誤,至少每個語句應該執行一次。語句覆蓋的含義是,選擇足夠多的測試資料,使被測程式中的每個語句至少執行一次。語句覆蓋只關心判定表示式的值,而沒有分別測試判定表示式中每個條件取不同值時的情況。語句覆蓋是很弱的邏輯覆蓋標準。

判定覆蓋

判定覆蓋又叫分支覆蓋,不僅每個語句必須至少執行一次,而且每個判定的每種可能的結果都應該至少執行一次,也就是每個判定的每個分支都至少執行一次。

條件覆蓋

條件覆蓋的含義是不僅每個語句至少執行一次,而且使判定表示式中的每個條件都取到各種可能的結果

條件覆蓋比判定覆蓋強,因為它使判定表示式中每個條件都取到了兩個不同的結果,判定覆蓋卻只關心整個判定表示式的值。

既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。

判定/條件覆蓋

選取足夠多的測試資料,使得判定表示式中的每個條件都取到各種可能的值,而且每個判定表示式也都取到各種可能的結果

條件組合覆蓋

條件組合覆蓋要求選取足夠多的測試資料,使得每個判定表示式中的條件的各種可能組合都至少出現一次

滿足條件組合覆蓋標準的測試資料,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。

點覆蓋

如果連通圖G的子圖g是連通的,而且包含G的所有節點,則稱g是G的點覆蓋

邊覆蓋

如果連通圖G的子圖g是連通的,而且包含G的所有邊,則稱g是G的邊覆蓋。

路徑覆蓋

路徑覆蓋的含義是,選取足夠多的測試資料,使程式的每條可能路徑都至少執行一次。

黑盒測試技術

黑盒測試可能發現的問題:

(1)功能不正確或遺漏功能

(2)介面錯誤

(3)資料結構錯誤或外部資料庫訪問錯誤

(4)效能錯誤

(5)初始化和終止錯誤

白盒測試是在測試過程早期階段進行的,而黑盒測試主要在測試過程的後期。

等價劃分

等價劃分是一種黑盒測試技術,這種技術把程式的輸入域劃分為若干個資料類,據此匯出測試用例。沒雷中的一個典型值在測試中的作用與這一類中的其他值的作用相同。等價類分為有效等價類無效等價類

邊界值分析

邊界處經常發生錯誤,因此通常輸入等價類和輸出等價類的邊界,就是應該著重測試的程式邊界情況。選取的測試資料應該剛好等於、剛剛小於和剛剛大於邊界值。