消費者驅動契約測試
的演講比比皆是,我也沒有例外,在某Account的技術大會上做了一次 微服務架構下的測試應對策略 的分享。在分享中,我趕時髦提倡用契約測試取代集成測試,但是細節中沒有忽略的一個核心點:單元測試。這也是本文我要分享的重點。
單元測試是根,是基本,基本最無敵
單元測試存在于測試金字塔的底端,撐起了整個金字塔,編寫它是開發人員的職責。微服務架構讓服務更加獨立小巧,這意味著我們不用為小巧的代碼庫編寫單元測試了嗎?微服務架構提倡服務與服務之間通過契約測試來集成,這意味著我們只用編寫契約測試就足夠了嗎?
假設我們以正確的姿勢在踐行微服務的相關技術實踐。
CI上會伴隨每次提交都觸發單元測試、Service測試(API測試)、契約測試,所有測試通過后開始獨立部署,如果我們的契約測試寫的足夠好,便可以自信地獨立部署。如果Service測試覆蓋的足夠全,便可以自信地說代碼缺陷率很低。此時我們可能認為單元測試業務價值低,不必過多關注。
回到現實,實際情況可能是這樣子的。
CI上有契約測試的Stage,但也是草率編寫,甚至契約測試因為沒人維護而被默認忽略。Service測試寫了大量的Case,導致測試運行時間被拖長,Build效率大大降低。由于大量的Servcie測試的存在導致單元測試被過度輕視,再加上無效的測試充斥著代碼庫。這幾點不但扼殺了服務獨立部署 的特性,而且增加了開發部署的工作量。
再者,根據康威定律: 原文轉自:http://sjyuan.cc/significance-of-unit-test-from-other-sight/系統架構取決于組織架構,它倆息息相關