專案必備技術之單元測試
1.什麼是單元測試?
- 單元測試是指對軟體中最小可測試單元進行檢查和驗證,通常而言,一個單元測試是用於判斷每個特定條件(或場景)下某個特定函式的行為,單元測試是由開發者編寫的。執行單元測試就是為了證明編寫的功能程式碼與我們期望保持一致。
- 引申概念:方法級測試
- 針對每一個單獨的小方法,在與程式其他部分相隔離得情況下進行測試,輸入引數,校驗出引數是否合乎預期,因此,不測資料庫操作,不測網路連線,不測依賴呼叫,以上場景全部mock掉。
2.測試的流程
-
自頂向下
-
自底向上
3.為什麼要進行單元測試?
- 主要原因在於“左移”問題的發現與修復
- 越早發現問題越好
- 其中藍色的曲線是軟體研發生命週期過程中缺陷的引入情況,從圖中我們可以看到,缺陷在最初的編碼階段是引入最多的
- 黃色的實線是傳統的開發模式下問題的修復和發現情況,可以看到很多缺陷其實是後期階段才能發現的
- 紫色的曲線是缺陷修復的成本,修復的成本卻是隨著軟體生命週期的推進指數級上升
- 所以針對這種普遍存在的行業痛點,採用左移的方式,從一開始就避免缺陷和相關問題的引入,可以極大程度的保障軟體質量,減少缺陷修復成本,同時加速交付流程。
4.我們能從單元測試中得到什麼?
- 測試更加充分
- bug修復代價最少
- 程式碼自review
- 程式碼功能更具易用性
- 迴歸測試
- 快速定位bug
5.白盒測試技術
6.動態單元測試技術
-
語句覆蓋:
- 程式中每條語句至少被執行一次
- 特點:可以很直觀的從原始碼中測到測試用例,無須細分每條判定表示式
- 缺點:隱式邏輯分支無法測試
-
判定覆蓋:
- 每個判定至少有一次為真值,有一次為假值,即:程式中的每個分支至少執行一次,每個判斷的取真、取假至少執行一次
- 特點:覆蓋強度幾乎增大一倍,測試用例簡單
- 缺點:關注焦點是表示式邏輯值,而不是其中的每個條件,可能會遺漏部分測試路徑
-
條件覆蓋:
- 設計足夠多的測試用例,使得判定中的每個條件獲得各種可能的結果,即每個條件至少有一次為真值,有一次為假值
- 特點:相對於判定覆蓋,增加了對符合判定情況的測試,增加了測試路徑
- 缺點:需要足夠多的測試用例,條件覆蓋並不能保證判定覆蓋,測試用例低效
-
判定/條件覆蓋
- 設計足夠多的測試用例,使得判定中每個條件的所有可能結果至少出現一次,每個判定本身所有可能結果也至少出現一次
- 特點:滿足判定覆蓋準則和條件覆蓋準則,彌補了二者的不足
- 缺點:未考慮條件的組合情況,容易漏,會忽略條件中取或的情況
-
組合覆蓋:
- 使得每個判定條件結果的所有可能組合至少出現一次
- 特點:多重條件覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則
- 缺點:線性的增加了測試用例的數量,也不能保證所有路徑被測試
-
路徑覆蓋:
- 覆蓋程式中所有可能的路徑
- 特點:可以對程式進行徹底的測試,比前面五種的覆蓋面都要更加廣
- 缺點:需要設計大量、複雜的測試用例,使得工作量呈指數級增長,特殊路徑無法測試
7.動態單元測試技術方法應用分佈場景
相關文章
- 開發必備之單元測試
- web專案技術必備-------jQuery快速入門WebjQuery
- ☕【Java技術指南】「TestNG專題」單元測試框架之TestNG使用教程指南(上)Java框架
- ☕【Java技術指南】「TestNG專題」單元測試框架之TestNG使用教程指南(下)Java框架
- 測試 之Java單元測試、Android單元測試JavaAndroid
- .NET 專案中的單元測試
- 乾貨 | Dubbo 介面測試技術,測試開發進階必備
- 為vue的專案新增單元測試Vue
- Flutter 初始專案單元測試解讀Flutter
- 程式碼重構與單元測試——測試專案(二)
- 解讀Android官方MVP專案單元測試AndroidMVP
- Go 單元測試之mock介面測試GoMock
- vue2專案,踩坑Jest單元測試Vue
- 怎樣使用Spring Boot專案的單元測試Spring Boot
- 怎樣使用Spring Boot專案的單元測試?Spring Boot
- 四種ABAP單元測試隔離(test isolation)技術
- 推薦一款技術人必備的介面測試神器:ApifoxAPI
- 高階測試工程師必備技術:用Git版本控制自動化測試程式碼工程師Git
- 【vue系列】vue2.0 專案配置 Mocha 單元測試Vue
- Java單元測試神器之MockitoJavaMockito
- Java單元測試技巧之PowerMockJavaMock
- 單元測試:單元測試中的mockMock
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- C# .Net4.0 專案怎麼做單元測試C#
- Apifox 6.7.4 中文版 一款技術人必備的介面測試神器API
- springboot系列文章之使用單元測試Spring Boot
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- Go 單元測試之HTTP請求與API測試GoHTTPAPI
- 進大廠必須要會的單元測試
- 為 IIncrementalGenerator 增量 Source Generator 原始碼生成專案新增單元測試REM原始碼
- SRE 必備知識 - Kafka 探秘之零複製技術Kafka
- Flutter 必備開源專案Flutter
- Python專案維護不了?可能是測試沒到位。Django的單元測試和整合測試初探PythonDjango
- 軟體測試學習教程—【其他必備技術】JAVA異常處理機制Java
- Spring Boot單元測試之服務層測試總結Spring Boot
- 【編測編學】介面測試必備面試題必背(下)面試題
- web前端必備技術有哪些?Web前端
- Java單元測試之JUnit 5快速上手Java