| name | trivial-tests |
| description | Audit tests for triviality: finds tests that create coverage illusion but catch no real bugs. Classifies each as trivial/suspect/useful. Read-only analysis.
|
| argument-hint | [file, directory, or package to audit; empty = recent changes] |
| model | sonnet |
| allowed-tools | Read, Glob, Grep |
Задача
Аудит тривиальности тестов. $ARGUMENTS
Контекст (предвычислено)
!git diff --name-only HEAD~5 2>/dev/null | grep -E '\.(test\.tsx|test_.*\.py)$' | head -20
Паттерны тривиальности
| # | Паттерн | Пример |
|---|
| T1 | Existence check без содержимого | assert x is not None |
| T2 | Tautology (гарантировано типами/конструктором) | assert isinstance(Foo(), Foo) |
| T3 | Mirror — assertion = копия реализации | assert name == f"{first} {last}" |
| T4 | Mock echo — mock вернул то, что в него положили | mock.rv = 42; assert svc.get() == 42 |
| T5 | Interaction-only — только called_with, нет проверки результата | |
| T6 | Vacuously true — assertion всегда проходит | assert len(x) >= 0 |
| T7 | Trivial constructor — только присваивание, нет логики | Foo(a=1); assert obj.a == 1 |
| T8 | Type-only — isinstance при static typing | |
T7 НЕ тривиален если: factory method с uuid/datetime, валидация, вычисляемые поля, контракт агрегата (много полей + связи).
Алгоритм
- Scope: файл/директория из аргумента, или предвычисленные файлы, или
packages/back/tests/ + front *.test.tsx
- Для каждого теста: прочитай тест → прочитай SUT (реализацию) → классифицируй
- Категории: TRIVIAL (паттерн T1–T8, нет исключений) / SUSPECT (граница) / USEFUL
- Для TRIVIAL — предложи конкретную альтернативу, привязанную к SUT
Обязательно читай реализацию SUT перед классификацией. Security-тесты и state-матрицы не могут быть тривиальными.
При сомнении → SUSPECT.
Формат
## Аудит тривиальности: [scope]
| Метрика | Значение |
|---------|----------|
| Файлов | N |
| Тестов | M |
| TRIVIAL | X (Y%) |
| SUSPECT | A (B%) |
### TRIVIAL
| # | Файл:строка | Тест | Паттерн | Что проверять вместо |
|---|-------------|------|---------|---------------------|
| 1 | path:42 | test_xxx | T7 | проверить валидацию при пустом name |
### SUSPECT
| # | Файл:строка | Тест | Что полезно | Что тривиально |
|---|-------------|------|-------------|----------------|
| 1 | path:88 | test_yyy | проверяет status | не проверяет error case |
### Рекомендации
1. [конкретное действие привязанное к файлу/тесту]
Если TRIVIAL = 0: ✅ Тривиальных тестов не найдено.
Запрещено
- Редактировать файлы — только анализ
- Называть тест тривиальным без чтения SUT
- Рекомендовать удаление без альтернативы
- Общие советы без привязки к конкретному тесту