軟件測試基礎 (二)—— 測試用例
一、 什么是測試用例
測試用例是為某個特殊目標而編制的一組測試輸入、執行條件以及預期結果,以便測試某個程序路徑或核實是否滿足某個特定需求。
二、為什么要寫測試用例
-
深入理解需求,理請思路,避免遺漏測、重復測,發現需求中的問題,提高測試效率
-
跟進測試進度,簡單計算 執行測試的完成度= 執行的測試用例/未執行的測試用例
-
歷史參考,功能相似的模塊可以參考歷史用例,給新來的同事快速熟悉業務
三、測試用例的設計
用例的要素:
-
用例編號
-
所屬項目
-
用例標題
-
用例級別
-
前置條件
-
輸入
-
操作步驟
-
預期結果
用例的3A原則(最不可缺的用例要素有哪幾個)
- Arrange: 初始化測試對象或者准備測試數據 —— 前置條件/數據
- Act : 調用被測方法 —— 用例執行步驟(操作步驟)
- Assert: 斷言 —— 預期結果
黑盒測試:設計和執行測試過程中,不考慮被測程序內部的結構,將被測程序視作不透明的黑盒子,只考慮輸入內容和輸出結果,發現軟件的缺陷的過程
黑盒測試的方法:
- 等價類
- 邊界值
- 判定表
- 因果圖
- 正交法
- 場景法
- 錯誤推斷法
3.1 等價類
等價類划分
-
將程序所有可能的輸入進行合理分類,再從每一個分類中選取少數具有代表性的數據作為測試用例。
-
有效等價類:符合需求說明的,合理的輸入數據的集合
-
無效等價類:不符合需求說明的,無意義的輸入數據的集合
等價類設計用例步驟
- 划分有效等價類和無效等價類
- 為等價類表中的每一個等價類分別規定一個唯一的編號
- 設計一個新用例,使它能夠盡量多覆蓋尚未覆蓋的有效等價類。重復該步驟,直到所有的有效等價類均被用例覆蓋
- 設計一個新用例,使它僅覆蓋一個尚未覆蓋的無效等價類。重復該步驟,直到所有的無效等價類均被覆蓋
有效等價類 | 編號 | 無效等價類 | 編號 |
---|---|---|---|
1 ~ 100 整數 | (1) | 1 ~ 100 小數 | (2) |
- | 小於1的數字 | (3) | |
- | 大於100的數字 | (4) | |
- | 字母 | (5) | |
- | 特殊符號 | (6) | |
- | 中文 | (7) | |
- | 空 | (8) | |
- | 負數 | (9) |
3、設計一個新用例,使它能夠盡量多覆蓋尚未覆蓋的有效等價類。重復該步驟,直到所有的有效等價類均被用例覆蓋
4、設計一個新用例,使它僅覆蓋一個尚未覆蓋的無效等價類。重復該步驟,直到所有的無效等價類均被覆蓋
用例編號 | 覆蓋等價類 | 輸入 | 預期結果 |
---|---|---|---|
1 | (1) 1 ~ 100 整數 | 50 | 系統提示輸入正確 |
2 | (2) 1 ~ 100 小數 | 50.1 | 系統提示:請輸入1~100的整數 |
3 | (3) 小於1的數字 | 0 | 系統提示:請輸入1~100的整數 |
4 | (4) 大於100的數字 | 150 | 系統提示:請輸入1~100的整數 |
5 | (9) 負數 | -50 | 系統提示:請輸入1~100的整數 |
6 | (6) 特殊符號 | @#¥%…… | 系統提示:請輸入1~100的整數 |
7 | (7) 中文 | 測試中文輸入 | 系統提示:請輸入1~100的整數 |
8 | (5) 字母 | a | 系統提示:請輸入1~100的整數 |
9 | (8) 空 | 系統提示:請輸入1~100的整數 |
3.2 邊界值
對輸入或輸出的邊界值進行測試
特點:
- 不是從一個等價類中任選一值做代表,而是尋一個或幾個值,使得該等價類的邊界值成為測試關注的目標
- 邊界值分析法作為對等價類划分法的補充
- 邊界值分析法不僅關注輸入條件,它還根據輸出的情況(輸出等價類)設計測試用例;例如:計算結果的小數點精確位數
3.3 判定表
判定表是分析和表達多邏輯條件下執行不同操作的工具。將復雜的問題按照各種可能的情況全部列舉出來,某些操作的實施依賴於多個邏輯條件的組合,針對不同邏輯條件的組合值,分別執行不同的操作
-
條件樁:需求規格說明書定義的被測對象的所有輸入
-
條件項:針對條件樁可能輸入數據值
-
動作樁:針對條件,被測對象可能采取的所有操作
-
動作項:針對動作樁,被測對象相應的可能取值
規則:任何一個條件組合的特定取值及其相應要執行的操作稱為規則。
化簡:就是把相同規則進行合並。合並的標准是,有兩條或多條規則具有相同的動作,並且其條件項之間存在着極為相似的關系
需求:訂購單的檢查規則為:若金額超過600元,又未過期,則發出批准單和提貨單;若金額超過600元,但過期了,則不發批准單;如果金額低於600元,則不論是否過期都發出批准單和提貨單,在過期的情況下還需發出通知單。(沒有批准單就沒有提貨單)
列出所有條件樁和條件項
條件樁 | 條件項 |
---|---|
訂購金額是否大於600元 | Y —>大於600元 |
N —>小於600元 | |
訂單是否過期 | Y —>訂單過期 |
N —>訂單沒過期 |
列出所有的動作樁和動作項
動作樁 | 動作項 |
---|---|
發出批准單 | X |
發出提貨單 | X |
發出通知 | X |
生成判定表(先條件組合,再看結果)
簡化判定表
刪除序號1組合
3.4、因果圖
用圖解的方法表示輸入的各種組合關系,寫出判定表,從而設計相應的測試用例。 適用范圍:適用於分析程序輸入條件的各種組合情況,以及輸入與輸出之間的依賴關系。
- 因果圖的“因”——輸入條件
- 因果圖的“果”——輸出結果
使用步驟
-
根據程序規格說明書描述的語義內容,分析並確定 “因” 和 “果”;
-
將 “因” 和 “果” 表示成 “因果圖”;
-
在因果圖上使用若干個約束符號來標明約束條件;
-
將得到的因果圖轉換成判定表;
-
為判定表中每一列所表示的情況設計一個測試用例。
因果圖
3.5、正交法
因果圖和判定表:依據方法中的主要思想,同類輸人間不可同時發生,不同類型輸人間必須同時存在其中之一 ,所以將需求中的各項輸入分別組合一一遍。常常不可避免地產生一個非常龐大的組合數字,不合實際情形,如3X3X3X3=81次組合(全排列)
正交試驗法即使用事先已創建好的表格一正交表,來安排試驗並進行數據分析的一種科學試驗設計方法,借助正交表可從大量的試驗數據(測試用例)中篩選出適量的、有代表性的值,從而協助合理地安排試驗(測試),滿足了“在簡化用例的同時盡量充分開展測試”的需求。
3.6 、場景法
盡可能真實模擬用戶操作的一種用例設計分析方法
場景法主要基於 2 個層面開展
- 業務(需求)層面:對被測軟件的重要功能、業務邏輯(系統要實現什么、如何實現?)、行業背景深入理解
- 技術層面:基於等價類划分中的有效等價類——模擬用戶正確操作;無效等價類——模擬用戶錯誤操作
核心概念:
-
基本流(正確流、有效流):模擬用戶正確的操作流程
-
備選流(錯誤流、無效流):模擬用戶錯誤的操作流程
設計步驟
- 根據說明,描述出程序的基本流及各項備選流
- 根據基本流和各項備選流生成不同的場景
- 對每一個場景生成相應的測試用例
- 對生成的所有測試用例重新審核,去掉多余的測試用例,測試用例確定后,對每一個測試用例確定測試數據值
3.7 錯誤推測法
基於經驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設計測試用例的方法。
參考文章和推薦閱讀
《軟件測試技術及用例設計實訓》