Skip to main content

testing

[UDS] 測試金字塔與 UT/IT/ST/E2E 測試撰寫標準

소스 정보

저장소
AsiaOstrich/dev-autopilot
최근 소스 활동
2026년 3월 24일 06:46
감지된 SKILL.md 언어
중국어
스타
6
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
3 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
source
../../../../skills/testing-guide/SKILL.md
source_version
1.2.0
translation_version
1.2.0
last_synced
2026-02-10T00:00:00.000Z
status
current
name
testing
description
[UDS] 測試金字塔與 UT/IT/ST/E2E 測試撰寫標準
scope
uds-specific
# 測試指南 > **語言**: [English](../../../../skills/testing-guide/SKILL.md) | 繁體中文 **版本**: 1.1.0 **最後更新**: 2025-12-29 **適用範圍**: Claude Code Skills --- ## 目的 本 Skill 提供測試金字塔標準和系統化測試的最佳實踐,支援 ISTQB 和業界通行金字塔框架。 ## 框架選擇 | 框架 | 層級 | 適用場景 | |-----------|--------|----------| | **ISTQB** | UT → IT/SIT → ST → AT/UAT | 企業級、合規性、正式 QA | | **業界通行金字塔** | UT (70%) → IT (20%) → E2E (10%) | 敏捷、DevOps、CI/CD | **整合測試縮寫說明:** - **IT** (Integration Testing):敏捷/DevOps 社群常用 - **SIT** (System Integration Testing):企業/ISTQB 環境常用 - 兩者指的是相同的測試層級 ## 快速參考 ### 測試金字塔(業界標準) ``` ┌─────────┐ │ E2E │ ← 10%(較少、較慢) ─┴─────────┴─ ┌─────────────┐ │ IT/SIT │ ← 20%(整合測試) ─┴─────────────┴─ ┌─────────────────┐ │ UT │ ← 70%(單元測試) └─────────────────┘ ``` ### 測試層級概覽 | 層級 | 範圍 | 速度 | 相依性 | |-------|-------|-------|-------------| | **UT** | 單一函式/類別 | < 100ms | Mock | | **IT/SIT** | 元件互動 | 1-10秒 | 真實資料庫(容器化) | | **ST** | 完整系統(ISTQB) | 分鐘級 | 類生產環境 | | **E2E** | 使用者旅程 | 30秒+ | 所有真實環境 | | **AT/UAT** | 業務驗證(ISTQB) | 視情況 | 所有真實環境 | ### 覆蓋率目標 | 指標 | 最低要求 | 建議值 | |--------|---------|-------------| | 行覆蓋率 | 70% | 85% | | 分支覆蓋率 | 60% | 80% | | 函式覆蓋率 | 80% | 90% | ## 詳細指南 完整標準請參考: - [測試金字塔](./testing-pyramid.md) ### AI 優化格式(Token 高效) 供 AI 助理使用,請採用 YAML 格式檔案以減少 Token 使用量: - 基礎標準:`ai/standards/testing.ai.yaml` - 框架選項: - ISTQB 框架:`ai/options/testing/istqb-framework.ai.yaml` - 業界通行金字塔:`ai/options/testing/industry-pyramid.ai.yaml` - 測試層級選項: - 單元測試:`ai/options/testing/unit-testing.ai.yaml` - 整合測試:`ai/options/testing/integration-testing.ai.yaml` - 系統測試:`ai/options/testing/system-testing.ai.yaml` - E2E 測試:`ai/options/testing/e2e-testing.ai.yaml` ## 命名慣例 ### 檔案命名 ``` [ClassName]Tests.cs # C# [ClassName].test.ts # TypeScript [class_name]_test.py # Python [class_name]_test.go # Go ``` ### 方法命名 ``` [MethodName]_[Scenario]_[ExpectedResult]() should_[behavior]_when_[condition]() test_[method]_[scenario]_[expected]() ``` ## 測試替身 | 類型 | 用途 | 使用時機 | |------|---------|-------------| | **Stub** | 回傳預定義值 | 固定 API 回應 | | **Mock** | 驗證互動 | 檢查方法是否被呼叫 | | **Fake** | 簡化實作 | 記憶體資料庫 | | **Spy** | 記錄呼叫、委派 | 部分 Mock | ### 何時使用 - **UT**: 對所有外部相依使用 mock/stub - **IT**: 資料庫使用 fake,外部 API 使用 stub - **ST**: 真實元件,僅對外部服務使用 fake - **E2E**: 全部使用真實環境 ## AAA 模式 ```typescript test('method_scenario_expected', () => { // Arrange - 設定測試資料 const input = createTestInput(); const sut = new SystemUnderTest(); // Act - 執行行為 const result = sut.execute(input); // Assert - 驗證結果 expect(result).toBe(expected); }); ``` ## FIRST 原則 - **F**ast(快速) - 測試執行快速 - **I**ndependent(獨立) - 測試之間不互相影響 - **R**epeatable(可重複) - 每次執行結果相同 - **S**elf-validating(自我驗證) - 明確的通過/失敗 - **T**imely(及時) - 與產品代碼一起撰寫 ## 應避免的反模式 - ❌ 測試相依(測試必須按順序執行) - ❌ 不穩定測試(有時通過、有時失敗) - ❌ 測試實作細節 - ❌ 過度 Mock - ❌ 缺少斷言 - ❌ 魔術數字/字串 --- ## 設定偵測 本 Skill 支援專案特定設定。 ### 偵測順序 1. 檢查 `CONTRIBUTING.md` 的「停用 Skills」區段 - 如果列出此 Skill,則為該專案停用 2. 檢查 `CONTRIBUTING.md` 的「測試標準」區段 3. 若未找到,**預設使用標準覆蓋率目標** ### 首次設定 若未找到設定且上下文不清楚時: 1. 詢問使用者:「此專案尚未設定測試標準。您想要自訂覆蓋率目標嗎?」 2. 使用者選擇後,建議在 `CONTRIBUTING.md` 中記錄: ```markdown ## Testing Standards ### Coverage Targets | Metric | Target | |--------|--------| | Line | 80% | | Branch | 70% | | Function | 85% | ``` ### 設定範例 在專案的 `CONTRIBUTING.md` 中: ```markdown ## Testing Standards ### Coverage Targets | Metric | Target | |--------|--------| | Line | 80% | | Branch | 70% | | Function | 85% | ### Testing Framework - Unit Tests: Jest - Integration Tests: Supertest - E2E Tests: Playwright ``` --- ## 相關標準 - [測試標準](../../core/testing-standards.md) - [程式碼審查檢查清單](../../core/code-review-checklist.md) --- ## 版本歷史 | 版本 | 日期 | 變更內容 | |---------|------|---------| | 1.1.0 | 2025-12-29 | 新增:框架選擇(ISTQB/業界通行金字塔)、IT/SIT 縮寫說明 | | 1.0.0 | 2025-12-24 | 新增:標準區段(目的、相關標準、版本歷史、授權) | --- ## 授權 本 Skill 以 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 授權發布。 **來源**: [universal-dev-standards](https://github.com/AsiaOstrich/universal-dev-standards)
GitHub에서 보기