Принципы тестирования

Тестирование - это не про “все проверить и сказать, что багов нет”, а скорее подход, чтоб найти максимум проблем за разумные деньги и время. 7 принципов тестирования придумали ещё в 90-х, но до сих пор актуальны!

1. Тестирование демонстрирует наличие дефектов, а не их отсутствие (тестирование снижает вероятность наличия скрытых багов, но не доказывает их полное отсутствие) Ты тестировал перевод денег, провел 500 кейсов, посмотрел что все круглые суммы идеально приходят, комиссия считается корректно. Но в 501 кейсе, где есть плавающая точка, случается ошибка, комиссия посчиталась неверно! Отсутствие багов в твоих тестах != отсутствие багов вообще

2. Заблуждение об отсутствии ошибок Если мы найдем 47 багов, все пофиксим и зарелизим, это не значит что продукт готов. Суть в том чтоб пользователю этот продукт был нужен и решал его задачи. //Как пример - приложение для поиска работы все такое идеальное, быстрое, классное, но без фильтра “удаленка” в 2026 году- бесполезно. Пользователь выберет в HH или Avito, где эта фича есть

3. Исчерпывающее тестирование невозможно Невозможно проверить все комбинации входных данных и сценариев использования. Для формы логина с 8-символьным паролем, 95 символов в алфавите и 3 попытками - это 10¹⁵ вариантов. Даже если проверять 1 миллиард комбинаций в секунду, то понадобится 210 лет //Тестируем разумно - ТТД, риски, приоритеты, исследуем + автоматизация самых важных сценариев

4. Раннее тестирование Важно включать тестирование на ранних этапах (анализ требований, дизайн) это сильно снижает стоимость исправлений Баг в требованиях > фикс стоит 1× Баг в коде > 5-10× Баг в проде > 100-1000× (+даунтайм, потеря доверия, поддержка) //Например на груминге QA спросит: “А если пользователь без опыта получит выборку вакансий на сеньора? Это будет странно”. Аналитик поправит документацию и баг не попадает в код. А если бы спросили после релиза - пришлось бы переобучать модель, переписывать фронт и тд

5. Парадокс пестицида Если один и тот же автотест бегает каждый день и всегда зеленый, то со временем станет бесполезным. Как пестицид- тараканы привыкают и перестают травиться. Важно поддерживать тесты и менять данные + добавлять edge-кейсы //Как пример- автотест логина проверяет только логин “user” и пароль “12345”. Он всегда проходит. Но если в бэке добавили проверку на спецсимволы или минимальную длину 12 символов, то тест не заметит. Пользователь введет “MyP@ssw0rd2!” и получает 400, а автотест говорит “все ок” ** 6. Скопление дефектов** 80% багов обычно находятся в 20% кода (закон Парето в тестировании) //Например анализ логов показал, что в интернет-магазине 78% всех крашей и ошибок 400/500 происходят в модуле оформления заказа (промокоды + оплата + доставка). А страница “О нас” почти всегда чистая

7. Тестирование зависит от контекста Не существует универсальной стратегии. Подход зависит от типа продукта, рисков и бизнес-целей //Примеры: - E-commerce перед Черной пятницей - обязательно нагрузочное тестирование на 10× трафик + стресс-тесты оплаты - Внутренний корпоративный портал - тут почти не нужно нагрузочное, но обязательно тестирование ролей и прав доступа

Принципы тестирования | Сетка — социальная сеть от hh.ru