持續集成(CI)是一種軟件工程實踐,其中頻繁且獨立的更改會在添加到較大的代碼庫中時立即進行測試并報告。 CI旨在提供快速反饋,以便在將缺陷引入代碼庫時,盡快對其進行識別和糾正。 CI起源于 極限編程 范式,它是敏捷方法的子集,但原理可以應用于任何迭代編程模型。傳統的開發方法(例如 瀑布模型) 也可以在構建階段受益于CI方法的使用。持續集成通常與持續交付配合使用,對于CI / CD,將可執行代碼交付生產的步驟迅速且自動化。 根據持續集成:提高軟件質量和降低風險的合著者Paul Duvall所說 ,CI的最佳實踐包括:
CI的發布可能以任意頻率發生,這取決于運行它的組織和手頭的項目。通常,采用CI的組織比以前的軟件開發過程更頻繁地發布。每個重大更改都會啟動構建。開發團隊采用CI的原因很多,其中包括不斷收到有關軟件狀態的反饋。CI在開發的早期就發現了缺陷,與軟件開發生命周期的后期相比,它使破壞性更小,更簡單,更容易解決。 開發團隊可以在CI設置中使用自動化功能來整合代碼集成和測試,與手動執行這些任務相比,它可以減少查找錯誤的時間并提供更快的反饋。自動化工具可幫助團隊在CI流程中執行常規測試,例如單元測試,應用程序編程接口(API)和功能測試。單元測試檢查最小的應用程序組件。API測試評估API是否可以在其預期的請求和響應負載下可靠地執行。功能測試通常會評估較大部分的源代碼,以模擬用戶工作流程或功能。借助完全的CI自動化,腳本或集成引擎可以通過測試和構建來管理新代碼的移動。 這種自動化方法通常是CI / CD管道和DevOps方法的組成部分。CD充當CI的擴展,而不是替代。CI專注于開發周期的構建和代碼測試部分,而CD包括部署測試和配置自動化。在CD中,開發團隊可以在短周期內生產和發布軟件。持續部署是一個更高級的步驟,其中代碼自動發布到生產環境中,供最終用戶使用。 將CI納入開發流程時,開發團隊可以為組織帶來有價值的收益。 與一次瀑布之類的其他開發方法相比,與一次集成更少的代碼相比,CI可以更短,更少破壞性的代碼集成。同樣,還原的變更具有較小的破壞性,因為僅隔離的變更會立即消失。 錯誤檢測也更容易,更快捷,因為如果出現錯誤,則很可能在最后一批集成代碼中。隨著開發人員不斷添加代碼庫,這兩個好處都是提高代碼可見性的結果。 持續集成還可實現對變更的持續反饋,從而可以隨著時間的推移改進產品。 開發團隊使用CI軟件工具來自動化部分應用程序構建并構建文檔跟蹤。以下是企業IT商店中常見的CI管道自動化工具的示例。CI管道中存在許多其他工具,例如版本控制,測試,構建和工件存儲,這些工具太多了,在此不再贅述。 Jenkins是一個開源CI自動化服務器。詹金斯(Jenkins)可以分發測試并在眾多機器上進行構建。插件擴展了Jenkins的功能,例如用于自動化單元測試和測試報告的功能。開發人員可以通過特定的URL,在版本控制系統中或預先計劃的順序系統中進行提交來創建項目構建。一旦測試了系統,Jenkins還支持使用CD部署代碼的功能。CloudBees 支持在企業級使用Jenkins。 開源GitLab存儲庫和平臺支持CI / CD。GitLab可以在多臺機器上運行單元和集成測試,并且可以拆分構建以在多臺機器上工作,以減少項目執行時間。該軟件還支持將CD手動部署到登臺環境和生產環境。GitLab還支持與Atlassian Jira,GitHub和Jenkins之類的工具集成。 JetBrains TeamCity是用于CI / CD的集成和管理服務器。利用TeamCity,開發人員可以在將更改提交到代碼庫之前測試代碼。如果測試失敗,TeamCity將發送通知。TeamCity具有Build Grids,使開發人員可以針對不同的平臺和環境運行多個測試和構建。TeamCity包括對Docker,Jira和其他程序的支持。 |
|
來自: 軟件測試test > 《python自動化》