第六章 軟體測試

2021-08-31 20:37:00 字數 4285 閱讀 1262

軟體評估可以分為靜態評估和動態評估。評審、走查和形式化證明等是靜態評估技術,而軟體測試是一種常用的動態評估技術,通過執行程式發現其中的錯誤。

6.1 軟體測試目標與軟體測試過程模型

6.1.1 軟體測試目標

人們關於軟體測試目的的認識,大體經歷了5個階段。第一階段認為軟體測試和軟體除錯沒有什麼區別;第二階段認為測試時為了表明軟體能正常工作;第三階段認為測試是為了表明軟體不能正常工程;第四階段認為測試僅是為了將已察覺的錯誤風險減少到乙個可接受的程度;第五階段認為測試不僅僅是一種行為,而是一種理念,即測試時產生低風險軟體的一種訓練。

軟體測試可定義為:按照特定規程發現軟體錯誤的過程。在ieee提出的軟體工程標準術語中,對軟體測試的定義是:「使用人工或自動手段,執行或測定某個系統的過程,其目的是檢驗它是否滿足規定的需求,或清楚了解預期結果與實際結果之間的差異」。

嚴格地說,錯誤(error)是指「與所期望的設計之間的偏差,該偏差可能產生不期望的系統行為或失效」。而失效(failure)是指「與所規約的系統執行之間的偏差」。失效是系統故障或錯誤的後果。而故障(fault)是指「導致錯誤或失效的不正常的條件」。故障可以是偶然性的或是系統性的。

6.1.2 軟體測試的過程模型

軟體測試是乙個程式的過程,包括測試設計、測試執行以及測試結果比較等。

在軟體測試中:

(1)環境模型、被測物件模型和錯誤模型在軟體測試中扮演了一種很重要的角色;這些模型的質量,特別是程式模型的質量,對發現錯誤具有關鍵性作用。

(2)軟體測試的錯誤假定是,實際結果與預期結果不符,而後在此基礎上可進一步分析是什麼錯誤。

6.2 軟體測試技術

軟體測試技術可分為兩大類:一類是白盒測試技術,又稱為結構測試技術,典型的是路徑測試技術;另一種是黑盒測試技術,又稱為功能測試技術,包括事務處理流程技術、狀態測試技術、定義域測試技術等。白盒測試技術依據的是程式的邏輯結構,而黑盒測試技術依據的是軟體行為的描述。

6.2.1 路徑測試技術

由於路徑測試技術依據的是程式的邏輯結構,因此該技術的基本要點是:

(1)採用控制流程圖來表達被測程式模型,揭示程式中的控制結構。

(2)通過合理選擇一組穿過程式的路徑,以達到某種測試度量。

1.控制流程圖

控制流程圖是一種表示程式控制結構的圖形化工具,其基本元素時過程塊(簡稱過程)、節點、判定。

過程塊是沒有被判定和(或)被分開的一組程式語句。

判定是乙個程式點,此處控制流出現分叉。

節點也是乙個程式點,此處控制流進行結合。

鏈是過程塊、判定、節點之間一種具有特定語義的關係,其中的語義是通過它們的執行而體現出來的。

2.測試策略

(1)路徑覆蓋(px)。執行所有可能穿過程式控制流程的路徑。一般情況下,這一測試嚴格地限制為所有可能的入口/出口路徑。在路徑測試中,該度量是最強的,一般是不可實現的。

(2)語句覆蓋(p1)。至少執行程式中所有語句一次。如果遵循這一規定,則達到了100%的語句覆蓋率(用c1表達)。

(3)分支覆蓋(p2)。至少將程式中的每乙個分支執行一次。如果遵循這一規定,則達到了100%分支覆蓋率(用c2表達)。

(4)條件覆蓋與條件組合覆蓋。

條件覆蓋是指每個判定中的所有可能條件的取值至少執行一次。如果遵循這一規定,則實現了條件覆蓋。

條件組合覆蓋是指涉及足夠的測試用例,使每個判定中的所有可能的條件取值組合至少執行一次。

3.路徑選取與用例設計

在ieee單元測試標準中,最小的強制性測試需求是語句覆蓋率。

在路徑選取上,其一般原則是:

1)選擇最簡單的、具有一定功能含義的入口/出口路徑。

2)在已選取的基礎上,選取無迴圈的路徑;選取短路徑、簡單路徑。

3)選取沒有明顯功能含義的路徑,此時要研究這樣的路徑為什麼存在,為什麼沒有通過功能上合理的路徑得到覆蓋。

在實際測試中,對迴圈結構中的路徑選取,由於其中路徑的不確定性,因此一般需要特殊處理。迴圈結構可分為單迴圈、巢狀迴圈、級聯迴圈和混雜迴圈。由於迴圈結構的錯誤容易發生在控制變數的邊界上,因此應針對不同型別的迴圈給出相應的路徑選取規則。

(1)單迴圈

(2)巢狀迴圈

(3)級聯迴圈。如果在退出某個迴圈以後到達另乙個迴圈,且還在同一入口/出口路徑上,則稱這兩級迴圈是級聯的。

關於級聯迴圈,其路徑選取可以採用以下原則:

1)如果級聯迴圈中每個迴圈的控制變數有關,則可視為巢狀迴圈。

2)如果級聯迴圈中每個迴圈的控制變數無關,則可視為單迴圈。

6.2.2 基於事務流的測試技術

基於事務流的測試技術是一種功能測試技術,以下簡稱事務流測試技術。目前,提出了很多功能測試技術,如定義域測試技術、等價類測試技術以及基於因果圖的測試技術等,統稱為黑盒測試技術。黑盒測試將被測軟體看成黑盒子,只通過外部的輸入輸出來發現軟體中的錯誤,因此黑盒測試是一種基於軟體規約的測試。

1.事務與事務流程圖

在事務流測試技術中,採用事務流程圖作為表達被測軟體模型的工具。

其中有操作、分支、節點和鏈。

乙個事務是指從系統使用者的角度出發所見到的乙個工作單元,有其「生」,有其「亡」。

6.2.3 其他功能測試技術簡述

黑盒測試完全不考慮程式的內部結構,而對軟體功能規約或使用者手冊所列的功能以及與功能相關的效能進行測試,包括對正常和異常的輸入(或操作)、出錯處理、邊界情況合極端情況等進行測試。

1.等價類劃分

等價類劃分方法是把軟體所有可能的輸入資料,即軟體的輸入域劃分成若干部分,形成一些等價類,即在乙個部分中各個輸入資料對於發現軟體中的錯誤的概率是一樣的,然後每一部分中選取資料作為測試用例,進行軟體測試。

劃分等價類的方法是根據每個輸入,找出兩個或更多的等價類並將其列表。

(1)劃分等價類。對於等價類劃分,人們從實踐角度,經常從有效和無效的角度對輸入資料進行等價類劃分。

有效類是值對於程式的規格說明來說,是合理的、有意義的輸入資料集合。利用它,可以檢驗程式是否實現了規格說明預先規定的功能和效能。

無效等價類是指對於程式規格說明來說,是不合理的、無意義的輸入資料集合。這一類測試用例主要用於檢查程式中功能和效能的實現是否不符合規格說明的要求。

(2)設計測試用例。在確立了等價類之後,建立等價類表,並列出所有劃分出的等價類。

2.邊界值分析

邊界值分析是一種常用的黑盒測試技術。測試工作經驗表明,大量錯誤經常發生在輸入或輸出範圍的邊界上。因此,使用等於、小於或大於邊界值的資料對程式進行測試,發現錯誤的概率較大。因此,在設計測試用例時應選擇一些邊界值,這就是邊界值分析測試技術的基本思想。

邊界值分析與等價類劃分技術的區別在於:邊界值分析著重與邊界的測試,應選擇等於、剛剛大於或剛剛小於邊界的值作為測試資料;而等價類劃分是選取等價類中的典型值或任意值作為測試資料。

3.因果圖

因果圖是設計測試用例的一種工具,它著重檢查各種輸入條件的組合。而前面介紹的等價類和邊界值分析,由於沒有考慮輸入條件組合的情況,所以都不能發現這類錯誤。

要檢查輸入條件的組合,應首先把所有輸入條件劃分成等價類,他們之間的組合情況也相當多。而通過因果圖,可以把用自然語言描述的功能說明轉換為判定表,最後利用判定表來檢查程式輸入條件的各種組合情況。

因果圖測試技術是通過為判定表的每一列設計乙個測試用例,從而實現測試用例的設計與選擇的。

6.3 軟體測試步驟

6.3.1 單元測試

單元測試主要檢驗軟體設計的最小單元——模組。該測試以詳細設計文件為指導,測試模組內的重要控制路徑。一般來說,單元測試往往採用白盒測試技術。

6.3.2 整合測試

整合測試是軟體組裝的乙個系統化技術,其目標是發現與介面有關的錯誤,將經過單元測試的模組構成乙個滿足設計要求的軟體結構。

整合測試可「自頂向下」地進行,稱為自頂向下的整合測試;也可以「自底向上」地進行,稱為自底向上的整合測試。

一般來說,整合測試是以主控模組作為測試驅動模組,設計承接模組替代其直接的下屬模組,依據所選取的測試方式(先深度或先寬度),在組合模組時進行測試。每當組合乙個模組時,要進行回歸測試,即對以前的組合進行測試,以保證不引入新的錯誤。

自頂向下和自底向上的整合測試均有缺點。自頂向下的主要缺點是需要設計承接模組以及隨之而帶來的困難。自底向上的主要缺點是只有在加上最後乙個模組時,程式才作為乙個實體而存在。在實際的整合測試中,應根據被測軟體的特性以及工程進度,選取整合測試方法。一般來說,綜合地運用這兩種方法,即在軟體的較高層使用自頂向下的方法,而在低層使用自底向上的方法,可能是一種最好的選擇方案。

6.3.3 有效性測試

有效性測試的目標是發現軟體實現的功能與需求規格說明書不一致的錯誤。因此,有效性測試通常採用黑盒技術。為了實現有效性測試,制訂的測試計畫應根據採用的測試技術給出要進行的一組測試,並給出測試用例和預期結果的設計。

6.4 本章小結

軟體測試不但在開發中使用,而且在驗證和確認的動態分析中也經常使用。動態分析是指執行程式的分析,測試為動態分析提供了必要的資訊 。

軟體測試 第六章

回歸測試 效能測試 安全性測試 系統測試 將經過整合測試後的軟體,作為計算機系統的一部分,與計算機硬體 某些支援軟體 資料和平台等系統元素結合起來,在真實執行環境下對計算機系統進行一系列的嚴格有效的測試來發現軟體的潛在問題,保證系統的正常執行。目的 充分執行系統,驗證整個系統是否滿足功能和非功能性的...

第六章 軟體測試

軟體測試 在程式設計師對每乙個模組的編碼之後先做程式測試,再做單元測試,然後在進行整合測試,系統測試,驗收 確認 測試,平行測 試,人工測試,其中單元測試的一部分在編碼階段就開始了,測試橫跨開發與測試兩個階段,又有不同的人員參加,測試工作本 身是複雜的。軟體測試目的 測試是程式的執行過程,目的在於發...

第六章測試

1.考慮乙個在有20millisecs往返時間路徑上的tcp流。假設它處於超過閾值的增大階段,在時間t 100ms與t 120ms間傳送10個資料段。流在t 140ms和t 160ms之間傳輸的資料段預期有多少 假設在此階段沒有資料段丟失 答案 12 2.tcp和udp的著名埠號的範圍是多少?答案 ...