測試設計與測試用例
測試設計:將概括的測試目標轉化為具體的測試條件和測試用例的一系列活動
測試分析和設計的主要任務
- 評審測試依據(需求、系統架構、設計和介面說明)
- 評估測試依據和測試物件的可靠性
- 通過對測試項、規格說明、測試物件行為和結構的分析,識別測試條件並確定優先順序
- 設計測試用例,並確定優先順序
- 確定測試條件和測試用例所需的必要測試資料
確定測試條件
- 依據在測試策劃或者測試計劃中確定的測試技術
- 通過對策是依據與測試目標的分析,可以確定需要測試的內容,獲得測試條件
測試用例:
通過使用在測試計劃中確定的測試技術與測試方法,對於已確定的測試條件進行逐步推敲,精煉而設計出來的,重點說明如何具體操作,產生何種結果的文件
- 特點:可重複性,可驗證性,需求可追蹤性
設計的關鍵點:
- 前提條件:如專案或區域性測試環境的需求,及其交付計劃
- 測試步驟:可還原,可檢測,不可有歧義
- 測試資料
- 預期結果
設計方法:
- 等價類劃分法
- 邊界值法
- 因果圖設計法
- 判定表設計法
- 正交實驗法
- 場景法
等價類劃分法
定義:把程式的輸入域劃分成若干部分,再從每個部分中選取少數代表性資料當做測試用例,每一類的代表性資料在測試中的作用等價於這一類中的其他值
劃分原則:
- 如果輸入條件規定了取值的範圍或者值的個數,則可確定一個有效等價類和兩個無效等價類
- 對立關係:如果一個輸入條件說明了一個 “必須成立”的情況,則可劃分一個有效等價類和一個無效等價類
- 如果輸入條件規定了輸入資料的一組可能的值,而且程式是用不同的方式處理每一種值,則可為每一種值劃分一個有效等價類,並劃分一個無效等價類
- 如果已明確,已劃分的某等價類中的各元素在程式中的處理方式是不同的,則應據此等價類進一步劃分成更小的等價類
設計步驟
- 明確測試物件,非測試物件保證正確
- 為每一個等價類規定一個唯一的編號
基於等價類劃分的用例設計
- 設計一個新的測試用例,使其儘可能多地覆蓋尚未覆蓋的有效等價類,重複這一步,最後使得所有有效等價類均被測試用例所覆蓋
- 設計一個新的測試用例,使其只覆蓋一個無效等價類。重複這一步,使所有無效等價類均被覆蓋
等價類的特點
- 測試相同的內容
- 如果等價類中的一個測試能夠捕獲一個缺陷,那麼選擇該等價類中的其他測試也能捕獲該缺陷
- 如果等價類中的一個測試不能捕獲缺陷,那麼選擇該等價類中的其他測試也不會捕獲缺陷
- 如果正確的劃分等價類,可以大大降低測試用例的數量,測試會準確有效
- 如果錯誤地將兩個不同的等價類當做一個等價類,那就會遺漏一種測試情況
- 相反,把同一個等價類看作兩個不同的等價類,那麼測試就會是冗餘的
注意事項:
- 不但要考慮有效等價類,也要考慮無效等價類
- 仔細劃分,審查劃分
- 過於粗略可能會遺漏掉軟體缺陷
- 組織評審
邊界值法
定義:是一種補充等價劃分的測試用例設計技術,它不是選擇等價類的任意元素,而是選擇等價類邊界的測試用例
邊界值設計的原則
- 如果輸入條件規定了取值範圍,應以該範圍的邊界內及剛剛超範圍的邊界外的值作為測試用例
因果圖法與判定表
因果圖法
用來處理等價類劃分和邊界值考慮不到的情況,因為這兩種方法都是著重考慮輸入條件,而不考慮輸入條件的各種組合,輸入條件之間的相互制約關係因果圖法,適合用於描述多種條件的組合,產生多個相應動作的測試方法;從程式規格說明書的描述中找出因果關係
判定表
定義:是分析和表達多邏輯條件下執行不同操作的工具
組成部分:
- 條件樁:列出了問題的所有條件,通常認為列出的條件次序無關緊要
- 動作樁:列出了問題規定可能採取的操作,這些操作的排序順序沒有約束
- 條件項
- 動作項
設計步驟:
- 分析軟體規格說明中的因果,並給每個原因和結果賦予一個識別符號
- 分析軟體規格說明中語義的內容,找出原因與結果之間、原因與原因之間對應的關係,根據這些關係畫出因果圖
- 由於語法或環境的限制,有些原因與原因之間、原因與結果之間的組合情況不可能出現。為表明這些特定情況,在因果圖上使用一些記號表明約束或限制條件
- 把因果圖轉換為判定表
- 根據判定表的每一列設計測試用例
正交實驗法
定義:是從大量的實驗點中挑選出適量的、有代表性的點,應用依據伽羅卡瓦理論匯出的正交表,合理地安排實驗的一種科學的試驗設計方法
相關引數:指標、因子、因子的狀態
設計步驟:
- 提取功能說明,構造因子狀態表
- 加權篩選,生成因素分析表
- 利用正交表構造測試資料集
- 利用正交表每行資料構造測試用例
測試場景設計
場景法設計步驟:
- 根據說明,描述出程式的基本流及各項備選流
- 根據基本流和各項備選流生成不同的場景
- 對每一個場景生成相應的測試用例
- 對生成的所有測試用例重新稽核,去掉多餘的測試用例,測試用例確定後,對每一個測試用例確定測試資料值
測試用例綜合設計
測試用例項劃分
- 測試用例劃分的經典方法是瀑布模型,從上到下,逐漸細分;大模組包括小模組,小模組包括更小的模組
- 要從更多的角度切入系統,把系統切分成一塊一塊地來進行測試,從而確保測試大項的完整性
切面測試
- 功能點切面:最常見的切面,通常認為頁面上的一個按鈕就是一個功能點。根據功能的複雜程度,按每一個功能進行用例的撰寫
- 隱含切面:完整業務流程的測試。從需求,業務角度進行編寫
功能點用例設計
- 任何情況下都必須使用邊界值分析法,經驗表明,用這種方法設計出測試用例發現程式錯誤的能力最強
- 必要時用等價類劃分的方法補充一些測試用例
- 如果程式的功能說明中含有輸入條件的組合情況,則一開始就可選用因果圖法
- 如果程式業務複雜度比較高,則適當使用場景法補充一部分測試用例