- 高性能Java架構:核心原理與案例實戰
- 張方興編著
- 1946字
- 2021-10-15 18:26:07
1.9 單元測試
單元測試需關注的點如下:
? 單元測試是持續集成的,即在某次改動之后,之前的單元測試仍然可以使用,本次改動的代碼同樣需要放置在單元測試中。
? 單元測試不應依賴其他單元測試所返回的數據,單元與單元之間應相對獨立。
? 單元測試不應過度依賴外部不確定的資源,例如數據庫、外部接口等,最好能夠隨時運行單元測試,隨時知道結果。部分外置接口和資源存在不確定性,可能導致自動化測試斷言出現異常,需要費心調整。
? 單元測試的結果應當是真實的,并且有意義,不要為了通過測試而做單元測試。
? 單元測試應在代碼覆蓋率高的基礎上,通過持續集成、自動化測試等,更加方便地了解項目,以及了解新增加的代碼對當前項目的影響。
? 在實際工作中單元測試代碼通常由開發人員編寫,測試人員與開發人員都會對其進行使用,不要把這部分的測試任務完全交由測試人員。基礎的單元測試、性能測試與滲透測試應當由開發人員自身先審查。
? 單元測試的代碼重要程度與源碼相同,不要因為單元測試放在了不同的文件里而去隨意命名,這會導致許多測試在不加管理之后變得完全看不懂。
下面介紹單元測試用例的設計方法。
1.9.1 等價類劃分
等價類劃分指的是一種典型的、重要的黑盒測試方法,它可以解決如何選擇適當的數據子集來代表整個數據集的問題。它通過降低測試的數目實現“合理的”覆蓋,以此發現更多的軟件缺陷,在統計好數據后,再對軟件進行改進升級。
等價類劃分的方法是把程序所有可能的輸入數據(有效的和無效的)劃分成若干等價類,然后從每部分中選取具有代表性的數據當作測試用例進行合理的分類。測試用例由有效等價類和無效等價類的代表組成,從而保證測試用例的完整性和代表性。
利用這一方法設計的測試用例可以不考慮程序的內部結構。以需求規格說明書為依據,選擇適當的典型子集,認真分析和推敲說明書中的各項需求,特別是功能需求,要盡可能多地發現錯誤。等價類劃分是一種需要系統性輸入測試條件的方法。
由于等價類劃分是在需求規格說明書的基礎上劃分數據的,不僅可以用來確定測試用例中數據輸入、輸出的精確取值范圍,還可以用來準備中間值、狀態和與時間相關的數據及接口參數等,所以在系統測試、集成測試和組件測試中,在有明確的條件和限制的情況下,利用等價類劃分可以設計出完備的測試用例。這種方法可以減少設計一些不必要的測試用例,因為這種測試用例一般使用相同的等價類數據,使測試對象能夠得到同樣的反應和行為。
等價類劃分可分為兩個主要步驟,即劃分等價類型和設計測試用例。有效等價類數據集的示例如下:
? 終端用戶輸入的命令。
? 與最終用戶交互的系統提示。
? 接受的用戶文件的名稱。
? 提供初始化值和邊界等。
? 提供格式化輸出數據的命令。
? 圖形模式(比如在鼠標單擊時)提供的數據。
? 失敗時顯示的消息。
無效等價類數據集的示例如下:
? 在一個不正確的地方提供值。
? 驗證邊界值。
? 驗證外部邊界值。
? 用戶輸入的命令。
? 最終用戶與系統交互的提示。
? 驗證與邊界和外部邊界值的數值數據。
等價類劃分的示例如下:
? 按區間劃分。
? 按數值劃分。
? 按數值集合劃分。
? 按限制條件或規劃劃分。
? 按處理方式劃分。
1.9.2 邊界值分析
邊界值分析就是對輸入或輸出的邊界值進行測試的一種黑盒測試方法。通常來說,邊界值分析是對等價類劃分的補充,在這種情況下,其測試用例來自等價類的邊界。
實際上,大量的錯誤都發生在輸入或輸出范圍的邊界上,而不是發生在輸入或輸出范圍的內部。因此針對各種邊界情況設計測試用例,可以查出更多的錯誤。
與等價類劃分的區別如下:
? 邊界值分析不是從某等價類中隨便挑一個作為代表,而是等價類的每條邊界都要作為測試條件。
? 邊界值分析不僅要考慮輸入條件,還要考慮輸出空間產生的測試情況。
邊界值分析的示例如下所示:
? int、long等數值類型的邊界。
? string最大長度或最小長度的邊界。
? 數據返回第一行和最后一行的邊界。
? 數組元素第一行和最后一行的邊界。
? 屏幕像素點最上方、最下方、最左方、最右方的邊界。
? 做除法后無限循環的最后一位是否限制。
1.9.3 錯誤推測法
錯誤推測法指在測試程序時,可以根據經驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例的方法。錯誤推測法的示例如下:
? 姓名處是否可以輸入空白字符串或null等。
? 手機號、身份證號的正確性驗證。
? 性別、年齡處是否可以輸入不合法字符。
? 正常程序只能登錄一個賬號,當前程序是否可以打開多個頁面分別登錄不同的賬號。
? 手機和Web在秒殺系統高并發的設計下是否只有一個終端可以進行搶購。
? Web與App是否構建了良好的防抓包、防爬蟲處理。
除此之外,單元測試用例的設計方法還有因果圖法和正交表分析法。因果圖與流程圖相似,它以圖解的方式表示輸入的各種組合關系,從而設計相應的測試用例。正交表分析法指將測試用例的影響因子制作成二維表結構的正交表。
- C++面向對象程序設計(第三版)
- 控糖控脂健康餐
- Rust Cookbook
- 21天學通C++(第6版)
- Unity Shader入門精要
- 人人都是網站分析師:從分析師的視角理解網站和解讀數據
- Linux命令行與shell腳本編程大全(第4版)
- Arduino電子設計實戰指南:零基礎篇
- Python Automation Cookbook
- Node.js應用開發
- Python Penetration Testing Essentials
- 信息學奧林匹克競賽初賽精講精練
- Ionic Framework By Example
- Python自動化開發實戰
- Image Processing with ImageJ(Second Edition)