Что такое мощность теста?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Мощность теста — способность выявлять дефекты
Мощность теста (Test Coverage / Test Strength) — это характеристика, которая показывает, насколько хорошо тест способен обнаружить дефекты и ошибки в системе. Это мера эффективности, полноты и качества тестирования.
Что измеряет мощность теста
Мощность отвечает на вопрос:
- Насколько полно тест проверяет функциональность?
- Какой процент кода покрыт тестами?
- Сколько потенциальных ошибок может найти тест?
- Насколько качественно описаны критерии приёмки?
Типы мощности тестов
1. Code Coverage (Покрытие кода)
- % строк кода, выполняемых при тестировании
- Обычно целевой уровень: 80-90%
- Измеряется инструментами: JaCoCo, Istanbul, pytest-cov
2. Statement Coverage — выполнено ли каждое утверждение 3. Branch Coverage — проверены ли все ветки if/else 4. Path Coverage — пройдены ли все возможные пути выполнения
5. Functional Coverage (Функциональное покрытие)
- % требований, покрытых тестами
- Все ли user stories имеют тесты?
- Все ли acceptance criteria проверены?
6. Data Coverage — все ли типы данных протестированы (valid, invalid, edge cases)
Пример мощности теста
Плохая мощность (низкая):
Функция: calculateDiscount(price, discount_percent)
Тест: calculateDiscount(100, 10) → 90 ✓
Проблема: тест только проверил happy path, не проверил:
- Отрицательные значения
- Нулевые значения
- Discount > 100%
- Null/undefined
Хорошая мощность (высокая):
Тесты:
- calculateDiscount(100, 10) → 90 ✓ (happy path)
- calculateDiscount(0, 10) → 0 ✓ (граница)
- calculateDiscount(100, 0) → 100 ✓ (граница)
- calculateDiscount(100, 150) → Error ✓ (ошибка)
- calculateDiscount(-50, 10) → Error ✓ (невалидные данные)
- calculateDiscount(null, 10) → Error ✓ (null)
Как повысить мощность тестов
1. Увеличить coverage:
- Добавить unit тесты для каждой функции
- Покрыть все ветки if/else
- Обработать edge cases и граничные значения
2. Улучшить acceptance criteria:
- Четко описать, что принимать, а что нет
- Добавить примеры: когда работает, когда не работает
- Включить данные для negative tests
3. Разные типы тестов:
- Unit: каждая функция
- Integration: взаимодействие модулей
- E2E: полные сценарии пользователя
- Performance: нагрузочное тестирование
4. Граничные и исключительные случаи:
- Минимальные и максимальные значения
- Пустые данные
- Null/undefined
- Особые символы
- Ошибки при интеграции
Целевые показатели мощности
Code Coverage:
- Критические системы: 90%+
- Обычные приложения: 80-85%
- Legacy код: 60-70%
Functional Coverage:
- 100% требований должны быть протестированы
- Каждый acceptance criterion должен иметь тест
Инструменты для измерения
- Python: pytest-cov, coverage.py
- JavaScript: Istanbul, Nyc
- Java: JaCoCo
- CI/CD: SonarQube (анализ качества)
Мощность теста — это ключевая метрика качества. Без неё невозможно гарантировать стабильность системы.