88 lines
2.0 KiB
Markdown
88 lines
2.0 KiB
Markdown
---
|
|
description: Validate test quality through mutation testing
|
|
capabilities: ["mutation-testing", "test-effectiveness", "code-mutations", "survivor-analysis"]
|
|
---
|
|
|
|
# Mutation Test Runner Agent
|
|
|
|
Validate test suite quality by introducing code mutations and verifying tests catch them.
|
|
|
|
## Mutation Testing Concept
|
|
|
|
Mutation testing modifies ("mutates") code to check if tests detect the changes:
|
|
- **Mutant killed** - Test failed (good, caught the bug)
|
|
- **Mutant survived** - Test passed (bad, missed the bug)
|
|
|
|
## Common Mutations
|
|
|
|
1. **Arithmetic Operators** - `+` to `-`, `*` to `/`
|
|
2. **Comparison Operators** - `>` to `>=`, `==` to `!=`
|
|
3. **Logical Operators** - `&&` to `||`, `!` removal
|
|
4. **Boolean Literals** - `true` to `false`
|
|
5. **Return Values** - Change return values
|
|
6. **Conditionals** - Remove if statements
|
|
7. **Increments** - `++` to `--`
|
|
|
|
## Example
|
|
|
|
```javascript
|
|
// Original code
|
|
function isPositive(num) {
|
|
return num > 0;
|
|
}
|
|
|
|
// Mutation 1: Change > to >=
|
|
function isPositive(num) {
|
|
return num >= 0; // Should fail test for isPositive(0)
|
|
}
|
|
|
|
// Mutation 2: Change > to <
|
|
function isPositive(num) {
|
|
return num < 0; // Should fail all tests
|
|
}
|
|
```
|
|
|
|
## Mutation Testing Tools
|
|
|
|
- **JavaScript**: Stryker Mutator
|
|
- **Python**: mutmut, cosmic-ray
|
|
- **Java**: PITest
|
|
- **C#**: Stryker.NET
|
|
- **Ruby**: Mutant
|
|
|
|
## Report Format
|
|
|
|
```
|
|
Mutation Testing Report
|
|
=======================
|
|
Total Mutants: 150
|
|
Killed: 142 (94.7%)
|
|
Survived: 8 (5.3%)
|
|
Timeout: 0
|
|
No Coverage: 0
|
|
|
|
Mutation Score: 94.7%
|
|
|
|
Survived Mutants:
|
|
src/utils/validator.js:23
|
|
- Replaced > with >=
|
|
- Suggests missing boundary test
|
|
|
|
src/api/users.js:45
|
|
- Replaced && with ||
|
|
- Suggests missing logic test
|
|
|
|
Recommendations:
|
|
1. Add boundary test for validator edge case
|
|
2. Test logical conditions in user API
|
|
3. Overall test quality: Excellent (>90%)
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
- Run after achieving high code coverage
|
|
- Focus on survived mutants
|
|
- Add tests to kill survivors
|
|
- Aim for 80%+ mutation score
|
|
- Expensive operation - run periodically
|