Rusau LearnВойти

Теория тестирования

7 принципов тестирования и парадокс пестицида

Принципы тестирования – семь правил из программы сертификации ISTQB о том, что тестирование может дать и чего не может. Оно показывает наличие дефектов, но не доказывает их отсутствие, проверить всё невозможно, начинать стоит как можно раньше, дефекты скапливаются в немногих модулях, а одни и те же тесты со временем перестают находить новое (это и есть парадокс пестицида). Подход всегда зависит от контекста, и продукт без найденных ошибок всё равно провалится, если не решает задачу пользователя.

Мой видеоурок: Урок 2. Принципы тестирования. Что такое парадокс пестицида?Открыть на YouTube
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-тестировщика их спрашивают часто: просят перечислить принципы или объяснить один из них на примере. Отдельным вопросом нередко звучит, как бороться с парадоксом пестицида.

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее