Skip to content
Back to skills

Testing Guide

ASecurity

测试金字塔,以及 UT/IT/ST/E2E 的测试编写标准。 支持 ISTQB 与业界通行金字塔两种框架。 Use when: 编写测试、讨论测试覆盖率、测试策略或测试命名时。 Not for: 驱动红-绿-重构循环——请用 /tdd;测量实际达成的覆盖率——请用 /coverage。 Keywords: test, unit, integration, e2e, coverage, mock, ISTQB, SIT, 测试, 单元测试, 集成测试, 端对端.

  • 75 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 4, 2026
developmenttypescriptpythongoc#dockertestingcode-reviewgitapidevops

Works with

  • claude code
  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 4, 2026

npx -y skills add AsiaOstrich/universal-dev-standards --skill testing-guide --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Testing Guide?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Testing Guide
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/asiaostrich-testing-guide-a30e10eb/badge)](https://www.skillsdirectory.com/skills/asiaostrich-testing-guide-a30e10eb)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
source: ../../../../skills/testing-guide/SKILL.md
source_version: 1.2.0
translation_version: 1.3.0
last_synced: 2026-08-17
source_hash: 372f9eca773d
status: current
name: testing
description: |
  测试金字塔,以及 UT/IT/ST/E2E 的测试编写标准。
  支持 ISTQB 与业界通行金字塔两种框架。
  Use when: 编写测试、讨论测试覆盖率、测试策略或测试命名时。
  Not for: 驱动红-绿-重构循环——请用 /tdd;测量实际达成的覆盖率——请用 /coverage。
  Keywords: test, unit, integration, e2e, coverage, mock, ISTQB, SIT, 测试, 单元测试, 集成测试, 端对端.
---

# 测试指南

> **语言**: [English](../../../../skills/testing-guide/SKILL.md) | 简体中文

**版本**: 1.2.0
**最后更新**: 2026-01-29
**适用范围**: Claude Code Skills

---

## 目的

本 Skill 提供测试金字塔标准和系统化测试的最佳实践,同时支持 ISTQB 与业界通行金字塔两种框架。

## 测试技能导航 | Testing Skills Navigator

UDS 提供 6 个与测试相关的 Skill。使用以下决策树找到合适的那一个:

```
你想做什么? | What do you want to do?
├── 测量代码覆盖率(行/分支/函数)             → /coverage
├── 追踪哪些需求已有测试(AC 可追溯性)         → /ac-coverage
├── 以测试驱动开发进行(红-绿-重构)           → /tdd
├── 编写 BDD 场景(Given-When-Then)           → /bdd
├── 与利益相关者定义验收测试                   → /atdd
└── 学习测试标准与最佳实践                     → /testing(本 Skill)
```

| Skill | 焦点 | Focus |
|-------|------|-------|
| `/testing` | 测试标准与最佳实践参考 | Standards and best practices reference |
| `/coverage` | 代码层级覆盖率分析 | Code-level coverage analysis |
| `/ac-coverage` | 需求层级 AC 可追溯性 | Requirement-level AC traceability |
| `/tdd` | 红-绿-重构开发循环 | Red-Green-Refactor development cycle |
| `/bdd` | Given-When-Then 行为场景 | Behavior scenarios with Given-When-Then |
| `/atdd` | 与利益相关者定义验收条件 | Acceptance criteria with stakeholders |

## 框架选择

| 框架 | 层级 | 适用场景 |
|-----------|--------|----------|
| **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% |

## 详细指南

完整标准请参考:
- [测试标准](../../core/testing-standards.md) - 可执行的规则
- [测试理论](./testing-theory.md) - 教学型知识库
- [测试金字塔](./testing-pyramid.md) - 详细的金字塔比例
- [测试骨架模板](../../../../skills/testing-guide/test-skeleton-templates.md) - 面向 UT/IT/ST/Perf/Contract 的多语言骨架

### 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`
  - 安全测试:`ai/options/testing/security-testing.ai.yaml`
  - 性能测试:`ai/options/testing/performance-testing.ai.yaml`
  - 契约测试:`ai/options/testing/contract-testing.ai.yaml`
- 骨架模板(涵盖所有层级、多语言):[test-skeleton-templates.md](../../../../skills/testing-guide/test-skeleton-templates.md)

## 命名惯例

### 文件命名

```
[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 - Setup test data
    const input = createTestInput();
    const sut = new SystemUnderTest();

    // Act - Execute behavior
    const result = sut.execute(input);

    // Assert - Verify result
    expect(result).toBe(expected);
});
```

## FIRST 原则

- **F**ast(快速) - 测试执行迅速
- **I**ndependent(独立) - 测试之间互不影响
- **R**epeatable(可重复) - 每次执行结果相同
- **S**elf-validating(自我验证) - 明确的通过/失败
- **T**imely(及时) - 与生产代码一起编写

## 应避免的反模式

- ❌ 测试相互依赖(测试必须按顺序执行)
- ❌ 不稳定测试(有时通过、有时失败)
- ❌ 测试实现细节
- ❌ 过度 Mock
- ❌ 缺少断言
- ❌ 魔术数字/字符串

---

## 测试理论要点(YAML 压缩)

```yaml
# === ISTQB FUNDAMENTALS ===
terminology:
  error: "Human mistake in thinking"
  defect: "Bug in code (caused by error)"
  failure: "System behaves incorrectly (caused by defect)"
  chain: "Error → Defect → Failure"

oracle_problem:
  definition: "How do we know the expected result is correct?"
  approaches:
    - specification_oracle: "Compare against spec"
    - reference_oracle: "Compare against reference impl"
    - consistency_oracle: "Same input → same output"
    - heuristic_oracle: "Reasonable approximation"

# === STATIC vs DYNAMIC ===
static_testing:
  definition: "Examine without executing"
  techniques: [reviews, walkthroughs, inspections, static_analysis]
  finds: "Defects before runtime"
  examples: [ESLint, SonarQube, code_review]

dynamic_testing:
  definition: "Execute and observe behavior"
  techniques: [unit, integration, system, acceptance]
  finds: "Failures during execution"

# === TEST DESIGN TECHNIQUES ===
black_box:
  equivalence_partitioning:
    principle: "Divide inputs into equivalent classes"
    example: "Age: [<0 invalid], [0-17 minor], [18-64 adult], [65+ senior]"
  boundary_value:
    principle: "Test at boundaries of partitions"
    example: "Age: test -1, 0, 17, 18, 64, 65"
  decision_table:
    principle: "Combinations of conditions → actions"
    use: "Complex business rules"
  state_transition:
    principle: "Valid sequences of states"
    use: "Workflow, state machines"

white_box:
  statement_coverage: "Every statement executed once"
  branch_coverage: "Every decision branch taken"
  condition_coverage: "Every condition T/F"
  path_coverage: "Every possible path (often impractical)"

# === RISK-BASED TESTING ===
risk_assessment:
  likelihood: "How likely to fail?"
  impact: "How bad if fails?"
  priority: "likelihood × impact"

risk_matrix:
  high_high: "Test extensively, first priority"
  high_low: "Good coverage"
  low_high: "Good coverage"
  low_low: "Basic coverage"

# === DEFECT MANAGEMENT ===
defect_lifecycle:
  states: [new, assigned, in_progress, fixed, verified, closed]
  reopen_trigger: "Verification fails"

severity_vs_priority:
  severity: "Technical impact (critical/major/minor/trivial)"
  priority: "Business urgency (high/medium/low)"
  example: "Typo on login page: low severity, high priority (brand)"

# === TEST ENVIRONMENT ===
isolation_levels:
  unit: "In-memory, mocked deps"
  integration: "Containerized DB (Docker)"
  staging: "Production-like, isolated"
  production: "Real, feature flags for testing"

test_data_strategies:
  fixtures: "Static predefined data"
  factories: "Dynamic generation (faker)"
  snapshots: "Sanitized production copy"
  synthetic: "Algorithm-generated edge cases"
```

---

## 设置侦测

本 Skill 支持项目特定的设置。

### 侦测顺序

1. 检查 `CONTRIBUTING.md` 的「Disabled Skills」(停用 Skills)区段
   - 如果列出此 Skill,则其在该项目被停用
2. 检查 `CONTRIBUTING.md` 的「Testing Standards」(测试标准)区段
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
```

---

## 下一步引导 | Next Steps Guidance

`/testing` 完成后,AI 助理应建议:

> **测试标准与最佳实践已掌握。建议下一步 / Testing standards and best practices understood. Suggested next steps:**
> - 执行 `/tdd` 开始测试驱动开发(红-绿-重构循环) ⭐ **推荐 / Recommended** — 将测试知识立即转化为实践 / Turn testing knowledge into practice immediately
> - 执行 `/coverage` 分析当前代码覆盖率 — 找出测试缺口 / Identify testing gaps
> - 执行 `/bdd` 编写行为驱动的 Given-When-Then 场景 — 从用户角度定义测试 / Define tests from user perspective

---

## 相关标准

- [测试标准](../../core/testing-standards.md) - 可执行的规则
- [测试理论](./testing-theory.md) - 教学型知识库
- [代码审查检查清单](../../core/code-review-checklist.md)

---

## 版本历史

| 版本 | 日期 | 变更内容 |
|---------|------|---------|
| 1.2.0 | 2026-01-29 | 新增指向新建 testing-theory.md 知识库的链接 |
| 1.1.0 | 2025-12-29 | 新增测试理论要点 YAML 区段 |
| 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)

Files in this skill

  • SKILL.md11.8 KB
  • testing-pyramid.md12.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…