契約測試撥亂反正:最簡介紹

版權聲明:本作品采用【知識共享署名-非商業性使用-禁止演繹 4.0 國際許可協議】進行許可。


一段時間以來研究和實踐契約測試,發現如過去大家對于單元測試、集成測試、端到端測試等等測試理解不一致一樣,絕大多數情況下都把契約測試理解或應用錯了。

為了統一認知,寫了個簡介,以求被拍磚和拍人。

目的(解決的問題)

契約測試是一種以自動化測試作為技術手段,解決團隊間因存在明顯溝通邊界,由溝通不暢和代碼變更而造成的系統間接口不匹配問題的最佳實踐。

原理

https://martinfowler.com/articles/practical-test-pyramid.html

通過測試驅動生成服務間的契約文檔,利用該契約文檔和Mock Server(銀行業常稱之為“擋板”)分別對契約的消費者和提供者進行自動化測試,以確保雙方能夠按照契約實現滿足規格要求的接口,并利用持續集成流水線實現對雙方變更影響的快速反饋。

原則

  • 快速反饋
    • 契約測試應當聚焦對于接口規則的驗證,能夠易于編寫,快速運行,最簡驗證。所以通常采用測試替身(Test Double)來代替集成組件加快運行速度(速度與單元測試相當)。
  • 測試運行時使消費者與提供者解耦(分別運行測試)
    • 對于接口的功能驗證,應當由接口集成測試來保證。
    • 對于系統間的協作驗證,應當由系統間集成測試,或端到端測試來保證。
  • 消費者驅動設計優于提供者驅動設計
    • 符合需求拉動和簡單設計思想,減少冗余設計。

適用場景 / 條件

  1. 契約測試屬于進階自動化測試實踐,團隊需具備基本的自動化測試和持續集成實踐能力,并了解微服務基本知識和概念。
  2. 系統間采用松耦合的通訊和開發方式,例如HTTP+JSON。而非緊耦合的通訊和開發方式,例如共享接口文件的RPC類框架。
  3. A團隊與B團隊間存在明顯的溝通邊界,但二者均可控(可采用統一實踐并堅持)。
  4. 提供者提供的接口被多個消費者消費,需要快速反饋代碼變更所造成的影響。

前置知識與能力

  • 自動化測試基礎
    • 單元測試
    • 集成測試
    • 端到端測試
  • 測試替身
  • 簡單設計(增量式設計)/ 測試驅動開發
  • API測試方法
  • 版本控制
  • 持續集成 / 持續交付
  • 微服務

可用工具

  • Pact(推薦)
    • 消費者驅動
    • Pact Specification 契約規范 + 多技術棧實現
    • 基于JSON的契約文件
    • 支持HTTP+JSON的接口實現 / 消息隊列
  • Spring Cloud Contract
    • 提供者驅動 / 消費者驅動
    • JVM + Spring 技術棧,可與Pact Broker集成
    • 基于JAR的契約文件
    • 支持HTTP+JSON的接口實現 / 消息隊列
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378