DevOps測試必備基礎?:實踐分享和適用工具推薦
譯文譯者 | 李睿
審校 | 梁策 孫淑娟
在對已開發代碼進行質量和可靠性分析時,測試的作用至關重要。代碼質量的任何小瑕疵都可能導致項目遭遇重大失敗。由于它的重要性,許多DevOps(開發運營)團隊在開發流程的早期就已啟動測試——不僅僅是在開發項目結束時,或質量保證人員(QA)在部署前完成最后檢查之后才進行。
數據統計機構Statista公司表示,DevOps的采用率在持續集成(CI)/持續交付CD工作流程中達到了驚人的62%,在開發環境中達到了60%。隨著越來越多的行業采用最新技術,人們正在見證企業以不同程度將之采用。
本文將介紹為什么在DevOps流程的早期測試代碼至關重要,還將通過示例重點介紹DevOps測試的特定方法和具體實踐。我們先從基礎開始:
傳統測試是怎樣開展的?
傳統的軟件測試通常包括回歸測試,其中每個功能測試都在更新完成后進行。通過持續交付,開發人員可以在準備好后立即部署更新。這通常意味著新功能需要頻繁部署。
開發人員通過采用頻率更高的A/B型測試,來確保這些新功能不會破壞現有代碼中的任何內容。開發人員將為一部分用戶發布一個功能版本,然后為另一部分用戶發布另一個版本,然后返回舊版本。
直到所有版本都得到部署,并且可以確定哪個最佳,或者直到原始版本被證明比其他迭代更好,這個過程將一直持續。
傳統測試方法的問題
傳統上,開發人員執行單元測試或功能測試。這些測試適用于源代碼,但不包括任何與系統上線后功能運轉狀況的內容。對于每次變更正式上線時的表現,這些傳統測試并沒有給出太多反饋。
DevOps則是一種新嘗試:當企業將測試納入其開發和運營流程時,開發和運營這兩個團隊開始更緊密地合作。
DevOps測試怎樣開展?
DevOps的過程是將開發人員的產品盡快送到用戶手中。測試是該過程的一部分,對于防止正式環境出錯至關重要。
不過,在執行出色的DevOps流程中,測試不會單獨進行。相反,測試工程師從第一天起就與開發人員一起協作。這樣即使某些內容發布還沒有準備好,或是沒有通過質量保證(QA),也可以在上線之前修復。
測試自動化工具能幫企業改善其反饋循環,將周期時間和質量保證工作量減少一半。其基本理念是,如果企業將他們的開發(Dev)和運營(Ops)團隊聚合在一起,他們可以更快、更可靠地交付軟件,并減少資源使用。
這可能是比快速上市或持續交付更大的好處。我們討論的測試問題,無論其速度或部署方法如何,都將帶來更好的結果。
DevOps測試的商業利益
1.錯誤數量更少
錯誤總是會導致問題——它們不僅會讓用戶感到不滿,還會付出生產力損失和高員工流動率方面的代價。進行自動化測試可以確保企業的開發團隊在發布之前對其版本充滿信心。
這意味著缺陷會被及早發現,并在成為大問題前被解決。同時,在開發周期的早期發現這些問題,也意味著在以后需要更新或升級時減少麻煩。
2.軟件交付更快
無論是快速發布錯誤修復還是重大升級,自動化測試過程都將幫助企業更快發布軟件。因為團隊可以自動完成QA流程,企業無需等待人工開展。
而對于某些開發框架,員工只需具有一定軟件開發知識,就可以從頭開始創建全功能測試。企業功能越早交付,就越早看到客戶的滿意度結果,從而獲得更高的收入。
3.上市時間加速
上市時間加速不僅僅是企業能夠迅速地將功能呈現在客戶面前。因為如果每個新版本都漏洞百出,那么企業的業務也會因此受到影響。相比保護品牌和聲譽,戰勝競爭對手獲得更多市場份額,快速上市變得更加關鍵。
4.版本更可靠
可靠性是企業最重要的資產之一。版本如果有問題也會對其品牌和聲譽造成無法彌補的損害,更不用說客戶保留率。事實上,根據Failory公司的調查,即使應用程序中只有少量錯誤也會對客戶的滿意度產生50%的負面影響。DevOps測試確保軟件版本更可靠,沒有Bug和錯誤。
標準的DevOps測試實踐怎么展開?
對于現代軟件開發,DevOps測試毫無疑問是不可或缺的——它是更先進的工具可以發揮重要作用的領域之一。對于改進DevOps流程和提高質量的方法,需考慮以下三件事:測試驅動開發(TDD)、自動化和開源軟件。
- 測試驅動開發——與DevOps的任何部分一樣,測試應該貫穿整個應用程序設計。測試驅動開發不是在編寫代碼之后構建測試,而是在代碼編寫時同步進行,從而推動團隊快速前進。
- 自動化——自動化測試有助于以更低成本交付優質產品。通過利用像Jenkins這樣的開源工具,企業可以通過將自動化集成到現有的DevOps流程中來創造更多價值,而不是圍繞它創建一個全新的流程。最重要的是,哪怕企業QA人員不堪重負,自動化測試也將有助于繼續推進開發。
- 開源軟件——自動化測試軟件并不少,盡管存在像Selenium WebDriver這樣的免費替代方案,提供具有更大靈活性和更高性價比的功能,許多企業仍然依賴專有解決方案。
全球流行的五大DevOps測試工具
1.Selenium
Selenium是一個采用Java、Python和其他語言編寫的不同軟件測試框架。它適用于通過自動與用戶界面(UI)交互來編寫基于Web的測試應用程序。Selenium支持不同的瀏覽器,例如Firefox、Chrome和Internet Explorer。它可以用各種編程語言編寫測試,如Java、C#和Python等。
2.Appium
Appium是一個高級的、開源的測試自動化框架,用于編寫自動化測試,尤其適用于原生和混合移動應用程序。Appium允許企業使用Java、Python等客戶端語言創建測試。該框架支持多個應用平臺,包括iOS和Android。使用Appium的優點是不需要有root手機就可以運行自動化測試。但是,Appium僅適用于真實的移動設備,不支持模擬器。
3.SoapUI
SoapUI是一個免費的開源Web應用程序測試工具,提供功能、回歸和負載/性能測試。企業可以用它來創建自動化測試,來檢查RESTful Web服務。它帶有用于創建SOAP和HTTP測試以及數據驅動測試功能的內置庫。用戶界面易于訪問并具有豐富的功能集。它通過自定義庫支持多種語言,如Java、C#、Perl、Python等。
4.Jenkins
Jenkins是最流行的持續集成和交付工具之一。如果不熟悉配置管理,它也是一個很好的入門工具,因為它的用戶界面比其他同類產品更簡單。Jenkins基于Java構建,這意味著它支持所有主要操作系統(Windows、Linux和macOS),并且可以在任何具有強大網絡支持的云平臺上良好運行。
5.JMeter
JMeter是一個高性能的Java桌面應用程序,旨在測試功能行為和測量性能。最初設計用于測試Web應用程序,它已擴展到其他測試功能。該軟件在BSD許可下免費提供,并且是開源的。JMeter與所有支持JavaSE(操作系統特定包)的操作系統兼容。構成JMeter的所有文件都是可移植的,你可以在任何環境中運行,而無需安裝客戶端或服務器組件。
結語
DevOps測試自動化有兩種基本方法。第一個是測試驅動開發(TDD),首先編寫測試,然后基于它們編寫代碼。第二個是行為驅動開發(BDD),企業可以在其中開發反饋軟件應如何運行的測試,而不僅僅是確保其正常工作。
驅動開發(BDD)似乎最適合DevOps測試,因為DevOps的重點是使軟件開發人員與運營團隊保持一致,以便他們可以更快地一起部署。驅動開發(BDD)允許兩個團隊的成員和測試人員在一組測試中工作,描述了他們的更改如何影響整體系統行為。
因此,如果已經在踐行DevOps,那么沒有理由不踐行驅動開發(BDD)。
原文標題:Testing in DevOps – The Basic and Critical Things You Need to Know,作者:Manav Jain