自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微服務(wù)和無服務(wù)器架構(gòu)時(shí)代的持續(xù)測試

譯文 精選
開發(fā) 架構(gòu)
由于持續(xù)測試能夠在整個(gè)開發(fā)過程中持續(xù)檢查軟件的問題和錯(cuò)誤,因此已成為了快速、可靠地交付軟件過程的重要一環(huán)。

譯者 | 陳峻

審校 | 重樓

出品 | 51CTO技術(shù)棧(微信號:blog51cto)

如今,軟件開發(fā)對于速度和靈活性的持續(xù)追求,催生了各種超越傳統(tǒng)界限的方法和實(shí)踐。而作為現(xiàn)代DevOps實(shí)踐的基石,持續(xù)測試的出現(xiàn)與發(fā)展,正好滿足了加速軟件交付的需求。下面,我將和您探討持續(xù)測試的最新發(fā)展,并重點(diǎn)關(guān)注它與微服務(wù)及無服務(wù)器架構(gòu)的緊密關(guān)系。

一、持續(xù)測試(Continuous Testing)基礎(chǔ)

持續(xù)測試是一種在軟件開發(fā)生命周期的每個(gè)階段,都需要進(jìn)行測試的做法。從單元測試到集成測試、乃至其他測試,這種方法都能夠協(xié)助盡早地發(fā)現(xiàn)和糾正缺陷,以確保軟件的質(zhì)量。它不只是單純的缺陷檢測,而是包含了一整套的方法集。其中,單元測試可以檢查單個(gè)組件,而集成測試則可以評估不同模塊之間的協(xié)作。因此,此方法不僅能夠最大限度地減少缺陷,還可以確保整體系統(tǒng)的穩(wěn)健性。可見,集成測試的意義在于促進(jìn)不斷改進(jìn)的循環(huán)。也就是說,測試的反饋意見可以為后續(xù)的開發(fā)周期提供可用于改進(jìn)的信息,從而創(chuàng)建一種持續(xù)改進(jìn)的文化。

二、微服務(wù)(Microservices):解碼復(fù)雜性

如今,微服務(wù)架構(gòu)已成為現(xiàn)代應(yīng)用開發(fā)的主導(dǎo)力量。它將單體應(yīng)用分解為更小的、更獨(dú)立的服務(wù),從而為軟件的開發(fā)和部署方式帶來范式上的轉(zhuǎn)變。雖然這種架構(gòu)具有可擴(kuò)展性和靈活性,但是也帶來了管理和測試大量分布式服務(wù)上的挑戰(zhàn)。因此,微服務(wù)的復(fù)雜性就需要我們采取更精細(xì)的測試策略,以實(shí)現(xiàn)其獨(dú)立的功能、以及相互關(guān)聯(lián)的特性。

分解測試策略

分解測試策略是有效進(jìn)行微服務(wù)測試的基礎(chǔ)。這種方法主張孤立地檢查每個(gè)微服務(wù)。它包括對單個(gè)服務(wù)進(jìn)行嚴(yán)格的測試,以確保其功能符合既定的規(guī)范,然后方可進(jìn)行全面的集成測試。這種有條不紊的方法不僅能在早期發(fā)現(xiàn)缺陷,還可以保證服務(wù)之間的無縫通信,以符合微服務(wù)的模塊化特性??梢哉f,該策略保障了在同一個(gè)測試生態(tài)系統(tǒng)中,每個(gè)微服務(wù)都被視為一個(gè)獨(dú)立的單元,為系統(tǒng)的整體可靠性做出貢獻(xiàn)。目前,屬于該類別的測試策略包括但不限于如下示例:

1.微服務(wù)單元測試

單元測試可被用于驗(yàn)證單個(gè)微服務(wù)的正確性。例如:如果您有一個(gè)負(fù)責(zé)用戶身份驗(yàn)證的微服務(wù),那么單元測試就會去檢查身份驗(yàn)證邏輯是否能夠正常工作,是否可以處理不同的輸入,以及是否能夠?qū)τ行c無效的身份驗(yàn)證嘗試做出適當(dāng)?shù)捻憫?yīng)。

2.微服務(wù)組件測試

組件測試可被用于測試一組相關(guān)的微服務(wù)或組件的功能。例如:在某個(gè)電子商務(wù)系統(tǒng)中,您可能擁有用于產(chǎn)品編目、庫存管理、以及訂單處理的不同微服務(wù)。那么組件測試將會涉及到驗(yàn)證這些微服務(wù)是否能夠無縫協(xié)作,以實(shí)現(xiàn)訂單提交、庫存檢查、以及產(chǎn)品目錄更新等流程。

3.合約測試

合約測試可以通過驗(yàn)證每個(gè)微服務(wù)是否遵守指定的接口和通信協(xié)議,以確保微服務(wù)之間的合約能夠得到切實(shí)的遵守。如果微服務(wù)A依賴微服務(wù)B的數(shù)據(jù),那么合約測試將驗(yàn)證微服務(wù)A能否正確地“消費(fèi)”由微服務(wù)B提供的數(shù)據(jù)。

4.微服務(wù)性能測試

微服務(wù)的性能測試包括評估其在各種負(fù)載下的響應(yīng)時(shí)間、可擴(kuò)展性、以及資源利用率。它將有助于在開發(fā)過程的早期,發(fā)現(xiàn)潛在的性能瓶頸。

5.微服務(wù)安全測試

微服務(wù)的安全測試會涉及到漏洞檢查,確保適當(dāng)?shù)纳矸蒡?yàn)證,授權(quán)機(jī)制是否到位,以及驗(yàn)證敏感數(shù)據(jù)是否得到了安全的處理。

6.故障注入測試

故障注入測試用于評估每個(gè)微服務(wù)對于故障的適應(yīng)能力。您可以故意向微服務(wù)注入諸如:網(wǎng)絡(luò)延遲或服務(wù)不可用等故障,以觀察其響應(yīng)情況。此類測試有助于確保微服務(wù)能夠從容地應(yīng)對各種意外故障。

7.隔離測試

隔離測試主要被用于驗(yàn)證微服務(wù)是否能夠獨(dú)立于其他服務(wù)運(yùn)行。隔離測試往往通過在測試微服務(wù)時(shí),模擬或刪除其依賴關(guān)系,以確保微服務(wù)能夠在隔離的狀態(tài)下運(yùn)行,從而避免了在實(shí)際環(huán)境中,造成隱藏的依賴關(guān)系問題。

8.服務(wù)虛擬化

微服務(wù)離不開服務(wù)虛擬化。它允許團(tuán)隊(duì)在受控環(huán)境中,模擬微服務(wù)的行為,從而兼顧了微服務(wù)的隔離與測試難題。服務(wù)虛擬化使得開發(fā)和測試團(tuán)隊(duì)有能力通過創(chuàng)建微服務(wù)的副本,在不依賴整個(gè)系統(tǒng)的情況下進(jìn)行隔離測試。這種方法不僅能夠加快測試的周期,還可以通過復(fù)刻真實(shí)場景,來提高結(jié)果的準(zhǔn)確性。作為一種推動力,它在確保全面測試的同時(shí),避免了對微服務(wù)生態(tài)系統(tǒng)所需的敏捷性產(chǎn)生潛在影響。

9.應(yīng)用接口測試

微服務(wù)在很大程度上也依賴于API來實(shí)現(xiàn)無縫通信。在驗(yàn)證這些關(guān)鍵性接口的可靠性和功能時(shí),強(qiáng)大的API測試顯得至關(guān)重要。API測試的方法主要包括仔細(xì)檢查每個(gè)API端點(diǎn)對于各種輸入、以及邊緣情況的響應(yīng)。此類檢查可以確保微服務(wù)能夠按照預(yù)期進(jìn)行有效的通信和數(shù)據(jù)交換。同時(shí),API測試不僅是對端點(diǎn)的驗(yàn)證,也是對整個(gè)通信框架的驗(yàn)證,它屬于微服務(wù)架構(gòu)的基礎(chǔ)層。

三、無服務(wù)器計(jì)算(Serverless Computing):徹底改變部署

無服務(wù)器計(jì)算通過將基礎(chǔ)設(shè)施的抽象化,讓開發(fā)人員可以只關(guān)注代碼,而無需管理底層服務(wù)器。無服務(wù)器計(jì)算在帶來高度可擴(kuò)展性和成本效益的同時(shí),也帶來了測試方法上的范式轉(zhuǎn)變。而為了確保無服務(wù)器應(yīng)用的可靠性,我們往往需要一些新的測試方法。

1.事件驅(qū)動測試

無服務(wù)器架構(gòu)往往通過事件驅(qū)動,來對觸發(fā)器和刺激做出響應(yīng)。事件驅(qū)動測試通常被用來驗(yàn)證由事件觸發(fā)的功能,是否有能力被完整執(zhí)行。其中一些方法不僅包括了仔細(xì)檢查被測功能對于特定事件的響應(yīng),還包括評估其針對動態(tài)的、不可預(yù)見的觸發(fā)因素的適應(yīng)性。也就是說,事件驅(qū)動測試可以確保無服務(wù)器應(yīng)用對于各種事件,做出準(zhǔn)確可靠的響應(yīng),從而提升了應(yīng)用防范潛在差異性的能力。這種方法對于在以事件為中心的環(huán)境中,保持無服務(wù)器功能的響應(yīng)性和完整性,是至關(guān)重要的。

2.冷啟動挑戰(zhàn)

無服務(wù)器功能在冷啟動期間往往面臨巨大的性能挑戰(zhàn)。持續(xù)的性能測試可以幫助無服務(wù)器功能,發(fā)現(xiàn)并解決從休眠狀態(tài)啟動時(shí)可能產(chǎn)生的延遲問題,進(jìn)而確保其發(fā)揮最佳性能。通過積極主動地應(yīng)對冷啟動挑戰(zhàn),無論無服務(wù)器功能的初始化狀態(tài)如何,開發(fā)團(tuán)隊(duì)都可以自信地實(shí)現(xiàn)無縫的用戶體驗(yàn)。

3.第三方服務(wù)集成

由于無服務(wù)器應(yīng)用通常也依賴與第三方服務(wù)的無縫集成,因此我們需要確保這些集成的兼容性和穩(wěn)健性,成為無服務(wù)器架構(gòu)持續(xù)測試的一個(gè)重要方面。其中,一種典型的方法是:對無服務(wù)器功能與第三方服務(wù)之間的交互進(jìn)行嚴(yán)格測試,驗(yàn)證數(shù)據(jù)交換是否順暢且正確。通過解決潛在的兼容性問題,以及確保集成的魯棒性,開發(fā)團(tuán)隊(duì)可以提升無服務(wù)器應(yīng)用的可靠性和穩(wěn)定性。

四、工具和技術(shù)

目前,業(yè)界有一系列旨在簡化微服務(wù)和無服務(wù)器架構(gòu)中測試流程的工具和技術(shù),可以被直接運(yùn)用到持續(xù)測試之中。這些工具不僅能夠促進(jìn)測試的開展,還可以提高測試生命周期的整體效率和效果。

1.微服務(wù)測試框架

JUnit、TestNG、Spock、Pytest和Behave等工具,都是在微服務(wù)綜合測試中非常實(shí)用的工具。這些框架通常都能夠支持單元測試、集成測試、以及端到端測試。

2.無服務(wù)器測試工具

AWS SAM(Serverless Application Model,無服務(wù)器應(yīng)用模型)、Serverless Framework、AWS Lambda Test、Azure Functions Core Tools和Serverless Offline等框架都是可以幫助您開發(fā)、測試和部署無服務(wù)器應(yīng)用的工具。它們具有如下不同的功能和用途:

  • 作為一種工具,AWS SAM可讓您輕松地在AWS上開發(fā)和部署無服務(wù)器應(yīng)用。它提供了基于YAML的語法,以定義無服務(wù)器應(yīng)用,并與AWS CloudFormation相集成,以部署應(yīng)用。此外,AWS SAM還提供了一個(gè)本地開發(fā)環(huán)境,讓您可以在將應(yīng)用部署到AWS之前,對其進(jìn)行測試。
  • Serverless Framework是一款支持在多個(gè)云服務(wù)提供商(包括AWS、Azure和Google Cloud Platform(GCP))上進(jìn)行無服務(wù)器部署的工具。它提供了一個(gè)CLI界面,可用于創(chuàng)建、更新和部署無服務(wù)器應(yīng)用。此外,Serverless Framework還提供了一個(gè)插件系統(tǒng),可以讓您使用第三方擴(kuò)展,來豐富其功能。
  • AWS Lambda Test是一款可以讓您在本地測試AWS Lambda函數(shù)的工具。它提供了一個(gè)模擬的AWS Lambda環(huán)境,您可以用它來運(yùn)行您的函數(shù)并調(diào)試錯(cuò)誤。此外,AWS Lambda Test還可以為您的Lambda函數(shù)生成測試用例,從而幫助您提高代碼覆蓋率。   
  • Azure Functions Core Tools是一種可讓您在本地開發(fā)和測試Azure Functions的工具。它提供了用于創(chuàng)建、更新和運(yùn)行Azure Functions的CLI界面。此外,Azure Functions Core Tools還可以為您的Azure Functions生成測試用例,從而幫助您提高代碼覆蓋率。
  • 獨(dú)立于云提供商的Serverless Offline是一款可讓您在本地測試無服務(wù)器應(yīng)用的工具。它提供了一個(gè)模擬的云端環(huán)境,您可以用它來運(yùn)行無服務(wù)器應(yīng)用并調(diào)試錯(cuò)誤。此外,Serverless Offline還能夠?yàn)槟臒o服務(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 的語法與 AWS CloudFormation 集成

CLI 界面


不支持

CLI 界面

不支持

本地發(fā)展環(huán)境        

插件系統(tǒng)

沒有

沒有

沒有

沒有

測試用例生成

沒有

3.CI/CD 集成

持續(xù)測試與CI/CD管道的無縫集成,形成了一套強(qiáng)大的自動化測試流程。Jenkins、GitLab CI和Travis CI等工具可以協(xié)調(diào)整個(gè)測試工作流程,以確保每個(gè)代碼的變更在部署之前都經(jīng)過了嚴(yán)格的測試??偟恼f來,由持續(xù)測試與CI/CD管道集成所提供的機(jī)制,既能夠保證軟件的質(zhì)量,又可以達(dá)到如今數(shù)字化要求的速度。

五、結(jié)束語

綜上所述,由于持續(xù)測試能夠在整個(gè)開發(fā)過程中持續(xù)檢查軟件的問題和錯(cuò)誤,因此已成為了快速、可靠地交付軟件過程的重要一環(huán)。隨著微服務(wù)和無服務(wù)器架構(gòu)不斷重塑軟件應(yīng)用的格局,持續(xù)測試的作用將變得更加突出。面對各種創(chuàng)新架構(gòu)所帶來的挑戰(zhàn),我們需要善于利用最新的工具和方法,讓開發(fā)團(tuán)隊(duì)跟上快速迭代的需求,交付出高質(zhì)量的軟件。

鏈接:https://dzone.com/articles/continuous-testing-in-the-era-of-microservices-and

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2024-01-19 11:57:42

2020-11-26 09:00:00

無服務(wù)器架構(gòu)開發(fā)

2018-10-19 10:49:53

云原生架構(gòu)無服務(wù)器

2023-01-04 10:05:06

無服務(wù)器代碼

2022-03-02 09:31:42

Serverless微服務(wù)架構(gòu)

2018-03-28 10:32:18

微服務(wù)無服務(wù)器CQRS

2017-10-17 10:12:58

2023-08-27 15:20:58

Serverless架構(gòu)開發(fā)

2021-05-07 08:00:00

數(shù)據(jù)中心無服務(wù)器架構(gòu)

2019-07-02 10:55:21

云計(jì)算服務(wù)器容器

2021-03-26 14:30:54

安全服務(wù)器架構(gòu)的安全

2023-07-05 08:00:45

架構(gòu)

2019-04-30 10:27:46

無服務(wù)器云計(jì)算安全

2018-02-24 10:15:36

無服務(wù)器容器云計(jì)算

2018-08-13 08:53:11

無服務(wù)器監(jiān)控工具

2018-05-10 08:18:12

無服務(wù)器運(yùn)維服務(wù)器

2012-12-19 10:09:19

微服務(wù)器云服務(wù)器

2016-09-07 16:07:12

華為HUAWEI CONN服務(wù)器

2022-03-18 20:54:24

無服務(wù)器計(jì)算無服務(wù)器服務(wù)器

2010-08-03 16:08:12

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號