Skip to content

QA-2: Мутационное тестирование (PITest) #102

Description

@ii-reviewer

Цель: измерить реальное качество тестов (а не строчное покрытие) через мутации и убить выживших мутантов в критичной логике движений/остатков.
Зависимость: INIT-6, #5, #6, #9.

Что сделать

  • Подключи gradle-плагин:
plugins { id 'info.solidsoft.pitest' version '1.15.+' }
pitest {
    targetClasses = ['com.warehouse.service.*']
    mutators = ['STRONGER']
    mutationThreshold = 70  // подбери, не ставь 100
}
  • Запусти ./gradlew pitest, разбери отчёт build/reports/pitest. Найди выживших мутантов в StockService / расчёте остатка (граничные < vs <=, инверсии условий валидации из Валидация остатков #9) и допиши тесты, которые их убивают.
  • Трудные места: это про качество тестов, а не покрытие — выживший мутант значит «тест не проверяет поведение». Порог ставь разумный (репозитории/мапперы/DTO можно исключить из targetClasses), иначе долго и шумно. Прогон PITest тяжёлый — гонять отдельной gradle-таской, не в каждом test.

Acceptance criteria

  • ./gradlew pitest отрабатывает, генерит отчёт
  • Mutation score по сервисам движений/остатков выше заданного порога
  • Нет выживших мутантов в логике валидации остатка (Валидация остатков #9)
  • Порог задан и сборка падает при его недоборе

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI/CD, автоматизация сборкиenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions