外部集成 网页制作_外部服务的集成测试
外部集成 網(wǎng)頁制作
我們的系統(tǒng)通常依賴于第三方服務(wù)(它們甚至可能是我們無法控制的公司內(nèi)部服務(wù))。 此類服務(wù)包括公開API的社交網(wǎng)絡(luò),帶有諸如Salesforce,身份驗證提供程序之類的API的SaaS或我們系統(tǒng)與之通信但不在產(chǎn)品生命周期內(nèi)的任何系統(tǒng)。
在常規(guī)的集成測試中,我們將對所有子系統(tǒng)進(jìn)行集成部署,以測試它們?nèi)绾螀f(xié)同工作。 但是,在使用外部服務(wù)的情況下,我們只能使用實際部署(考慮到一些API憑據(jù))。 我們必須編寫集成測試哪些選項,即檢查我們的系統(tǒng)是否與外部系統(tǒng)正確集成?
如果該服務(wù)提供了一個沙箱,那就是要走的路–您可以在目標(biāo)環(huán)境中進(jìn)行任何操作,并且該環(huán)境將短暫存在,并且對任何最終用戶都不可見。 但是,這很罕見,因為大多數(shù)外部服務(wù)都不提供此類沙箱。
另一個選擇是擁有集成測試帳戶-例如,您在Twitter上注冊一個名為“您的產(chǎn)品測試”的應(yīng)用程序,創(chuàng)建一個測試Twitter帳戶,并將這些憑據(jù)提供給集成測試。 如果您沒有涉及多步交互和很多前提條件的復(fù)雜場景,那將很好用。 例如,如果您的應(yīng)用程序在一段時間內(nèi)分析了推文,則您過去無法使用測試帳戶發(fā)布推文。
第三種選擇是模擬。 通常,模擬和集成測試是互斥的,但在這種情況下不是互斥的。 您不想測試外部服務(wù)是否符合其規(guī)范(或API文檔),而是想要測試您的應(yīng)用程序是否以正確的方式調(diào)用它并正確處理其響應(yīng)。 因此,可以運行外部系統(tǒng)的模擬程序,該模擬程序以預(yù)定義的標(biāo)準(zhǔn)集返回預(yù)定義的結(jié)果。 這些結(jié)果和標(biāo)準(zhǔn)應(yīng)直接符合規(guī)格。
通過運行嵌入式模擬服務(wù)器可以輕松實現(xiàn)。 有多種工具可用于執(zhí)行此操作-以下是其中一些Java列表-WireMock , MockServer , MockWebServer , Apache Wink 。 前三個是為上述用例專門創(chuàng)建的,而Apache Wink具有一個簡單的模擬服務(wù)器類,作為較大項目的一部分。
因此,如果要在每次成功購買后測試應(yīng)用程序是否正確發(fā)布了推文,則可以(例如,使用WireMock)執(zhí)行以下操作:
@Rule public WireMockRule wireMockRule = new WireMockRule(8089);@Test public void purchaseTweetTest() {stubFor(post(urlEqualTo("/statuses/update.json")).willReturn(aResponse().withStatus(200).withHeader("Content-Type", "application/json").withBody(getMockJsonResponse()));// ...purchaseService.completePurchase(purchase);verify(postRequestedFor(urlMatching("/statuses/update.json")).withRequestBody(matching(".*purchaseId: " + purchaseId + "*"))); }這樣,您將驗證與外部服務(wù)的通信是否在您的應(yīng)用程序中得到了正確處理,即,您是否正確集成,但不會在實際系統(tǒng)上進(jìn)行測試。
當(dāng)然,這有一個缺點–您在模擬程序中放置的規(guī)則可能與外部系統(tǒng)中的規(guī)則不同。 您可能對規(guī)格/文檔有誤解,或者可能未涵蓋所有特殊情況。 但是為了進(jìn)行自動化測試,我認(rèn)為這比支持無法正確清理或設(shè)置測試數(shù)據(jù)的測試帳戶更好。
這些自動化集成測試可以與在暫存環(huán)境中進(jìn)行手動測試相結(jié)合,以確保即使在實際的外部系統(tǒng)中集成也可以正常工作。
翻譯自: https://www.javacodegeeks.com/2014/05/integration-tests-for-external-services.html
外部集成 網(wǎng)頁制作
總結(jié)
以上是生活随笔為你收集整理的外部集成 网页制作_外部服务的集成测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中的适配器设计模式
- 下一篇: JDK 13:VM.events已添加到