新聞中心
如果您正在開發(fā)連接到多個微服務(wù)、軟件即服務(wù) (SaaS) API、遺留系統(tǒng)和其他第三方服務(wù)的應(yīng)用程序,那么創(chuàng)建一個強(qiáng)大的測試環(huán)境可能會很棘手。例如,假設(shè)正在驗(yàn)證的一個 API 是團(tuán)隊(duì)開發(fā)的微服務(wù)。在這種情況下,可能擁有 DevOps 功能,包括持續(xù)集成和持續(xù)交付 (CI/CD)、基礎(chǔ)設(shè)施即代碼以及創(chuàng)建測試數(shù)據(jù)集的工具,以便為該服務(wù)啟用測試環(huán)境。然而,即使有了這些功能,當(dāng)團(tuán)隊(duì)開發(fā)許多云原生應(yīng)用程序和微服務(wù)時,啟動多個測試服務(wù)的成本也會變得很高。

10年積累的做網(wǎng)站、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有歷城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
如果是第三方 API、SaaS 或數(shù)據(jù)流,則可能需要依賴該服務(wù)的測試基礎(chǔ)設(shè)施和功能。盡管這些測試環(huán)境應(yīng)該支持生產(chǎn)系統(tǒng)的功能,但它們可能沒有完整的數(shù)據(jù)集,并且將它們置于負(fù)載下以支持性能測試可能會違反服務(wù)條款或者造成費(fèi)用高昂。
服務(wù)和 API 虛擬化平臺旨在通過創(chuàng)建和模擬 API 和服務(wù)端點(diǎn)來解決這些復(fù)雜性。服務(wù)虛擬化平臺不再是旋轉(zhuǎn)測試環(huán)境,而是充當(dāng)測試下游應(yīng)用程序和組合服務(wù)的端點(diǎn),并響應(yīng)連接應(yīng)用程序或服務(wù)的請求和事務(wù)。
如果只使用少數(shù)幾個 API,那么API模擬可能是模擬端點(diǎn)的一個足夠好的實(shí)踐,并且像 Mockito、JMock 或 WireMock 等工具都是 Java 選項(xiàng)。但是一旦有了許多開發(fā)團(tuán)隊(duì)、不斷增長的api或復(fù)雜的測試數(shù)據(jù)集,就需要一種更具可伸縮性的方法,比如服務(wù)虛擬化。此外,如果正在測試處理信用卡、連接到賬單支付服務(wù)或執(zhí)行其他復(fù)雜交易的應(yīng)用程序,那么服務(wù)虛擬化平臺可以針對更廣泛的用戶體驗(yàn)和錯誤場景進(jìn)行驗(yàn)證。
我與金融服務(wù)領(lǐng)域的云工程師 Anna Ramadoss 討論過如何使用服務(wù)虛擬化平臺的問題。她說:“服務(wù)虛擬化,一旦成為團(tuán)隊(duì)的主流,就縮小了主系統(tǒng)和從屬系統(tǒng)之間的界限。更新是即時的,交付時間變得更快。其結(jié)果是一個精心設(shè)計(jì)的系統(tǒng),可以更快地更新市場。它還可以減少基礎(chǔ)設(shè)施需求和成本。”
服務(wù)虛擬化如何實(shí)現(xiàn)左移測試
許多組織都希望將他們的測試工作轉(zhuǎn)移到更快地識別和解決問題的方向。但是當(dāng)測試環(huán)境不可用于依賴服務(wù)時會發(fā)生什么呢?
開發(fā)人員很自然地避開阻礙其工程工作的障礙。在開發(fā)應(yīng)用程序時,開發(fā)人員是應(yīng)該等待 API 的測試基礎(chǔ)設(shè)施和功能,還是更有可能將這種測試推遲到開發(fā)過程的后期?更麻煩的是,開發(fā)人員是否會對 API 的行為做出假設(shè),然后被迫在開發(fā)過程的后期解決缺陷,或者是,在生產(chǎn)中發(fā)現(xiàn)缺陷的時候呢?
建立一個服務(wù)虛擬化平臺并要求將服務(wù)虛擬化作為一個開發(fā)標(biāo)準(zhǔn)有很多好處,特別是對于需要針對許多 API 進(jìn)行廣泛測試能力的團(tuán)隊(duì)而言。以下是使用服務(wù)虛擬化平臺幫助左移測試的幾個優(yōu)點(diǎn):
? 服務(wù)虛擬化是開發(fā)單元測試和為微服務(wù)進(jìn)行持續(xù)測試的自然延伸。作為開發(fā)過程的一部分,開發(fā)人員或質(zhì)量保證工程師應(yīng)該在服務(wù)虛擬化平臺中配置模擬API響應(yīng)的端點(diǎn)。所有開發(fā)人員在構(gòu)建下游應(yīng)用程序和服務(wù)時都可以使用這些端點(diǎn)。
? 服務(wù)虛擬化層通過公開所有支持版本的端點(diǎn),來簡化針對一個 API 的多版本測試。在對新的API版本進(jìn)行測試時,開發(fā)人員可以創(chuàng)建測試來比較最新版本和舊版本的響應(yīng)。這種 A/B 測試對于驗(yàn)證機(jī)器學(xué)習(xí)模型和預(yù)測分析新版本的下游影響特別有用。
? 服務(wù)虛擬化可以與測試數(shù)據(jù)集捆綁在一起,并用于驗(yàn)證事務(wù)。一旦開發(fā)人員完成了一個測試場景,他們就可以將端點(diǎn)刷新回原始測試數(shù)據(jù)集,并根據(jù)需要重復(fù)測試。
? 在云上運(yùn)行時,服務(wù)虛擬化平臺可以根據(jù)測試量增加和減少容量。因此,基礎(chǔ)設(shè)施可以擴(kuò)展以處理許多同時運(yùn)行測試或更健壯的性能測試的開發(fā)人員。
通過解決一個常見的測試基礎(chǔ)架構(gòu)挑戰(zhàn),團(tuán)隊(duì)可以使用服務(wù)虛擬化平臺的功能在開發(fā)過程的早期建立新的測試場景。
平臺提供商建議其他用例。例如,SmartBear 建議開發(fā)團(tuán)隊(duì)使用服務(wù)虛擬化來增強(qiáng)安全測試,根據(jù)消息類型自動化不同的測試場景,并支持迭代設(shè)計(jì)。Parasoft 建議使用服務(wù)虛擬化來測試格式錯誤的數(shù)據(jù)響應(yīng)、模擬高延遲,或驗(yàn)證對更大負(fù)載的響應(yīng)。Broadcom Service Virtualization(正式名稱為 CA DevTest)建議開發(fā)團(tuán)隊(duì)將測試鏈接到多步驟事務(wù)中,并持續(xù)驗(yàn)證業(yè)務(wù)工作流。
Ramadoss 建議開發(fā)團(tuán)隊(duì)確定他們的測試要求,以查看 API 虛擬化是否足夠,或者是否需要更通用的服務(wù)驗(yàn)證。例如,她說,“服務(wù)虛擬化擴(kuò)展到基于 TCP 的協(xié)議,以支持來自 TransUnion、Equifax 和 Experian 等信貸機(jī)構(gòu)的服務(wù)?!?可能需要的其他協(xié)議包括數(shù)據(jù)庫 (JDBC)、中間件(JMS、Rabbit MQ 等)和大型機(jī)協(xié)議(CICS 等)。
我與 Broadcom 的 DevOps 首席技術(shù)官 Shamim Ahmed 討論了 DevOps 組織如何在虛擬服務(wù)環(huán)境中使用服務(wù)虛擬化。他說:“隨著越來越多的組織為他們的軟件系統(tǒng)發(fā)展到組件架構(gòu),我們看到采用微服務(wù)進(jìn)行開發(fā)和容器化進(jìn)行部署的趨勢越來越大。為了支持這一趨勢,虛擬服務(wù)可以打包并部署在容器中,按需實(shí)例化,并在不再需要時停用?!?/p>
服務(wù)虛擬化的工作原理
平臺具有不同的能力來創(chuàng)建服務(wù)端點(diǎn),以下是常見的方法:
? 以Web服務(wù)描述語言(WSDL)、Web應(yīng)用程序描述語言(WADL)或OpenAPI規(guī)范(OAS)鏈接或上載API的定義
? 使用瀏覽器插件或web服務(wù)器代理記錄事務(wù)
? 手動創(chuàng)建服務(wù)定義,對于下游開發(fā)人員想要在 API 準(zhǔn)備好之前進(jìn)行測試時很有用
創(chuàng)建端點(diǎn)后,平臺通常支持連接到測試數(shù)據(jù)源、上傳測試數(shù)據(jù)或自動生成測試數(shù)據(jù)。在驗(yàn)證表單或文檔上傳以及處理復(fù)雜事務(wù)時,生成測試數(shù)據(jù)非常有用。這也是創(chuàng)建關(guān)于個人身份信息 (PII)(例如姓名、社會安全號碼或信用卡號碼)的模擬數(shù)據(jù)集的比較安全的方法。
一旦有了服務(wù)端點(diǎn),服務(wù)虛擬化平臺就會提供開發(fā)工具包、IDE 插件和 CI/CD 工具插件,作為接口和利用它們的不同方式。以頻繁部署為目標(biāo)的開發(fā)團(tuán)隊(duì)可以通過提供更多 API 端點(diǎn)和增加測試數(shù)據(jù)集的廣度來改進(jìn)連續(xù)測試實(shí)踐。
使用服務(wù)虛擬化平臺和成熟的持續(xù)測試實(shí)踐的敏捷開發(fā)團(tuán)隊(duì)?wèi)?yīng)該考慮幾個最佳實(shí)踐,例如創(chuàng)建負(fù)面測試用例和培訓(xùn)技術(shù)人員。加快測試周期的幾個最佳實(shí)踐,包括定義基礎(chǔ)架構(gòu)要求、保護(hù)虛擬化服務(wù)以及定期更新系統(tǒng)。領(lǐng)導(dǎo)者還應(yīng)該尋求切實(shí)的商業(yè)利益,例如更快地將新應(yīng)用程序投入生產(chǎn)并降低成本。
隨著越來越多的組織針對云實(shí)現(xiàn)應(yīng)用程序現(xiàn)代化、開發(fā)微服務(wù)并與許多 SaaS 平臺集成,服務(wù)虛擬化成為支持穩(wěn)健和持續(xù)測試的關(guān)鍵平臺功能。
本文標(biāo)題:服務(wù)虛擬化如何改進(jìn)應(yīng)用程序測試
文章轉(zhuǎn)載:http://m.5511xx.com/article/cogcpip.html


咨詢
建站咨詢
