用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Dev-Toolbelt/dev-team-agents --skill mutation-testing命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | mutation-testing |
| description | Mutation testing — code mutations to measure test suite quality. |
Code coverage tells you which lines were executed. Mutation testing tells you whether your tests actually catch bugs.
A mutant is a small, automated change to the production code (e.g., > → >=). If your test suite still passes after that change, the mutant survived — meaning no test would catch that bug in real code.
Mutation score = (mutants killed / total mutants) × 100
| Language | Tool | Notes |
|---|---|---|
| JavaScript / TypeScript | Stryker | Supports Jest, Vitest, Jasmine, Mocha |
| Java / Kotlin | PITest | Maven + Gradle plugins; fast incremental mode |
| Python | Mutmut | Simple CLI; integrates with pytest |
| PHP | Infection | PHPUnit + Pest; mutation badge support |
| Ruby | Mutant | Supports RSpec; strict coverage mode |
| Score | Interpretation | Action |
|---|---|---|
| ≥ 80% | Healthy test suite | Maintain; review survivors in critical paths |
| 60–79% | Acceptable; room to improve | Identify weakest modules; add targeted assertions |
| < 60% | Weak assertions throughout | Significant test quality problem; prioritize fixes |
A high line-coverage score with a low mutation score is a red flag — tests are running the code but not asserting the outcomes.
| Mutant | Example | What it reveals |
|---|---|---|
| Arithmetic operator swap | a + b → a - b | Missing assertion on computed value |
| Boundary condition | x > 0 → x >= 0 | Off-by-one not tested at the boundary |
| Boolean negation | isValid → !isValid | Condition outcome not asserted |
| Return value deletion | return result → return null | Caller does not assert the return value |
| Logical connector swap | && → || | Combined conditions not tested independently |
Apply mutation testing to:
Skip or deprioritize:
A surviving mutant = a specific test gap. The correct response is a targeted assertion, not generic additional tests.
Steps:
Do not chase 100% mutation score — some survivors are acceptable (e.g., equivalent mutants that produce identical behavior). Focus effort on critical paths.