距離我上次寫文章已經很久了,為了打破這段空白期,我決定回歸基礎,重新審視一些對測試工程師和開發人員至關重要的核心概念。我將從測試金字塔開始,並借用《火影忍者》中的忍者等級制度來類比,使這個概念更加直觀易懂。
在探索測試金字塔之前,有必要先簡單了解《火影忍者》是什麼。 《火影忍者》是由岸本齊史創作的日本漫畫和動畫系列。故事講述了漩渦鳴人,一位來自木葉村的年輕忍者,由於體內封印著強大的九尾妖狐,他從小就孤獨寂寞,與世隔絕。儘管如此,鳴人仍然夢想成為火影,也就是村子的領導者,以此來獲得認可,證明自己的價值。
在這個世界裡,忍者根據經驗和職責被分成不同的等級:
學院學生
根寧
中忍
喬寧
蛋糕
暗部
但這種層級結構與測試金字塔有何關聯呢?測試金字塔由 Mike Cohn 於 2009 年左右提出並推廣,本質上,它是一個用於對自動化測試進行分類的模型,旨在提高測試覆蓋率、提升軟體交付效能,並最終提高軟體品質。該金字塔由三個主要層級組成:
單元測試
整合測試
端對端 (E2E) 測試
現在讓我們以《火影忍者》中的忍者等級為比喻,逐層分析測試金字塔。
忍者學校的學生是正在接受訓練的兒童,他們還不是正式的忍者。他們學習忍術基礎知識,例如查克拉控制、村規、團隊合作以及變身術、替身術和分身術等基礎忍術。下忍則是剛畢業的忍者,他們開始穿著村裡的護額,執行一些簡單的任務,通常是D級或C級。他們在上忍的指導下以小組形式行動,專注於累積經驗、培養紀律並強化基本技能。

在軟體測試領域,單元測試與忍者早期階段的技能非常相似。單元測試驗證的是小型、獨立的程式碼片段,例如函數或方法。單獨來看,它們可能很簡單,但組合起來卻能提供巨大的價值、快速的回饋和廣泛的測試覆蓋。就像忍者下級任務一樣,單元測試數量眾多、輕量級,並且構成了整個測試策略的基礎。
中忍是中級忍者,他們不僅擁有強大的戰鬥能力,還具備高超的智力、領導能力和情緒成熟度。他們通常透過中忍考試晉升,能夠領導小隊、制定戰術決策,並執行難度等級為C級或B級的複雜任務。他們是村子的作戰中堅份子。

類似地,整合測試用於驗證系統不同元件之間的交互,例如服務、資料庫或外部 API 之間的通訊。這些測試比單元測試耗時更長,也需要更多設置,但它們對於確保應用程式的不同部分能夠協同工作至關重要。就像中忍任務一樣,整合測試的數量少於單元測試,但它們仍然是測試金字塔中至關重要的一層。
上忍是經驗豐富、技藝精湛的忍者,能夠獨立完成高風險任務(A級或S級),並指導下一代忍者。他們擁有深厚的技術知識、卓越的查克拉控制能力和高超的戰術技巧。

端到端測試與上忍的角色非常契合。這類測試模擬真實使用者行為,並驗證完整的系統流程,例如登入流程或結帳流程。雖然它們能提供很高的置信度,但也更加複雜、執行速度更慢、維護成本更高。因此,它們應該謹慎使用,正如上忍只被指派執行最關鍵的任務一樣。
影是村子裡最強大、最受尊敬的忍者,負責制定戰略、政治和軍事決策,並在危機時刻保護村莊。影擁有豐富的經驗,並統領所有其他等級的忍者。

在這個比喻中,Kage代表手動測試。儘管測試金字塔專注於自動化,但手動測試仍然至關重要。缺少手動測試,整個策略都可能失敗。手動測試幫助品質保證人員和開發人員決定哪些環節應該自動化、在哪個層級自動化,以及哪些環節最好不要自動化。它們可以防止低價值的自動化,並確保測試工作始終與業務目標保持一致。
暗部並非正式的軍銜,而是一支直接向影報告的特種部隊。其成員執行諸如間諜活動、滲透和保護關鍵情報等敏感任務,行動隱秘,通常不被察覺。

該職位與非功能性測試(例如效能測試、負載測試和安全測試)非常契合。這些測試著重於系統的技術特性而非功能。雖然它們的執行頻率可能不如其他測試,但其影響卻十分顯著,因為它們直接影響系統的穩定性、可靠性和可信度。
就像一個村莊依靠強大的下忍、能幹的中忍、精銳的上忍、睿智的影級領導和專業的暗部部隊來維持運轉一樣,一個健全的測試策略也依賴於紮實的非功能性驗證。當這些要素平衡得當時,團隊就能自信、高品質且可持續地交付軟體。
原文出處:https://dev.to/m4rri4nne/from-genin-to-kage-understanding-the-test-pyramid-with-naruto-jbk