契約測(cè)試撥亂反正:最簡(jiǎn)介紹

版權(quán)聲明:本作品采用【知識(shí)共享署名-非商業(yè)性使用-禁止演繹 4.0 國(guó)際許可協(xié)議】進(jìn)行許可。


一段時(shí)間以來研究和實(shí)踐契約測(cè)試,發(fā)現(xiàn)如過去大家對(duì)于單元測(cè)試染坯、集成測(cè)試丘逸、端到端測(cè)試等等測(cè)試?yán)斫獠灰恢乱粯又俪^大多數(shù)情況下都把契約測(cè)試?yán)斫饣驊?yīng)用錯(cuò)了湃鹊。

為了統(tǒng)一認(rèn)知怀愧,寫了個(gè)簡(jiǎn)介余赢,以求被拍磚和拍人。

目的(解決的問題)

契約測(cè)試是一種以自動(dòng)化測(cè)試作為技術(shù)手段扛拨,解決團(tuán)隊(duì)間因存在明顯溝通邊界鬼癣,由溝通不暢和代碼變更而造成的系統(tǒng)間接口不匹配問題的最佳實(shí)踐待秃。

原理

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

通過測(cè)試驅(qū)動(dòng)生成服務(wù)間的契約文檔,利用該契約文檔和Mock Server(銀行業(yè)常稱之為“擋板”)分別對(duì)契約的消費(fèi)者和提供者進(jìn)行自動(dòng)化測(cè)試暖庄,以確保雙方能夠按照契約實(shí)現(xiàn)滿足規(guī)格要求的接口培廓,并利用持續(xù)集成流水線實(shí)現(xiàn)對(duì)雙方變更影響的快速反饋肩钠。

原則

  • 快速反饋
    • 契約測(cè)試應(yīng)當(dāng)聚焦對(duì)于接口規(guī)則的驗(yàn)證价匠,能夠易于編寫踩窖,快速運(yùn)行洋腮,最簡(jiǎn)驗(yàn)證。所以通常采用測(cè)試替身(Test Double)來代替集成組件加快運(yùn)行速度(速度與單元測(cè)試相當(dāng))滤灯。
  • 測(cè)試運(yùn)行時(shí)使消費(fèi)者與提供者解耦(分別運(yùn)行測(cè)試)
    • 對(duì)于接口的功能驗(yàn)證鳞骤,應(yīng)當(dāng)由接口集成測(cè)試來保證豫尽。
    • 對(duì)于系統(tǒng)間的協(xié)作驗(yàn)證美旧,應(yīng)當(dāng)由系統(tǒng)間集成測(cè)試榴嗅,或端到端測(cè)試來保證。
  • 消費(fèi)者驅(qū)動(dòng)設(shè)計(jì)優(yōu)于提供者驅(qū)動(dòng)設(shè)計(jì)
    • 符合需求拉動(dòng)和簡(jiǎn)單設(shè)計(jì)思想绪励,減少冗余設(shè)計(jì)疏魏。

適用場(chǎng)景 / 條件

  1. 契約測(cè)試屬于進(jìn)階自動(dòng)化測(cè)試實(shí)踐大莫,團(tuán)隊(duì)需具備基本的自動(dòng)化測(cè)試和持續(xù)集成實(shí)踐能力,并了解微服務(wù)基本知識(shí)和概念懈凹。
  2. 系統(tǒng)間采用松耦合的通訊和開發(fā)方式介评,例如HTTP+JSON们陆。而非緊耦合的通訊和開發(fā)方式坪仇,例如共享接口文件的RPC類框架椅文。
  3. A團(tuán)隊(duì)與B團(tuán)隊(duì)間存在明顯的溝通邊界皆刺,但二者均可控(可采用統(tǒng)一實(shí)踐并堅(jiān)持)。
  4. 提供者提供的接口被多個(gè)消費(fèi)者消費(fèi)凌摄,需要快速反饋代碼變更所造成的影響羡蛾。

前置知識(shí)與能力

  • 自動(dòng)化測(cè)試基礎(chǔ)
    • 單元測(cè)試
    • 集成測(cè)試
    • 端到端測(cè)試
  • 測(cè)試替身
  • 簡(jiǎn)單設(shè)計(jì)(增量式設(shè)計(jì))/ 測(cè)試驅(qū)動(dòng)開發(fā)
  • API測(cè)試方法
  • 版本控制
  • 持續(xù)集成 / 持續(xù)交付
  • 微服務(wù)

可用工具

  • Pact(推薦)
    • 消費(fèi)者驅(qū)動(dòng)
    • Pact Specification 契約規(guī)范 + 多技術(shù)棧實(shí)現(xiàn)
    • 基于JSON的契約文件
    • 支持HTTP+JSON的接口實(shí)現(xiàn) / 消息隊(duì)列
  • Spring Cloud Contract
    • 提供者驅(qū)動(dòng) / 消費(fèi)者驅(qū)動(dòng)
    • JVM + Spring 技術(shù)棧,可與Pact Broker集成
    • 基于JAR的契約文件
    • 支持HTTP+JSON的接口實(shí)現(xiàn) / 消息隊(duì)列
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锨亏,一起剝皮案震驚了整個(gè)濱河市痴怨,隨后出現(xiàn)的幾起案子忙干,更是在濱河造成了極大的恐慌,老刑警劉巖捐迫,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異浓瞪,居然都是意外死亡艺栈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門划煮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事∶┟” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵异雁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么展哭? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮映挂,結(jié)果婚禮上鞍时,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布掂铐。 她就那樣靜靜地躺著衷掷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音括堤,去河邊找鬼允趟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播看疗,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼删顶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼坚弱!你這毒婦竟也來了些楣?” 一聲冷哼從身側(cè)響起嘶居,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梨州,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了常侦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片井厌。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腮考,到底是詐尸還是另有隱情席吴,我是刑警寧澤庄涡,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布狮腿,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏央碟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猴抹,春花似錦拍霜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遣耍。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黔姜,已是汗流浹背主穗。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工对嚼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留已脓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓贞奋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子礼旅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345