В тестировании есть множество классификаций по разным признакам: например, по целям (функциональное или нефункциональное), по степени автоматизации (ручное или автоматическое), уровню тестирования (модульное, интеграционное, системное, приемочное). Все они полезны в зависимости от задач.
Но в основе всего тестирования лежит классификация по позитивности сценария. Этот подход позволяет понять, как система ведет себя и в привычных, и в нестандартных условиях.
Что такое позитивное тестирование
Позитивное тестирование — это фундаментальный этап проверки качества. Его ключевая цель — проверить, что продукт функционирует согласно требованиям при работе с корректными данными.
При этом позитивные тесты обязательно проводят первыми, чтобы убедиться, что хотя бы базовые сценарии работают без ошибок. Если на этом этапе система «ломается», то дальнейшие проверки могут быть заблокированы.
Зачастую позитивное тестирование не ограничивается только одним сценарием. Например, чтобы забронировать столик в ресторане, вы чаще всего можете либо позвонить по телефону, либо заполнить форму на сайте, но итог будет один — подтверждение вашей записи. В тестировании позитивных сценариев очень важно обращать внимание на все кейсы, включая альтернативные.
Зачем нужно позитивное тестирование
Первая и основная цель позитивных тестов — подтверждение базовой работоспособности. С их помощью мы можем удостовериться, что основные сценарии работают без ошибок. Чаще всего у пользователей приложения нет желания его сломать — они просто хотят воспользоваться основными функциями. Нам важнее проверить, что в поле «ФИО» можно ввести буквы, нежели проверить реакцию приложения на ввод цифр.
Во-вторых, позитивные тесты служат опорой для последующих техник. Негативное тестирование, анализ граничных значений и другие методы накладываются на уже работающую основу.
В-третьих, вовремя проведенное позитивное тестирование помогает выявить ошибки на ранних стадиях разработки. Это значительно снижает стоимость исправления дефектов.
Примеры позитивных тестов
Рассмотрим несколько базовых примеров, с которыми каждый из нас сталкивался хоть раз в жизни.
Калькулятор
У простого калькулятора четыре основных функции: сложение, вычитание, умножение и деление. Чтобы проверить базовый функционал, мы введем валидные значения и проверим следующие сценарии:
- 1+4 должно быть равно 5;
- 5-2 должно быть равно 3;
- 12/3 должно быть равно 4;
- 3×2 должно быть равно 6.

В этом случае мы не смотрим, может ли калькулятор обрабатывать ошибки (например, деление на ноль), а проверяем основные сценарии на корректных данных.
Форма авторизации
Допустим, мы хотим авторизоваться на каком-либо сайте. Для этого в окне авторизации нужно ввести корректный логин и пароль, а затем нажать кнопку «Войти». Если после этого мы будем авторизованы, то окажемся на корректной странице и сможем пользоваться всеми возможностями сайта. Это будет означать, что позитивная проверка прошла успешно.
Отправка формы с данными
Например, для подписки на рассылку Академии Selectel нужно ввести корректный адрес электронной почты и дать согласие на обработку персональных данных.


Если ввести валидные данные, на почту придет письмо, в котором нужно подтвердить подписку на рассылку.


Соответственно, в данном позитивном сценарии ожидаемый результат — письмо на почте пользователя.
После того, как мы проверили основные пользовательские сценарии с валидными данными и убедились в их работоспособности, перейдем к проверке негативных сценариев. Позитивные кейсы показывают, что продукт работает, однако только негативное тестирование показывает, что продукт не «ломается». Это проверка устойчивости системы к некорректным данным, неправильным действиям и попыткам выйти за пределы условий, для которых проектировали систему.
Без негативных тестов поведение приложения в реальной эксплуатации будет непредсказуемым: пользователи могут ввести неверные значения, нарушить формат данных, оставить часть полей пустыми, нажать кнопку на клавиатуре во время загрузки страницы или ввести дату 30.02. По этой причине тестировщик должен проверять не только сценарии в духе «как должно работать», но и «как работать не должно».
Что такое негативное тестирование
Негативное тестирование — это серия проверок, в которых входные данные, шаги или условия сознательно выводятся за рамки допустимого. Основная задача этого типа тестирования — убедиться, что система в таком случае не падает, а корректно сообщает об ошибке.
Зачем нужно негативное тестирование
Негативное тестирование помогает защитить продукт от ошибок пользователей, выявить уязвимости и улучшить пользовательский опыт.
Защита от реального поведения пользователя. Ошибки ввода встречаются неизбежно. Продукт должен обрабатывать их предсказуемо, а не «как получилось».
Выявление уязвимостей. При вводе невалидных данных можно обнаружить потенциальные проблемы безопасности, например, возможность вводить SQL-инъекции. Негативная проверка поможет вовремя спасти систему от потенциальной атаки.
Улучшение пользовательского опыта. Негативные тесты позволяют удостовериться, что при вводе невалидных данных система не зависнет, а выдаст пользователю понятный текст ошибки.
Примеры негативных тестов
Вернемся к прошлым примерам, но теперь рассмотрим их с другой стороны.
Калькулятор
Предположим, что пользователь вообще не умеет пользоваться калькулятором. Он вводит:
- буквы вперемешку с цифрами — ожидается, что калькулятор либо выведет ошибку, либо не даст ввести буквы (или вставить их из буфера обмена);
- 10/0 — ожидается, что калькулятор выведет ошибку «Деление на ноль невозможно».

Форма авторизации
Здесь необходимо проверить ввод невалидных данных и авторизацию с пустыми полями. В обоих случаях система должна корректно сообщать пользователю, почему он не может войти в систему.
Отправка формы с данными
Для подписки на рассылку Академии Selectel нужно указать корректную почту, однако пользователь вводит невалидные данные, например, почту без знака @. В таком случае система выдаст ошибку «Недопустимый email».

А если пользователь не поставит галочку в чекбоксе об обработке данных — будет ошибка «Необходимо ваше согласие».

В обоих случаях данные не отправятся, а письмо с подтверждением не придет на почту.
Для эффективного тестирования позитивных и негативных сценариев, а также написания емких тест-кейсов чаще всего используют два метода: анализ граничных значений и разделение эквивалентности. Далее рассмотрим их подробнее.
Что такое анализ граничных значений
Эта техника основана на наблюдении: большинство багов проявляется на границе допустимого, а не внутри диапазона. Система проходит проверку на нормальных значениях, но ломается на нуле и максимуме, переходе через предел или при попытке ввести значение «чуть за пределом».
В чем суть метода? Мы не тестируем все числа из конкретного диапазона, а проверяем точки около границ. К примеру, на пачке пельменей может быть указано, что их нужно варить 5-8 минут после всплытия. В таком случае, 5 и 8 — это и есть граничные значения. Если варить их 4 минуты, то, вероятно, тесто будет слишком жестким, если более 8 минут, то пельмени слишком сильно разварятся, а если 7 — получатся идеальными.

Кстати, о еде. В одном из текстов мы рассказали про традицию есть шаверму по четвергам и про то, как автоматизировали ее с помощью Telegram-бота.
Аналогичные проверки можно применять и для размера файла, длины символов в поле, предельного количества попыток входа в систему и т. д.
Плюсы применения граничных значений:
Повышение эффективности проверок. Ошибки часто возникают на границах диапазонов. Использование анализа граничных значений позволяет находить дефекты, которые невозможно обнаружить при вводе только внутренних значений диапазона данных.
Оптимизация ресурсов. Так как нам не нужно исследовать диапазон данных полностью, время на тестирование существенно сокращается, но при этом мы не теряем в качестве.
Улучшение покрытия тестами. Несмотря на уменьшение количества проверок, анализ граничных значений обеспечивает высокое покрытие, т. к. проверяются наиболее вероятные места возникновения ошибок.
Примеры
Поле ввода числа
Требование: допустимый диапазон от 1 до 10. Проверяем: 0, 1, 2, 9, 10, 11. На недопустимое значение (0, 11) система должна среагировать корректно, выводя ошибку или не позволяя ввести невалидные данные.
Пароль
Ограничение длины — минимум 8 символов. Проверяем длины 7, 8, 9. При 7 — будет ошибка, при 8 и 9 — корректный результат.
Попытки входа
Блокировка после пяти неудачных попыток. Проверяем четвертую, пятую и шестую попытку. Реакция системы должна отличаться.
Разделение на классы эквивалентности
Эта техника сокращает число тестов, группируя входные значения в классы. Внутри одного класса достаточно проверить 1–2 представителя, так как предполагается, что система одинаково обрабатывает все данные, входящие в один класс.
Суть метода
Вместо тестирования всех допустимых чисел от нуля до десяти мы выделяем:
- класс «допустимый» — любое число в диапазоне;
- класс «меньше минимума» — любое отрицательное число меньше нуля;
- класс «больше максимума» — любое число больше десяти.
Далее — проверяем по представителю каждого класса, а не все числа подряд.
Что разделение дает на практике:
- сокращает объем тестирования без потери качества;
- формализует и структурирует логику разбиения;
- помогает выявить недокументированные границы и ошибки в требованиях.
Примеры
Формат email при регистрации
Классы:
- валидный email (user@site.com),
- без @ (user),
- с недопустимым доменом (user@site),
- пустое поле.
Достаточно по одному примеру из каждого, остальное — избыточно.
Поле для ввода возраста
Требование: 18–65.
Классы: менее 18 / 18–65 / более 65.
Внутри каждого можно выбрать любое число: 10, 30, 90 — логика одна.
Доступ к странице
Классы: авторизованный пользователь / неавторизованный / сессия истекла.
Неважно, через какую конкретную учетку — поведение одинаково.
В каких ситуациях что применять
На практике позитивное и негативное тестирование, анализ граничных значений и разделение эквивалентности не конкурируют, а дополняют друг друга.
Когда применять позитивное тестирование
Используем, когда нужно:
- подтвердить корректность базовой логики продукта перед дальнейшими проверками;
- проверить основные пользовательские сценарии — регистрацию, вход, заполнение формы, покупку;
- быстро отсеять грубые баги.
Без стабильных позитивных кейсов нет смысла тратить ресурсы на остальное. Позитивные проверки всегда должны идти в приоритете.
Когда применять негативное тестирование
Негативное тестирование используем, когда важно:
- проверить защиту от недопустимого ввода (поля, форматы, размеры, символы);
- оценить поведение системы при неожиданных действиях пользователя;
- убедиться, что ошибка не дает неожиданный результат.
Негативными проверками нельзя пренебрегать, ведь именно они гарантируют бесперебойную работу системы в случае ошибок.
Когда применять анализ граничных значений
Используем, если:
- входные данные ограничены диапазоном (число, длина, размер файла);
- есть риск дефекта на границе значений;
- дорого тестировать все значения внутри диапазона.
Когда применять разделение эквивалентности
Используем, когда:
- диапазон возможных значений слишком велик, перебирать все значения нецелесообразно;
- поведение системы одинаково внутри классов;
- нужно сократить тест-кейсы без потери покрытия.
Чем может помочь Selectel
Тестирование становится быстрее и дешевле, когда инфраструктура поддается масштабированию и изоляции. Вкратце рассмотрим практические сценарии, где могут пригодиться услуги провайдера IT-инфраструктуры.
Облачные серверы. Можно поднимать требуемое количество машин, изолировать среды, прогонять тесты параллельно и замораживать инфраструктуру после пройденных этапов — без переплат. Помимо прочего, запуск нагрузочных тестов и сценариев с большим числом параллельных проверок в масштабируемом облаке позволяет не держать постоянный парк железа.
Мобильная ферма. Подходит, если тестируемый продукт — мобильное приложение. Сервис позволяет проверять поведение сценариев на реальных устройствах, включая негативные кейсы (обрыв сети, сбой доступа, некорректный ввод и т. д.)
Саммари
Что такое позитивное тестирование? Это проверка системы с корректными данными, чтобы убедиться, что продукт работает по требованиям и основные сценарии выполняются без ошибок.
Что такое негативное тестирование? Это проверка системы с некорректными или выходящими за рамки допустимого данными. Цель — убедиться, что продукт не «падает», а корректно сообщает об ошибке.
Зачем нужно негативное тестирование? Чтобы защитить продукт от ошибок пользователей, выявить уязвимости и убедиться, что система правильно реагирует на невалидный ввод.
Чем позитивное тестирование отличается от негативного? Позитивное показывает, что система работает при корректных данных, а негативное — что она остается стабильной при ошибках.
Когда применять негативное тестирование? Когда нужно проверить защиту от недопустимого ввода, поведение при неожиданных действиях пользователя и убедиться, что ошибки не вызывают сбоев.
Какие техники помогают при негативных проверках? Анализ граничных значений и разделение на классы эквивалентности — они позволяют находить дефекты на границах диапазонов и сокращать количество тестов без потери качества.
Заключение
Позитивное тестирование отвечает на вопрос о том, работает ли система, когда пользователь ведет себя корректно. Негативное — на противоположный: «Остается ли система управляемой, когда пользователь или данные выходят за пределы допустимого?»
Метод анализа граничных значений концентрирует тесты на тех точках, где чаще всего рождается баг, а разделение эквивалентности сокращает объем тестов без потери качества.
Вместе эти подходы дают не «галочку в чеклисте», а предсказуемый, стабильный и безопасный продукт. А облачная инфраструктура Selectel позволяет выполнять эти проверки быстрее, дешевле и безопаснее, отделяя тестовые среды, масштабируя их под нагрузку и предоставляя инструменты — от облаков до мобильной фермы — под реалистичные сценарии.