測試員進階技能:如何有效地利用單元測試報告?
為什麼需要單元測試?
從產品角度而言,常規的功能測試、系統測試都是站在產品區域性或全域性功能進行測試,能夠很好地與使用者的需要相結合,但是缺乏了對產品研發細節(特別是程式碼細節的理解)。 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~
從測試人員角度而言,功能測試和系統測試以及其他效能測試等等對測試人員的全域性特性理解能力要求較高,只要測試人員能夠掌握一兩種自動化測試框架基本能夠開展功能、效能自動化測試,但是藉助於測試框架進行研發降低了測試人員對程式碼的掌握、理解要求。
從開發人員角度而言,使用者需求往往並不是具體的、全面的,因此基於使用者需求轉換成開發文件或著針對某個功能編寫開發程式碼往往也存在著侷限性(也即我們常說的bug)。
因此,編寫單元測試可以幫助測試人員更好地理解程式碼細節、提高程式碼開發能力,也能幫助開發人員提前辨識程式碼中可能存在的bug,提高程式碼的容錯能力。
如何制定單元測試報告
良好的單元測試報告能夠幫助測試人員更好地分析、挖掘潛藏的問題。那麼,如何制定單元測試報告呢,從哪些維度出發呢?在這裡我們主要從測試人員角度出發來思考這個問題。
首先,我們需要報告中能夠呈現我們的測試用例數量和測試結果(pass或者fail),以及錯誤細節。
其次,從單元測試本身特點出發,我們需要報告中能夠呈現出針對單元程式碼分支、單元方法等的覆蓋率,更好地幫助我們梳理和測試用例設計的優良。
在此,我們使用surefire-report統計測試用例數量和測試結果,使用jacoco統計單元測覆蓋率(注:本文預設測試用例的執行方式是mvn test)。
1.如何配置 surefire-report 和 jacoco ·surefire-report 配置
配置方法:配置 maven-surefire-plugin 外掛,maven-surefire-plugin 是 maven 預設的 test
執行器,配置方法如下圖所示:
上圖中 testFailureIgnore 表示忽略單元測試中的錯誤繼續構建,<include>**/*Test.java</include> :表示任何子目錄下所有命名以 Test 結尾的 Java 類,<exclude> **/Test*.java </exclude> :表示不執行任何子目錄下所有命名以 Test 開頭的Java 類。
執行方法:使用 mvn test surefire-report:report 即可,會生成在
/target/site/surefire-report.html 測試報告文件。如下圖所示:Tests 顯示總用例數;Errors 指的是程式沒有考慮到的情況,例如異常未能捕捉;Failure 指的是預期的結果與實際執行單元的結果不同所導致,常出現在斷言處;Skipped 表示跳過的測試用例數;Success Rate表示用例成功率(=成功用例數/總用例數);Time 顯示總耗時。Package List 顯示詳細的package 下用例執行結果。
·jacoco 配置
配置方法:配置 jacoco-maven-plugin 外掛,配置方法如下圖所示,phase 表示外掛執行的生命週期階段。
執行方法:mvn test 執行即可。會在/target/site/jacoco/目錄下生成總的覆蓋率報告index.html 和不同 package 的單元測試覆蓋率報告../xxx/index.html。此外還有 csv 和 xml格式的單元測試覆蓋率報告。
如上圖所示為某個 package 的單元測試覆蓋率報告。紅色進度條表未覆蓋,綠色進度條表示已覆蓋,Cov 為總體覆蓋率。missed Instructions 表示程式碼覆蓋率,Missed Branches表示邏輯分支覆蓋率,Missed Cxty 表示判斷執行數,missed Lines 表示程式碼行數,Methods表示方法個數。
最後:
可以到我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。
這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2909874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- go 單元測試進階篇Go
- 前端進階課程之單元測試前端
- 開發人員必備的技能——單元測試
- 利用HSQLDB 進行Hibernate單元測試SQL
- 測試 之Java單元測試、Android單元測試JavaAndroid
- Python單元測試框架pytest常用測試報告型別Python框架測試報告型別
- Pytest單元測試框架生成HTML測試報告及優化框架HTML測試報告優化
- 如何測試 Flutter 應用? ー 單元測試Flutter
- [iOS單元測試系列]Singleton如何測試iOS
- 單元測試如何測試私有方法_1
- 單元測試:單元測試中的mockMock
- 如何利用Allure報告提升你的測試效率?
- 使用JUnit進行單元測試
- 如何對非同步呼叫進行單元測試非同步
- 前端測試:Part II (單元測試)前端
- JavaScript 測試教程-part 1:用 Jest 進行單元測試JavaScript
- 企業級軟體測試階段 - 單元測試,SIT, UAT
- 走進Java介面測試之測試報告ExtentReportJava測試報告
- 測試計劃和測試報告測試報告
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- [iOS單元測試系列]單元測試編碼規範iOS
- 如果利用 python 對 java 程式碼進行 單元測試?PythonJava
- 單元測試階段的測試工作量自動預估
- 單元測試 - 測試場景記錄
- Go 單元測試之mock介面測試GoMock
- 測試氣味-整潔單元測試
- Flutter 單元測試Flutter
- Go單元測試Go
- 單元測試工具
- iOS 單元測試iOS
- 前端單元測試前端
- golang 單元測試Golang
- PHP 單元測試PHP
- phpunit單元測試PHP
- JUnit單元測試
- unittest單元測試
- Junit 單元測試.
- 如何編寫優秀的測試程式碼|單元測試