這個工具憑什麼風靡全球?DevOps工具鏈整合之單元測試整合篇
DevOps是一種實踐方法,旨在保證高質量的前提下實現研發運維一體化,從而大幅縮短系統變更從提交到部署生產環境的時間。其中,持續整合是DevOps中非常重要的一環,它涉及整合多個開發人員的程式碼,並不斷編譯和測試,以便儘可能早的識別缺陷。自動化是持續整合的核心,工具鏈整合是實現自動化的手段和方法。本文主要講述DevOps工具鏈整合中如何實現單元測試工具的整合。
單元測試工具整合的方法
單元測試概述
單元測試是指對軟體中的最小可測試單元進行檢查和測試,對於單元測試中單元的含義,一般來說,可根據實際情況去判定其具體含義,如C語言中單元指一個函式,Java和C#裡單元指一個類等等。單元測試是在軟體開發過程中進行的最低階別的測試活動,可以在與程式其他部分相隔離的情況下進行測試。
整合條件
持續整合流水線包含單元測試,首先要求研發人員在完成功能開發後,編寫對應的功能測試方法或者函式測試方法(單元測試方法),對於規模較大的專案,可以隨著功能開發進度逐步編寫單元測試方法或者按照功能的優先順序和重要程度有選擇的編寫單元測試方法。
對於Java開發專案,建議使用Junit工具進行單元測試編寫,C#開發專案使用Nunit工具進行單元測試編寫。目前這兩個單元測試工具TFS平臺都有較好的支援,故可以方便的納入TFS持續整合流水線中。
核心價值
透過在持續整合流水線中納入單元測試活動,可以在開發階段更快的發現BUG,並且修復他們的成本很低。在軟體開發的後期階段,Bug的發現和修復將變得更加困難,成本會指數級增長;因此應用系統儘可能早的編寫單元測試方法和整合對於提高軟體質量具有非常重要的意義。
單元測試工具整合的實踐
工具鏈整合框架
為做好數字化轉型,著力構建研發運維一體化流程,企業正在打造高效完整的DevOps工具鏈,貫穿開發、測試、運維各環節,搭建支撐持續整合、自動化測試、持續交付的工具鏈,實現研發-運維生命週期全流程的自動化:
單元測試整合的兩種場景
雲下整合
基於TFS平臺實現了兩大主流開發語言(C#、Java)的單元測試工具(Nunit、Junit)持續整合,只要專案組完成首個單元測試方法編寫並本地執行透過後,即可在持續整合流程中加入單元測試過程:
在TFS工具中建立持續整合流水線(生成定義),並透過新增編譯、單元測試等步驟,即可實現程式碼拉取、下載、編譯、執行單元測試方法的自動化:
目前,包含單元測試過程的流水線支援多種方式自動化執行:程式碼提交時自動觸發、定時觸發、拉取請求(程式碼歸併)時自動觸發:
單元測試結果以及程式碼覆蓋率情況(支援Cobertura、Jacoco)可以透過郵件以及頁面展示的方式快速直觀的反饋給開發人員:
雲上整合
雲端計算在企業應用逐步廣泛,使用雲進行構建、測試、部署一體化,具備高效、快捷、一致等優勢。DevOps持續整合流水線可以採用TFS為入口平臺,由TFS觸發Jenkins在雲上進行編譯、單元測試,並將單元測試結果、程式碼覆蓋率結果回傳至TFS釋出:
注意:雲上單元測試整合,需要在雲上流水線指令碼中加入呼叫單元測試工具的語句,例如:
stage('Unit Test') {
steps {
sh "${mvnCmd} clean test cobertura:cobertura"
//請依據實際情況修改pom檔案的路徑
step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
//請提前在程式碼的pom檔案中加上maven-surefire-plugin
}
結束語
經驗表明具備完整單元測試方法的研發專案有更高的軟體質量,無論什麼時候對程式碼進行修改都可以進行單元迴歸測試,單元測試整合自動化大大節省了研發人員的寶貴時間,從而把精力集中在單元測試之間的互動作用以及全域性的功能實現上。
加我VX:17324089390 回覆關鍵詞“測試”領取限量軟體測試學習資料哦~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2705316/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Tessy — 嵌入式軟體單元測試/ 整合測試工具
- Tessy—支援複雜場景測試的單元整合測試工具
- WinAMS--嵌入式軟體單元測試/整合測試工具
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- SpringBoot-16-之整合MyBatis-xml篇+單元測試Spring BootMyBatisXML
- 單元測試工具
- 以持續整合工具實現DevOps之禪dev
- .Net單元測試xUnit和整合測試指南(1)
- 單元測試工具 TestNG 使用
- JavaScript單元測試工具VenusJavaScript
- Mokito 單元測試與 Spring-Boot 整合測試Springboot
- 軟體測試---單元、整合、系統、驗收測試
- .net持續整合單元測試篇之單元測試簡介以及在visual studio中配置Nunit使用環境
- Flutter 學習之路 - 測試(單元測試,Widget 測試,整合測試)Flutter
- Java中的單元測試與整合測試最佳實踐Java
- 我用這個 AI 工具生成單元測試,簡直不要太爽!AI
- Spring Boot單元和整合測試概述 | rieckpilSpring BootKPI
- 加速Java應用開發速度3:單元/整合測試+持續整合Java
- 《集合了,動物森友會》這款“佛系”遊戲為什麼會風靡全球?遊戲
- 600多所高校、13000支隊伍參賽,這場AI技術創新大賽憑什麼風靡全球?AI
- .net持續整合測試篇之Nunit引數化測試
- .netcore持續整合測試篇之測試方法改造NetCore
- 整合持續整合工具
- 當前主流的單元測試工具
- C&C++程式碼單元整合測試培訓C++
- 在.NET開發中的單元測試工具之——NUnit
- .net持續整合測試篇之Nunit that斷言
- 前端單元測試總結及測試工具介紹前端
- Apworks框架實戰(三):單元測試與持續整合框架
- 測試 之Java單元測試、Android單元測試JavaAndroid
- .netcore持續整合測試篇之搭建記憶體伺服器進行整合測試一NetCore記憶體伺服器
- Android 單元測試工具 Robolectric 中文文件Android
- .net持續整合測試篇之Nunit常見斷言
- 黑盒測試、白盒測試、單元測試、整合測試、系統測試、驗收測試的區別與聯絡...
- Springboot整合JUnit5優雅進行單元測試Spring Boot
- 持續整合之路——資料訪問層的單元測試(續)
- 【工具】基準測試工具之sysbench
- 鴻蒙應用怎麼測試?這個工具包請收藏!鴻蒙