4.2黑盒測試技術
4.2.1 等價類劃分 等價類劃分將資料劃分為幾類(也稱為等價類),同一個分類中所有成員都以同樣的方式處理(參見Kaner 2013和Jorgensen 2014)。等價類分為有效值和無效值。 • 有效值指的是元件或系統應該接受的值。包含有效值的等價類稱為“有效等價類”。 • 無效值指的是元件或系統應該拒絕的值。包含無效值的等價類稱為“無效等價分類”。 • 可以為與測試物件有關的任何資料元素,包括輸入、輸出、內部值、與時間有關的值(例如:事件之前或之後)和介面引數(例如:整合測試期間正在測試的整合元件)確定分類。 • 假如需要,任何分類可以分成子分類。 • 每個值必須屬於一個且僅屬於一個等價類。 • 當測試用例中使用無效等價類時,它們應單獨進行測試,即不應與其他無效等價類組合,以確保不遮蔽失效。當幾個失效同時發生,但只有一個是可見的,導致無法發現其他失效,這就是缺陷遮蔽。 為了達到該技術的100%覆蓋,測試用例必須從通過每個分類至少選擇一個值來覆蓋所有已識別的分類(包括無效分類)。覆蓋率是以至少通過一個值測試的等價類的數目,除以識別的總的等價類數目進行度量,通常以百分比表示。等價類劃分適用於所有測試級別。 4.2.2 邊界值分析 邊界值分析(BVA)是等價類劃分的擴充套件,但只能在分類有序時使用,由數字或順序資料組成。分類的最小值和最大值(或第一個和最後一個值)屬於分類的邊界值(Beizer 1990)。 例如:假設輸入欄位接受單個整數值作為輸入,使用鍵盤限制輸入,使得非整數輸入是不可能的。有效範圍為1至5的閉區間。因此,存在三個等價類:無效(值太小);有效;無效(值太大)。對於有效的等價類,邊界值為1和5。對於無效分類(值太大),邊界值為6和9。對於無效分類(值太小),只有一個邊界值,即0,因為這是一個只有一個成員的分類。 在上面的例子中,我們識別每個邊界的兩個邊界值。無效(值太小)和有效之間的邊界給出了測試值0和1。有效和無效(值太大)之間的邊界給出了測試值5和6。這種技術的一些變體識別了每個邊界的三個邊值:邊界之前、邊界上和超過邊界的值。在前面的例子中,使用三點邊界值,下邊界測試值為0、1和2,上邊界測試值為4、5和6(Jorgensen 2014)。 等價類邊界上的行為比等價類內的行為更可能是不正確的。記住這點是重要的:要求和實現的邊界可能被轉移到其預定位置上面或下面,可能被完全省略,或者可能被不需要的額外邊界所補充。通過強制軟體展示邊界值所屬分類以外的分類的行為,邊界值分析和測試將發現幾乎所有此類缺陷。 邊界值分析可應用於所有測試級別。該技術一般用於測試涉及數字範圍(包括日期和時間)的需求。分類的邊界覆蓋是以已測試的邊界值的數目,除以已識別的總的邊界測試值進行度量,通常以百分比表示。 4.2.3 決策表測試 組合測試技術對於測試系統需求的實現很有用,這些需求描述了條件的不同組合如何導致不同的結果。該種測試的一種方法是決策表測試。 決策表是記錄複雜業務規則的好方法,這些規則是系統必須實現的。建立決策表時,測試人員識別系統的條件(通常是輸入)和由此產生的動作(通常是輸出)。它們構成決策表的行,通常條件在上,動作在下。 每一列對應於一條決策規則,該規則定義了導致執行與該規則相關動作的唯一條件組合。條件和動作的值通常以布林值(真或假)或離散值(如紅、綠、藍)表示,但也可以是數字或數字的範圍。這些不同型別的條件和動作可以在同一個表中找到。 決策表中常見的符號如下: 針對條件: • Y表示條件為真(也可以用T或1表示) • N表示條件為假(也可以用F或0表示) • - 表示條件的值不滿足(也可以用N/A表示) 針對動作: • X表示應該發生的動作(也可以用Y或T或1表示) • 空白表示動作不會發生(也可以顯示為-或N或F或0) 完整的決策表有足夠的列來涵蓋各種條件的組合。可以通過刪除包含不可能的條件組合的列、包含可能但不可行的條件組合的列以及測試不影響結果的條件組合的列,精簡化決策表。有關如何精簡化決策表的更多資訊,請參見ISTQB-ATA高階測試分析師大綱。 常見的決策表測試最低覆蓋標準是每個決策表規則至少對應一個測試用例。這通常涉及到所有條件的組合。覆蓋率是以至少有一個測試用例測試的決策規則數,除以決策表規則的總數,通常以百分比來表示。 決策表測試的優點是它有助於識別所有重要的條件組合,其中一些可能被忽略。它還有助於發現任何需求中的差距。它適用於軟體行為依賴於條件組合的所有情況,可以用於所有測試級別。 4.2.4 狀態轉換測試 元件或系統會對同一個事件有不同的反應,依賴於當前條件或以前的歷史(例如:自系統初始化以來發生的事件)。以往的歷史可以用狀態的概念來概括。狀態轉換圖顯示了可能的軟體狀態,以及軟體如何進入、退出和狀態之間的轉換。轉換是由事件(例如:使用者在欄位中輸入數值)觸發的。該事件觸發了一個轉換。如果同一事件可以觸發來自相同狀態的兩個或多個不同的轉換,則該事件可能由一個守護條件所限制。狀態的改變可能觸發軟體採取行動(例如輸出計算或錯誤資訊)。 狀態轉換表可以顯示所有有效的轉換和狀態之間可能無效的轉換,以及事件、守護條件和有效轉換觸發的動作。狀態轉換圖通常只顯示有效的轉換,同時排除無效的轉換。 設計的測試可以是覆蓋一個典型的狀態序列,執行所有的狀態,執行每一個轉換,執行特定的轉換序列,或者測試無效的轉換。 狀態轉換測試可以用於基於選單的應用,並在嵌入式軟體行業中得到廣泛應用。該技術也適用於模擬具有特定狀態的業務場景或測試螢幕導航。狀態的概念是抽象的——它可能表示幾行程式碼或整個業務流程。 覆蓋率通常以所測試的被識別的狀態或轉換數目,除以測試物件的狀態或轉換的總數,通常以百分比表示。有關狀態轉換測試的覆蓋標準的更多資訊,請參見ISTQB-ATA高階測試分析師大綱。 4.2.5 用例測試 測試可以從用例中推匯出來,用例是用來設計軟體項之間互動的一種特殊方式,包含了用例所代表的軟體功能的需求。用例關聯了參與者(使用者、外部硬體或其他元件或系統)和物件(用例所應用的元件或系統)。 每個用例描述了物件可以與一個或多個參與者協作執行的一些行為(UML 2.5.1 2017)。只要合適,用例可以用互動和活動來描述,也可以用前置條件、後置條件和自然語言來描述。參與者與物件之間的互動可能會觸發物件狀態的改變。互動也可以通過工作流、活動圖或業務流程模型的圖形表示。 用例包括其基本行為的可能變化,包括異常行為和錯誤處理(系統對程式設計、應用和通訊錯誤的響應和恢復,例如:觸發錯誤訊息)。設計的測試是為了驗證已定義的行為(基本的、異常的或替代的,以及錯誤處理)。覆蓋範圍可以用已測試的用例行為除以總的用例行為進行測量,通常以百分比表示。 有關用例測試的覆蓋標準的更多資訊,請參見ISTQB-ATA高階測試分析師大綱。