Теория тестирования
7 принципов тестирования и парадокс пестицида
Принципы тестирования – семь правил из программы сертификации ISTQB о том, что тестирование может дать и чего не может. Оно показывает наличие дефектов, но не доказывает их отсутствие, проверить всё невозможно, начинать стоит как можно раньше, дефекты скапливаются в немногих модулях, а одни и те же тесты со временем перестают находить новое (это и есть парадокс пестицида). Подход всегда зависит от контекста, и продукт без найденных ошибок всё равно провалится, если не решает задачу пользователя.
- ISTQB
- принципы входят в программу международной сертификации тестировщиков
- Парадокс пестицида
- как с ним бороться, часто спрашивают на собеседовании
- Бесплатно
- урок с заданиями в моём базовом курсе
Семь принципов с примерами
Формулировки взяты из программы ISTQB Foundation Level. В версии программы 2023 года пятый принцип называется "тесты изнашиваются" (tests wear out), но на собеседованиях и в русскоязычных материалах его по-прежнему зовут парадоксом пестицида.
1. Тестирование показывает наличие дефектов
Тесты могут показать, что дефект есть, но не могут доказать, что дефектов нет. Прогон без единого падения означает лишь, что в проверенных сценариях ошибок не нашлось.
2. Исчерпывающее тестирование невозможно
Даже у одного поля "Возраст" вариантов ввода больше, чем успеть перебрать: числа, дроби, буквы, пробелы, пустое значение. Поэтому проверки выбирают по рискам и приоритетам, а техники тест-дизайна сокращают перебор.
3. Раннее тестирование экономит время и деньги
Противоречие в требованиях, замеченное при чтении, исправляют одной правкой текста. После релиза та же ошибка стоит переделки кода, повторной проверки и обращений в поддержку.
4. Дефекты скапливаются
Большая часть дефектов обычно сидит в небольшой части модулей. Если вход в систему ломается от сборки к сборке, проверять его стоит чаще и глубже остального.
5. Парадокс пестицида
Набор тестов, который прогоняют без изменений, с каждым разом находит меньше новых ошибок. Его регулярно пересматривают и дополняют новыми проверками.
6. Тестирование зависит от контекста
Программу для медицины проверяют тщательнее, чем компьютерную игру. Сайту с большой посещаемостью нужно нагрузочное тестирование, а небольшой визитке оно почти ни к чему.
7. Заблуждение об отсутствии ошибок
Если тестирование не нашло дефектов, программа от этого ещё не готова к релизу. Неудобный продукт, который не решает задачу пользователя, исправленные баги не спасут.
Почему проверить всё нельзя
Первые два принципа задают рамки профессии. Тестирование снижает вероятность того, что в продукте остались дефекты, но если их не нашли, утверждать, что их нет, всё равно нельзя. По моему опыту, баги в продукте есть всегда.
Протестировать абсолютно всё тоже не выйдет. Даже когда кажется, что это возможно, на перебор уйдёт огромное количество времени, а время в разработке стоит денег. Как тогда быть уверенным, что продукт работает? Полной уверенности тестирование не даёт, поэтому оно опирается на риски и приоритеты: сначала проверяют то, поломка чего обойдётся дороже всего. Техники тест-дизайна помогают покрыть как можно больше случаев минимальным числом проверок.
Например, поле суммы перевода в банковском приложении принимает от 1 до 600 000 рублей с копейками. Допустимых значений в нём почти 60 миллионов, и это без недопустимых. Вместо перебора берут классы эквивалентности и границы: 0,99, 1 и 1,01, 599 999,99, 600 000 и 600 000,01, а к ним пустое поле, буквы и отрицательную сумму.
Раннее тестирование и скопление дефектов
Чем позже найден дефект, тем дороже его исправить. Ошибку в требованиях правят в документе, а ту же ошибку в готовом продукте приходится исправлять в коде, заново проверять и выпускать новую версию. Поэтому тестирование начинается раньше, чем написан код, с чтения требований и вопросов к ним. У каждой такой активности есть цель, и чаще всего это экономия денег заказчика.
Скопление дефектов часто объясняют правилом Парето: примерно 80% дефектов находится в 20% функций. Ошибки собираются в отдельных частях приложения, и тестировщик распределяет усилия соразмерно тому, где их находят. Например, если в модуле входа в систему дефекты появляются постоянно, больше всего времени стоит тратить именно на него.
Парадокс пестицида и как с ним бороться
Если прогонять одни и те же тесты снова и снова, они находят всё меньше новых ошибок. Система развивается, найденные раньше дефекты исправлены, и старые проверки больше не срабатывают.
Название взято из сельского хозяйства. Насекомые и сорняки, которых травят одним и тем же пестицидом, привыкают к нему, и с каждым разом средство губит всё меньше.
Например, регресс корзины интернет-магазина полгода проходит по одним и тем же сорока кейсам, и они давно не падают. Набор оживляют новые проверки: промокод вместе с подарочной картой, товар, который закончился на складе, пока лежал в корзине, оформление одного заказа в двух вкладках. Старые кейсы такие сценарии не проходят, поэтому дефекты в них им не найти.
Как преодолеть парадокс, часто спрашивают на собеседовании, так что ответ стоит запомнить.
Пересматривать наборы тестов
Регулярно править тесты, убирать устаревшие проверки и добавлять новые под текущее состояние системы.
Осваивать новые техники
Изучать новые методы тестирования и пробовать их в работе. Другая техника выводит на другие дефекты.
Отдавать тесты коллегам
Просить других участников команды пройти те же тесты. Другой человек пройдёт сценарий по-своему и заметит то, мимо чего автор тестов проходит по привычке.
Менять тестировщиков местами
Устраивать ротацию, чтобы одну и ту же функциональность в разное время проверяли разные люди.
Контекст и заблуждение об отсутствии ошибок
Методологию, техники и виды тестирования выбирают под природу программы. Медицинское программное обеспечение требует более тщательной проверки, чем компьютерная игра, а сайт с большой посещаемостью должен пройти серьёзное нагрузочное тестирование, чтобы показать, что выдержит наплыв посетителей. От контекста зависит и документация: для сложного продукта лучше подходят тест-кейсы, для простого часто хватает чек-листов.
Седьмой принцип напоминает, что отсутствие найденных дефектов ещё не означает готовность к релизу. Поиск и исправление ошибок ничего не дадут, если система окажется неудобной и не будет отвечать нуждам пользователей. Здесь пригодится разница между верификацией и валидацией: первая проверяет соответствие требованиям, вторая – то, решает ли продукт задачу пользователя.
Видеоурок, шпаргалка и задания
Я разбираю принципы во втором уроке курса "Тестировщик с нуля" на YouTube. В бесплатном базовом курсе по тестированию этой теме посвящён урок "Принципы тестирования", и после теории в нём идут задания.
Шпаргалка собирает все семь принципов на одной странице: к каждому определение по ISTQB, что оно меняет в работе и разбор рабочей ситуации.
Курсы по теме
Вопросы и ответы
Какие 7 принципов тестирования существуют?
Тестирование показывает наличие дефектов, исчерпывающее тестирование невозможно, раннее тестирование экономит время и деньги, дефекты скапливаются, парадокс пестицида, тестирование зависит от контекста, заблуждение об отсутствии ошибок. Список взят из программы ISTQB Foundation Level, и на собеседованиях спрашивают именно его.
Что такое парадокс пестицида простыми словами?
Тесты, которые прогоняют без изменений, со временем перестают находить новые дефекты, так же как насекомые привыкают к одному и тому же яду. Поэтому наборы тестов регулярно пересматривают и дополняют.
Как бороться с парадоксом пестицида?
Регулярно пересматривать и обновлять наборы тестов, осваивать новые техники тест-дизайна, давать прогонять тесты коллегам и менять тестировщиков местами, чтобы одну функциональность в разное время проверяли разные люди. Это ответ на частый вопрос с собеседования.
Почему исчерпывающее тестирование невозможно?
Комбинаций входных данных, состояний и окружений у любой программы больше, чем можно перебрать за разумное время. Поэтому проверки выбирают по рискам и приоритетам, а техники тест-дизайна помогают закрыть как можно больше случаев небольшим числом тестов.
Спрашивают ли принципы тестирования на собеседовании?
Да, на собеседовании junior-тестировщика их спрашивают часто: просят перечислить принципы или объяснить один из них на примере. Отдельным вопросом нередко звучит, как бороться с парадоксом пестицида.
Посмотреть программы курсов
Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.
