這是由來自AWS的工程師Nathan Peck發布的“測試微服務”系列文章的第一篇,介紹了測試金字塔模型以及如何建立測試文化。以下內容翻譯自Nathan的博客。
自動化測試是一個軟件公司取得成功的關鍵因素之一。經過嚴格測試的代碼容易獲得客戶的信賴,而沒有經過測試或缺乏嚴密測試的軟件系統容易出現故障,讓客戶感到失望。
盡管在測試單體系統方面已經有很多最佳實踐,但在測試分布式系統(比如微服務)時仍然面臨很多挑戰。開發者不但要確保每個組件的內部行為是一致的,也要確保組件之間能夠良好地集成。分布式系統需要額外的故障測試,比如針對網絡故障進行測試。有些分布式系統太過龐大,進行完整的端到端測試不太現實,所以開發人員需要制定一些策略,對整體架構的局部進行單獨測試,同時還能保證組件之間的互操作性。
這篇文章介紹了一些測試分布式系統的基礎概念,并討論了如何在開發流程中加入這些概念,確保它們可以有效地落地。
為了構建一個全面的測試框架,我們需要先了解“測試金字塔”概念。這一概念是由 Mike Cohn提出的,當時的大部分軟件測試還是通過用戶界面進行的。測試工程師直接手動操作用戶界面,或者編寫自動化宏腳本來操作界面。這種方式通常無法檢測出代碼內部的問題。此時,測試金字塔的概念就變得十分重要,因為它讓我們明白,用戶界面測試應該處于金字塔的頂端。
使用多種測試類型可以幫助我們檢測出不同類型的問題,不同的測試類型集中在系統的不同層面上。一個分布式系統的端到端測試可以被分為以下幾個層次。
單元測試用于驗證服務內部的類方法或函數的行為。它們執行代碼文件里的類方法或函數,提供不同的輸入,并驗證與每一個輸入相對應的輸出。
原文轉自:http://www.infoq.com/cn/news/2017/10/micro-service-build-test-culture