譯者 | 陳峻
審校 | 重樓
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
如今,軟件開發(fā)對(duì)于速度和靈活性的持續(xù)追求,催生了各種超越傳統(tǒng)界限的方法和實(shí)踐。而作為現(xiàn)代DevOps實(shí)踐的基石,持續(xù)測(cè)試的出現(xiàn)與發(fā)展,正好滿足了加速軟件交付的需求。下面,我將和您探討持續(xù)測(cè)試的最新發(fā)展,并重點(diǎn)關(guān)注它與微服務(wù)及無(wú)服務(wù)器架構(gòu)的緊密關(guān)系。
持續(xù)測(cè)試是一種在軟件開發(fā)生命周期的每個(gè)階段,都需要進(jìn)行測(cè)試的做法。從單元測(cè)試到集成測(cè)試、乃至其他測(cè)試,這種方法都能夠協(xié)助盡早地發(fā)現(xiàn)和糾正缺陷,以確保軟件的質(zhì)量。它不只是單純的缺陷檢測(cè),而是包含了一整套的方法集。其中,單元測(cè)試可以檢查單個(gè)組件,而集成測(cè)試則可以評(píng)估不同模塊之間的協(xié)作。因此,此方法不僅能夠最大限度地減少缺陷,還可以確保整體系統(tǒng)的穩(wěn)健性??梢?jiàn),集成測(cè)試的意義在于促進(jìn)不斷改進(jìn)的循環(huán)。也就是說(shuō),測(cè)試的反饋意見(jiàn)可以為后續(xù)的開發(fā)周期提供可用于改進(jìn)的信息,從而創(chuàng)建一種持續(xù)改進(jìn)的文化。
如今,微服務(wù)架構(gòu)已成為現(xiàn)代應(yīng)用開發(fā)的主導(dǎo)力量。它將單體應(yīng)用分解為更小的、更獨(dú)立的服務(wù),從而為軟件的開發(fā)和部署方式帶來(lái)范式上的轉(zhuǎn)變。雖然這種架構(gòu)具有可擴(kuò)展性和靈活性,但是也帶來(lái)了管理和測(cè)試大量分布式服務(wù)上的挑戰(zhàn)。因此,微服務(wù)的復(fù)雜性就需要我們采取更精細(xì)的測(cè)試策略,以實(shí)現(xiàn)其獨(dú)立的功能、以及相互關(guān)聯(lián)的特性。
分解測(cè)試策略是有效進(jìn)行微服務(wù)測(cè)試的基礎(chǔ)。這種方法主張孤立地檢查每個(gè)微服務(wù)。它包括對(duì)單個(gè)服務(wù)進(jìn)行嚴(yán)格的測(cè)試,以確保其功能符合既定的規(guī)范,然后方可進(jìn)行全面的集成測(cè)試。這種有條不紊的方法不僅能在早期發(fā)現(xiàn)缺陷,還可以保證服務(wù)之間的無(wú)縫通信,以符合微服務(wù)的模塊化特性。可以說(shuō),該策略保障了在同一個(gè)測(cè)試生態(tài)系統(tǒng)中,每個(gè)微服務(wù)都被視為一個(gè)獨(dú)立的單元,為系統(tǒng)的整體可靠性做出貢獻(xiàn)。目前,屬于該類別的測(cè)試策略包括但不限于如下示例:
單元測(cè)試可被用于驗(yàn)證單個(gè)微服務(wù)的正確性。例如:如果您有一個(gè)負(fù)責(zé)用戶身份驗(yàn)證的微服務(wù),那么單元測(cè)試就會(huì)去檢查身份驗(yàn)證邏輯是否能夠正常工作,是否可以處理不同的輸入,以及是否能夠?qū)τ行c無(wú)效的身份驗(yàn)證嘗試做出適當(dāng)?shù)捻憫?yīng)。
組件測(cè)試可被用于測(cè)試一組相關(guān)的微服務(wù)或組件的功能。例如:在某個(gè)電子商務(wù)系統(tǒng)中,您可能擁有用于產(chǎn)品編目、庫(kù)存管理、以及訂單處理的不同微服務(wù)。那么組件測(cè)試將會(huì)涉及到驗(yàn)證這些微服務(wù)是否能夠無(wú)縫協(xié)作,以實(shí)現(xiàn)訂單提交、庫(kù)存檢查、以及產(chǎn)品目錄更新等流程。
合約測(cè)試可以通過(guò)驗(yàn)證每個(gè)微服務(wù)是否遵守指定的接口和通信協(xié)議,以確保微服務(wù)之間的合約能夠得到切實(shí)的遵守。如果微服務(wù)A依賴微服務(wù)B的數(shù)據(jù),那么合約測(cè)試將驗(yàn)證微服務(wù)A能否正確地“消費(fèi)”由微服務(wù)B提供的數(shù)據(jù)。
微服務(wù)的性能測(cè)試包括評(píng)估其在各種負(fù)載下的響應(yīng)時(shí)間、可擴(kuò)展性、以及資源利用率。它將有助于在開發(fā)過(guò)程的早期,發(fā)現(xiàn)潛在的性能瓶頸。
微服務(wù)的安全測(cè)試會(huì)涉及到漏洞檢查,確保適當(dāng)?shù)纳矸蒡?yàn)證,授權(quán)機(jī)制是否到位,以及驗(yàn)證敏感數(shù)據(jù)是否得到了安全的處理。
故障注入測(cè)試用于評(píng)估每個(gè)微服務(wù)對(duì)于故障的適應(yīng)能力。您可以故意向微服務(wù)注入諸如:網(wǎng)絡(luò)延遲或服務(wù)不可用等故障,以觀察其響應(yīng)情況。此類測(cè)試有助于確保微服務(wù)能夠從容地應(yīng)對(duì)各種意外故障。
隔離測(cè)試主要被用于驗(yàn)證微服務(wù)是否能夠獨(dú)立于其他服務(wù)運(yùn)行。隔離測(cè)試往往通過(guò)在測(cè)試微服務(wù)時(shí),模擬或刪除其依賴關(guān)系,以確保微服務(wù)能夠在隔離的狀態(tài)下運(yùn)行,從而避免了在實(shí)際環(huán)境中,造成隱藏的依賴關(guān)系問(wèn)題。
微服務(wù)離不開服務(wù)虛擬化。它允許團(tuán)隊(duì)在受控環(huán)境中,模擬微服務(wù)的行為,從而兼顧了微服務(wù)的隔離與測(cè)試難題。服務(wù)虛擬化使得開發(fā)和測(cè)試團(tuán)隊(duì)有能力通過(guò)創(chuàng)建微服務(wù)的副本,在不依賴整個(gè)系統(tǒng)的情況下進(jìn)行隔離測(cè)試。這種方法不僅能夠加快測(cè)試的周期,還可以通過(guò)復(fù)刻真實(shí)場(chǎng)景,來(lái)提高結(jié)果的準(zhǔn)確性。作為一種推動(dòng)力,它在確保全面測(cè)試的同時(shí),避免了對(duì)微服務(wù)生態(tài)系統(tǒng)所需的敏捷性產(chǎn)生潛在影響。
微服務(wù)在很大程度上也依賴于API來(lái)實(shí)現(xiàn)無(wú)縫通信。在驗(yàn)證這些關(guān)鍵性接口的可靠性和功能時(shí),強(qiáng)大的API測(cè)試顯得至關(guān)重要。API測(cè)試的方法主要包括仔細(xì)檢查每個(gè)API端點(diǎn)對(duì)于各種輸入、以及邊緣情況的響應(yīng)。此類檢查可以確保微服務(wù)能夠按照預(yù)期進(jìn)行有效的通信和數(shù)據(jù)交換。同時(shí),API測(cè)試不僅是對(duì)端點(diǎn)的驗(yàn)證,也是對(duì)整個(gè)通信框架的驗(yàn)證,它屬于微服務(wù)架構(gòu)的基礎(chǔ)層。
無(wú)服務(wù)器計(jì)算通過(guò)將基礎(chǔ)設(shè)施的抽象化,讓開發(fā)人員可以只關(guān)注代碼,而無(wú)需管理底層服務(wù)器。無(wú)服務(wù)器計(jì)算在帶來(lái)高度可擴(kuò)展性和成本效益的同時(shí),也帶來(lái)了測(cè)試方法上的范式轉(zhuǎn)變。而為了確保無(wú)服務(wù)器應(yīng)用的可靠性,我們往往需要一些新的測(cè)試方法。
無(wú)服務(wù)器架構(gòu)往往通過(guò)事件驅(qū)動(dòng),來(lái)對(duì)觸發(fā)器和刺激做出響應(yīng)。事件驅(qū)動(dòng)測(cè)試通常被用來(lái)驗(yàn)證由事件觸發(fā)的功能,是否有能力被完整執(zhí)行。其中一些方法不僅包括了仔細(xì)檢查被測(cè)功能對(duì)于特定事件的響應(yīng),還包括評(píng)估其針對(duì)動(dòng)態(tài)的、不可預(yù)見(jiàn)的觸發(fā)因素的適應(yīng)性。也就是說(shuō),事件驅(qū)動(dòng)測(cè)試可以確保無(wú)服務(wù)器應(yīng)用對(duì)于各種事件,做出準(zhǔn)確可靠的響應(yīng),從而提升了應(yīng)用防范潛在差異性的能力。這種方法對(duì)于在以事件為中心的環(huán)境中,保持無(wú)服務(wù)器功能的響應(yīng)性和完整性,是至關(guān)重要的。
無(wú)服務(wù)器功能在冷啟動(dòng)期間往往面臨巨大的性能挑戰(zhàn)。持續(xù)的性能測(cè)試可以幫助無(wú)服務(wù)器功能,發(fā)現(xiàn)并解決從休眠狀態(tài)啟動(dòng)時(shí)可能產(chǎn)生的延遲問(wèn)題,進(jìn)而確保其發(fā)揮最佳性能。通過(guò)積極主動(dòng)地應(yīng)對(duì)冷啟動(dòng)挑戰(zhàn),無(wú)論無(wú)服務(wù)器功能的初始化狀態(tài)如何,開發(fā)團(tuán)隊(duì)都可以自信地實(shí)現(xiàn)無(wú)縫的用戶體驗(yàn)。
由于無(wú)服務(wù)器應(yīng)用通常也依賴與第三方服務(wù)的無(wú)縫集成,因此我們需要確保這些集成的兼容性和穩(wěn)健性,成為無(wú)服務(wù)器架構(gòu)持續(xù)測(cè)試的一個(gè)重要方面。其中,一種典型的方法是:對(duì)無(wú)服務(wù)器功能與第三方服務(wù)之間的交互進(jìn)行嚴(yán)格測(cè)試,驗(yàn)證數(shù)據(jù)交換是否順暢且正確。通過(guò)解決潛在的兼容性問(wèn)題,以及確保集成的魯棒性,開發(fā)團(tuán)隊(duì)可以提升無(wú)服務(wù)器應(yīng)用的可靠性和穩(wěn)定性。
目前,業(yè)界有一系列旨在簡(jiǎn)化微服務(wù)和無(wú)服務(wù)器架構(gòu)中測(cè)試流程的工具和技術(shù),可以被直接運(yùn)用到持續(xù)測(cè)試之中。這些工具不僅能夠促進(jìn)測(cè)試的開展,還可以提高測(cè)試生命周期的整體效率和效果。
JUnit、TestNG、Spock、Pytest和Behave等工具,都是在微服務(wù)綜合測(cè)試中非常實(shí)用的工具。這些框架通常都能夠支持單元測(cè)試、集成測(cè)試、以及端到端測(cè)試。
AWS SAM(Serverless Application Model,無(wú)服務(wù)器應(yīng)用模型)、Serverless Framework、AWS Lambda Test、Azure Functions Core Tools和Serverless Offline等框架都是可以幫助您開發(fā)、測(cè)試和部署無(wú)服務(wù)器應(yīng)用的工具。它們具有如下不同的功能和用途:
下面的表格總結(jié)了上述五種工具的主要區(qū)別:
特點(diǎn) | AWS SAM | Serverless Framework | AWS Lambda Test | Azure Functions Core Tools | Serverless Offline |
云提供商支持 | AWS | AWS、Azure、GCP | AWS | Azure | 多云 |
部署 | 基于 YAML 的語(yǔ)法與 AWS CloudFormation 集成 | CLI 界面 | 不支持 | CLI 界面 | 不支持 |
本地發(fā)展環(huán)境 | 是 | 是 | 是 | 是 | 是 |
插件系統(tǒng) | 沒(méi)有 | 是 | 沒(méi)有 | 沒(méi)有 | 沒(méi)有 |
測(cè)試用例生成 | 是 | 沒(méi)有 | 是 | 是 | 是 |
持續(xù)測(cè)試與CI/CD管道的無(wú)縫集成,形成了一套強(qiáng)大的自動(dòng)化測(cè)試流程。Jenkins、GitLab CI和Travis CI等工具可以協(xié)調(diào)整個(gè)測(cè)試工作流程,以確保每個(gè)代碼的變更在部署之前都經(jīng)過(guò)了嚴(yán)格的測(cè)試。總的說(shuō)來(lái),由持續(xù)測(cè)試與CI/CD管道集成所提供的機(jī)制,既能夠保證軟件的質(zhì)量,又可以達(dá)到如今數(shù)字化要求的速度。
綜上所述,由于持續(xù)測(cè)試能夠在整個(gè)開發(fā)過(guò)程中持續(xù)檢查軟件的問(wèn)題和錯(cuò)誤,因此已成為了快速、可靠地交付軟件過(guò)程的重要一環(huán)。隨著微服務(wù)和無(wú)服務(wù)器架構(gòu)不斷重塑軟件應(yīng)用的格局,持續(xù)測(cè)試的作用將變得更加突出。面對(duì)各種創(chuàng)新架構(gòu)所帶來(lái)的挑戰(zhàn),我們需要善于利用最新的工具和方法,讓開發(fā)團(tuán)隊(duì)跟上快速迭代的需求,交付出高質(zhì)量的軟件。
鏈接:https://dzone.com/articles/continuous-testing-in-the-era-of-microservices-and
本文鏈接:http://www.tebozhan.com/showinfo-26-64105-0.html微服務(wù)和無(wú)服務(wù)器架構(gòu)時(shí)代的持續(xù)測(cè)試
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com