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