天天看點

DevOps 測試實踐指南

作者 | Mahipal Nehra

譯者 | 劉雅夢

策劃 | 闫園園

軟體開發公司一直在采用 DevOps,因為它有助于自動化和簡化應用程式的開發生命周期。不僅如此,DevOps 還通過規劃、溝通、流程和工具,更好地協調了開發團隊和運維團隊,進而提高了項目的傳遞品質和速度。但是測試 DevOps 的最佳政策是什麼呢?本文将讨論 DevOps 的基本概念、生命周期、最佳實踐以及我們應該使用的工具。

軟體開發公司一直在采用 DevOps,因為它有助于自動化和簡化應用程式的開發生命周期。不僅如此,DevOps 還通過規劃、溝通、流程和工具,更好地協調了開發團隊和運維團隊,進而提高了項目的傳遞品質和速度。

随着 DevOps 的發展,企業要麼使用靈活 +DevOps,要麼隻選擇 DevOps 方式。

(靈活是一個疊代過程,專注于協作、回報和快速釋出。)

但是,測試 DevOps 的最佳政策是什麼呢?為了幫助大家,我們将讨論 DevOps 的基本概念、生命周期、最佳實踐以及我們應該使用的工具。

1

什麼是 DevOps?

DevOps 是一套工具、文化理念和實踐,通過自動化和內建開發團隊和運維團隊之間的流程,提高了組織高速傳遞項目的能力。DevOps 強調跨團隊的協作與溝通、團隊授權和自動化。

在 DevOps 的方法論下,開發團隊和運維團隊并不是互相孤立的。這兩個團隊通常會合并為一個團隊,開發人員負責應用的整個生命周期,從開發到部署和運維。此外,DevOps 團隊擁有廣泛的技能,并不局限于應用程式的某個功能或特性。

有時,安全和品質保證團隊會在整個應用程式開發過程中與 DevOps 內建。在這種情況下,如果 DevOps 團隊的重點是應用程式的安全性,那麼它也被稱為 DevSecOps。

與傳統的手工實踐不同,DevOps 團隊使用技術棧和工具來自動化流程,進而可以自動、可靠、快速地建構應用程式。此外,DevOps 工具允許開發人員獨立執行一些需要其他團隊協助的任務,如配置基礎設施或部署代碼等任務。

2

DevOps 生命周期

DevOps 生命周期是持續開發生命周期中的一系列自動化流程。DevOps 生命周期采用疊代的方式,這就是實踐者為什麼會将其符号化為無限循環的原因。這個無限循環代表了一種持續和協作政策,其中包括應用程式生命周期中每個階段的技術棧和工具。

生命周期的左側處理應用程式的開發和測試,而右邊則描述了部署和運維的循環。

讓我們來概述一下 DevOps 的生命周期。

3

從靈活到 DevOps

即使 DevOps 和靈活測試之間存在細微的差異,使用靈活的人可能會發現 DevOps 更熟悉,并最終采用它。盡管靈活的原則在開發和 QA 的疊代中得到了成功的應用,但在運維方面卻沒有那麼成功。這就是 DevOps 的用武之地。

DevOps 現在已經用持續開發取代了持續內建,在持續開發中,團隊在短周期内開發應用程式,這樣軟體就可以随時自動可靠地釋出。使用 CD,可以以很高的頻率開發、測試和釋出軟體應用程式。

由于 DevOps 中的流程和環境已标準化,是以持續開發過程能使整個鍊條中的每個人都受益。由于 DevOps 中的所有流程都是自動化的,是以,開發人員可以專注于設計和編碼高品質的應用程式,而不是專注于建構、品質保證和運維流程。

使用持續開發可以極大地縮短代碼編寫和部署到生産環境的時間,最多可達 4 小時。

簡而言之,DevOps 是一種靈活的擴充,或者可以被稱之為“類固醇上的靈活”。

4

DevOps 測試的最佳實踐

DevOps 測試工程師需要重新思考軟體的 QA 測試政策,以适應從開發到運維的管道階段。值得慶幸的是,有一些 DevOps 測試最佳實踐可以被了解并能被用于任何應用程式的開發中。解釋 DevOps 的每個測試最佳實踐超出了本文的範圍。是以我們總結了 DevOps 測試的每一個最佳實踐,并在下面給出了解釋。

DevOps 測試文化

DevOps 的測試文化是有所不同的,因為跨職能團隊成員共同承擔了提供高品質應用程式的責任。品質檢查是管道階段的一個重要方面,涉及所有的團隊成員。此外,品質測試不能由一個完全不同的團隊在管道的末端進行。是以,團隊需要确定測試政策,以控制整個應用程式開發生命周期中測試活動的範圍和數量。

為了達到所要求的結果,跨職能團隊的每個成員都必須對測試及其結果負責。

DevOps 測試文化應包括以下特征:

鼓勵圍繞測試和測試結果分析進行協作,而不是測試人員和開發人員在代碼修複方面進行對抗。

測試覆寫率和建立條目需要得到 DevOps 團隊的同意。

上司者應該将測試視為項目開發的戰略部分,而不是将其視為可以降低的成本。他們需要資金和時間預算來為 DevOps 團隊想要的開發人員提供測試教育訓練資源、架構、工具、管理并建立評估政策。

開發團隊應該接受測試建立和結果分析,而運維團隊應該計劃并執行跨功能測試。

持續的測試政策

傳統的瀑布式測試方法是在開發周期接近尾聲時由獨立的 QA 團隊對應用程式中大量的更改進行測試,這種方法無法與 DevOps 配合使用。

随着 DevOps 團隊在持續傳遞管道的所有階段都測試小的更改,靈活方法與 DevOps 測試更加相容了。

雖然靈活強調了持續測試的重要性以及将持續測試內建到軟體工具中的必要性,但它沒有定義将測試擴充到部署的方法。DevOps 所需的持續測試政策比瀑布式或靈活式的更明确。持續測試政策必須要包括管道和部署所有階段的內建測試。

端到端的測試內建

DevOps 需要跨端到端管道階段的水準測試內建,以及跨不同級别持續傳遞基礎設施的垂直內建。

下面列出了實作端到端測試內建的最佳實踐:

在內建之前,使用私有執行個體對應用程式中的更改進行測試,以確定代碼的更改不會破壞分支。能做到這樣的測試方法包括:靜态代碼分析、單元測試、性能測試、回歸、掃描和功能測試。

在預內建測試階段,應該建立自動化測試,以便在管道的後續測試階段繼續使用。

為了驗證預內建測試的測試結果,DevOps 團隊應該在送出代碼時對代碼進行評估。

在建構階段,應該執行測試,以确定內建的建構是否符合驗收标準。

為了確定建構鏡像的性能和功能符合評估标準,必須在代碼測試過程中進行性能和功能測試。

類似地,在回歸、系統測試和傳遞等其他階段,也需要進行一組測試,以確定代碼和應用程式符合預期的評估标準。

DevOps 測試基礎設施

正在測試的應用程式可以具有單體、三層、面向服務或微服務的架構。DevOps 測試實踐強調在類似于生産環境的環境中進行測試的重要性,這可以確定一旦部署到生産環境中,測試就可以覆寫應用程式的所有配置。

為此,最佳實踐是找到并将基礎架構即代碼(Iac)、動态基礎設施配置工具、雲服務和測試即服務(test-as-a-service)包含進來,這些工具比專用基礎設施更具成本效益和可行性,并且可以根據運作測試的需要輕松地建立并釋出基礎設施配置。

DevOps 就緒測試工具

持續傳遞測試工具必須提供對應用程式進行測試的能力,并提供能夠驗證測試結果所需的資料。你可以使用的一些工具,如功能測試工具、協定測試工具、API 測試工具、單元測試工具、資料庫模拟器、性能 / 負載測試工具和使用者界面測試工具等。

測試工具可以是白盒工具、灰盒工具和黑盒工具。測試工具應該能夠混合測試工具鍊和架構,以便用于 DevOps 就緒(DevOps-ready)工具。

這将在垂直或水準方向上增加按需伸縮的彈性,并能比對工作負載的需求,以及通過持續傳遞管道測試應用程式更改的能力。可以通過 API 編排、伸縮、調用、控制和監控 DevOps 就緒工具。資源、采用快速失敗的測試設計技術、測試架構配置,則加速測試結果的監控以及測試工具的配置。

測試分析

如果對持續測試結果的分析不能跟上測試的速度,不僅會增加要分析的結果數量,而且還會導緻無法節省時間、造成大量混亂并忽略有價值的結果,進而減慢 CI/CT 周期。一些可用于比對測試及其分析速度的技術包括測試結果分析器、儀表闆或向架構中添加分析工具。

微服務和容器

從測試的角度來看,在微服務架構中,需要驗證每個服務與使用它的其他服務之間的契約。服務間的依賴性和微服務的獨立性都應該經過很好的測試。

在網絡上運作服務時,還需要驗證可靠性和性能等考慮因素。如果微服務受到應用程式更改或相關依賴微服務組的影響,則需要對其進行回歸測試。

容器提供了将測試資源打包到特殊容器中的可能性,以實作友善性和不變性,以及測試更改所需的可伸縮性。

資料庫 DevOps 測試

在持續傳遞的整個過程中,制定政策來測試和驗證對資料庫的任何更改或使用了資料庫的應用程式是否按要求執行是至關重要的。此外,必須有可以用于從生産環境中複制資料卷的工具,以確定在部署之前能在生産資料集上進行測試。

DevOps 安全測試

通過制定 DevOps 安全測試政策,可以使應用程式更容易擺脫漏洞、威脅和風險的影響。DevOps 團隊可以在開發周期中應用自動化工具和測試,最大限度地減少當機時間、漏洞和安全威脅。

自動化測試

為了消除持續內建帶來的風險,添加能夠提供快速應用程式品質回報的測試自動化是至關重要的。使用 CI 進行自動化測試允許團隊測試新代碼疊代,并能将錯誤的可能性降至最低。

5

DevOps 測試工具

在軟體開發生命周期中使用 DevOps 測試工具為開發和運維團隊提供了多項優勢。它提供的一些好處包括代碼品質改進、快速和持續的回報,以及加速了有助于增加開發、運維和測試團隊的應用程式上市時間。

下面是可以用于 DevOps 測試政策的不同測試工具清單。

單元測試工具

通過單元測試,DevOps 團隊可以單獨檢查應用程式的源代碼,以驗證其功能。單元測試甚至可以在應用程式的初始開發階段進行。它依賴于模拟應用程式功能的測試用例。這些測試用例要麼通過,要麼失敗,并向使用者提供結果,以便他們調試代碼。

有些單元測試工具是專門為給定的程式設計語言設計的。可以使用的工具有 Mocha(用于 JavaScript)、 EMMA (用于 Java)、Typemock(用于.Net 和 C++)、Parasoft(用于 C 和 C++)和 SimpleTest(用于 PHP)。

性能測試工具

性能測試是在 DevOps 的後期階段完成的,即在編寫和內建代碼時。根據項目的要求,性能測試工具将對應用程式進行壓力、負載、容量、卷和恢複測試,以檢查應用程式的性能,以及它如何從異常中恢複。

使用工具進行性能測試的目的是在向最終使用者釋出系統之前,檢測崩潰源并修改系統以獲得最高效率。可以用于性能測試的工具有 Apache JMeter、k6、Watir、Predator 和 TestComplete。

自動化測試工具

自動化測試工具有助于自動運作測試、管理測試資料并使用測試結果來提高軟體的品質。除了減少人為錯誤外,自動化測試工具還可以支援可伸縮的評估。CI/CD 模型中的自動化工具基于事件來觸發測試。

DevOps 團隊可以用于自動化測試的工具有 TestProject、Leapwork、Selenium、Tosca 和 Testsigma。

持續測試工具

持續測試是測試應用程式的過程,有助于在 DevOps 管道的每個階段進行代碼、功能和應用程式驗證,以檢測錯誤并最大限度地縮短周轉時間。

DevOps 團隊使用的一些連續測試工具示例包括:AppVerify、Appium、Docker、Bamboo 和 Jenkins。

6

總結

DevOps 是為多種業務開發應用程式的理想解決方案,因為它有充分的理由。然而,應用程式的成功和品質完全取決于 DevOps 團隊為測試應用程式所制定的政策。

我們希望本文能夠幫助你為目前或未來的項目制定 DevOps 測試政策。

https://www.decipherzone.com/blog-detail/devops-testing

繼續閱讀