Принципы тестирования
Принципы тестирования
Введение
В тестировании, как и в других инженерных дисциплинах, существуют фундаментальные принципы — правила, которые накоплены десятилетиями опыта. Их семь, и они описаны в стандарте ISTQB. Знание этих принципов помогает принимать правильные решения: когда остановить тестирование, почему нельзя протестировать всё и почему баги «скапливаются» в определённых местах.
Принцип 1: Тестирование показывает наличие дефектов, но не их отсутствие
Тестирование может доказать, что дефекты есть. Но оно не может доказать, что дефектов нет.
Даже если ты прогнал тысячу тест-кейсов и всё прошло успешно — это не значит, что система свободна от ошибок. Это значит, что в проверенных сценариях ошибок не обнаружено.
«Программа с прошедшими тестами — это программа, в которой пока не нашли баги.»
Принцип 2: Исчерпывающее тестирование невозможно
Протестировать все возможные входные данные, все комбинации условий, все сценарии — нереально.
Пример: Поле для ввода числа от 1 до 100. Формально это 100 значений. Но добавь отрицательные числа, нули, буквы, пустую строку, очень длинные строки, символы Unicode — и комбинаций станут миллионы.
Вместо этого тестировщики используют анализ рисков и техники тест-дизайна, чтобы покрыть наиболее важные и вероятные случаи.
Принцип 3: Раннее тестирование экономит время и деньги
Чем раньше в жизненном цикле разработки обнаружен дефект, тем дешевле его исправить.
Дефект в требованиях, найденный на этапе планирования, исправляется правкой документа. Тот же дефект в продакшне — это hotfix, откат, потеря данных и потеря пользователей.
Вывод: Подключай тестировщиков к проекту с самого начала — ещё на этапе анализа требований.
Принцип 4: Скопление дефектов (Defect clustering)
Дефекты распределяются неравномерно. Как правило, 80% дефектов сосредоточены в 20% модулей.
Это называется правилом Парето, применённым к тестированию. Если в каком-то модуле уже нашли много багов — ищи там ещё. Риск высок именно там.
Практическое применение: Отслеживай, где находят больше всего багов, и уделяй этим местам больше внимания при регрессионном тестировании.
Принцип 5: Парадокс пестицида
Если постоянно запускать одни и те же тесты, они перестают находить новые дефекты. Как насекомые вырабатывают иммунитет к пестициду.
Почему это происходит: Код меняется. Разработчики исправляют найденные баги и не делают таких же ошибок снова. Но делают новые — в других местах, которые старые тесты не покрывают.
Решение: Регулярно обновляй тест-кейсы. Добавляй новые сценарии. Проводи исследовательское тестирование.
Принцип 6: Тестирование зависит от контекста
Нет универсальных рецептов тестирования. Подход зависит от:
- типа продукта (банковское приложение vs игра)
- рисков (медицинское ПО vs личный блог)
- команды и сроков
- требований регулятора
Пример: Для медицинского прибора, который управляет дозой лекарства, требуется гораздо более строгое и формальное тестирование, чем для мобильного приложения с рецептами блюд.
Принцип 7: Заблуждение об отсутствии ошибок
Найти и исправить все баги не означает, что продукт успешен. Система может быть технически без дефектов, но не отвечать потребностям пользователей.
Пример: Ты можешь идеально протестировать приложение для управления задачами. Если оно такое сложное, что пользователи не понимают, как им пользоваться — продукт провалится, несмотря на отсутствие багов.
Качество — это соответствие нуждам пользователей, а не только отсутствие дефектов.
Все 7 принципов кратко

| # | Принцип |
|---|---|
| 1 | Тестирование показывает наличие дефектов, но не их отсутствие |
| 2 | Исчерпывающее тестирование невозможно |
| 3 | Раннее тестирование экономит время и деньги |
| 4 | Скопление дефектов (80% багов в 20% модулей) |
| 5 | Парадокс пестицида (одни тесты перестают находить новые баги) |
| 6 | Тестирование зависит от контекста |
| 7 | Заблуждение об отсутствии ошибок |
Распространённые ошибки
- «Мы всё протестировали». Ты протестировал то, что тестировал. Исчерпывающее тестирование невозможно.
- «Тесты всё ещё зелёные, значит всё хорошо». Со временем старые тесты покрывают всё меньше реальных рисков — парадокс пестицида.
- «Мы нашли и исправили все баги». Тестирование не доказывает отсутствие дефектов.
Что запомнить
- Семь принципов тестирования — фундамент профессии QA
- Тестирование не доказывает отсутствие ошибок, только их наличие
- Тестировать всё невозможно — нужно расставлять приоритеты
- Ранние инвестиции в тестирование экономят деньги на поздних этапах
- Баги скапливаются в «проблемных» местах — отслеживай статистику