Позитивное и негативное тестирование с примерами

⚡ Умное резюме

Позитивное и негативное тестирование совместно определяют, принимает ли программное обеспечение то, что должно, и отклоняет то, что не должно. В этой статье объясняются оба подхода, лежащие в их основе методы, практические примеры и практики, позволяющие свести к минимуму утечку дефектов.

  • Положительные результаты тестов: Передавайте только корректные данные и убедитесь, что приложение выполняет задуманный процесс точно в соответствии с описанием в спецификации.
  • Отрицательный результат теста: Введите недопустимые или экстремальные данные и убедитесь, что приложение отклоняет их, выдает четкое сообщение об ошибке и остается стабильным.
  • 📏 Анализ граничных значений: Для быстрого выявления дефектов, отличающихся на единицу, необходимо проверить край каждого допустимого диапазона, а затем вывести его на один шаг за его пределы.
  • 🧩 Разделение на эквивалентные категории: Разделите входные данные на группы допустимых и недопустимых значений, затем выберите по одному значению из каждой группы вместо того, чтобы проверять все значения.
  • Правило покрытия: Для каждого требования необходимо указать как минимум два варианта развития событий: один положительный и один отрицательный, чтобы ни один критерий приемки не остался непроверенным.
  • 🛡️ Выгода от безопасности: Отрицательные тесты выявляют уязвимости внедрения зависимостей, просроченные токены и необработанные исключения, которые никогда не затрагиваются при положительных тестах.
  • 🤖 Соответствие автоматизации требованиям: Автоматизируйте стабильные положительные потоки для оценки регрессионного значения и автоматизируйте отрицательные проверки достоверности для обратной связи по устойчивости.

Тестирование программного обеспечения — это процесс проверки и подтверждения работоспособности программного приложения, чтобы убедиться, что оно функционирует должным образом. Цель — выявление дефектов и улучшение качества продукта. Существует два способа тестирования программного обеспечения: позитивное тестирование и негативное тестирование.

Эти два подхода отвечают на противоположные вопросы: работает ли приложение, когда всё идёт как надо, и остаётся ли оно стабильным, когда что-то идёт не так?

Что такое положительный результат теста?

Положительное тестирование Это тип тестирования, который выполняется над программным приложением путем предоставления допустимых наборов данных в качестве входных данных. Он проверяет, ведет ли себя программное приложение должным образом при положительных входных данных.

Позитивное тестирование проводится для проверки того, действительно ли программное приложение делает именно то, что от него ожидается. Поэтому его также называют тестированием по принципу "счастливого пути".

Например, рассмотрим числовое текстовое поле, показанное ниже.

Положительное тестирование

В приложении есть текстовое поле, которое может принимать только цифры. Ввод значений до 99999 будет принят системой, любые другие значения, кроме этого, не должны быть приемлемыми. Чтобы провести положительное тестирование, установите действительные входные значения от 0 до 99999 и проверьте, принимает ли система эти значения.

Что такое отрицательное тестирование?

Отрицательное тестирование Это метод тестирования программного приложения, выполняемый путем предоставления недопустимых или некорректных наборов данных в качестве входных данных. Он проверяет, ведет ли себя программное приложение должным образом при вводе отрицательных или нежелательных данных пользователем.

Цель негативного тестирования — убедиться, что программное приложение не дает сбоев и остается стабильным при вводе некорректных данных. Поэтому его также называют тестированием путей ошибок или тестированием отказов.

Например, рассмотрим то же самое поле, в которое вместо цифр будут поступать символы.

Отрицательное тестирование

Отрицательный тест можно выполнить, введя символы от A до Z или от a до z. Либо программная система не должна принимать значения, либо она должна выдать сообщение об ошибке для этих неверных входных данных.

При обоих типах тестирования необходимо учитывать следующее:

  • Входные данные
  • Действие, которое необходимо выполнить
  • Выходной результат

Положительный и отрицательный результаты тестирования: ключевые различия

Оба подхода имеют одну и ту же особенность. прецедент структура. Разница заключается в том, какие входные данные вы предоставляете, и в том, что доказывает положительный результат.

Параметр Положительное тестирование Отрицательное тестирование
Также известный под названием Тестирование успешного пути Проверка на наличие ошибок или сбоев
Использованные входные данные Достоверные, ожидаемые данные Неверные, экстремальные или неожиданные данные
Цель Убедитесь, что функция работает должным образом. Подтвердите, что функция отклоняет то, что не должна отклонять.
Ожидаемый результат Процесс успешно завершился. Появляется явная ошибка, и система остается стабильной.
Обработка ошибок Не в центре внимания Весь фокус
Покрытие Узкий, соответствует техническим характеристикам. Широкий охват, рассматривает все, что выходит за рамки спецификации.
Типичный риск при пропуске Основные функции корабля сломаны Сбои и уязвимости в системе безопасности проникли в производственную среду.

Положительный результат теста свидетельствует о неисправности. Отрицательный результат теста указывает на отсутствие защитного кожуха, ремонт которого обходится гораздо дороже после того, как его обнаружат пользователи.

Методы тестирования, используемые для получения положительных и отрицательных результатов.

На практике два классических метода проектирования входных данных позволяют получить как положительные, так и отрицательные варианты из одного и того же требования:

  • Анализ граничных значений
  • Разделение эквивалентности

Анализ граничных значений

Это один из методов тестирования программного обеспечения, в котором тестовые сценарии включают в себя граничные значения. Если входные данные используются в пределах граничных значений, то это называется положительным тестированием. Если входные данные выбираются за пределами граничных значений, то это называется отрицательным тестированием.

Например, взгляните на приведенный ниже допустимый диапазон.

Положительное и отрицательное тестирование

Система может принимать числа от 0 до 10 числовых значений. Все остальные числа являются недопустимыми значениями. В рамках этого метода будут проверены граничные значения -1,0,1 и 9,10,11.

Разделение эквивалентности

Это тестирование программного обеспечения метод, который делит входные данные на множество разделов. Значения из каждого раздела необходимо проверить хотя бы один раз. Разделы с действительными значениями используются для положительного тестирования. В то время как разделы с недопустимыми значениями используются для отрицательного тестирования.

Например, изучите два раздела, показанных ниже.

Разделение эквивалентности

Числовые значения от нуля до десяти можно разделить на две (или три) части. В нашем случае у нас есть две части: от -10 до -1 и от 0 до 10. Для проверки сценариев можно взять примерные значения (5 и -5) из каждой части. См. Разделение на эквивалентные части и анализ граничных значений В этом уроке вы найдете больше примеров решения задач.

Как проводить положительные и отрицательные тесты

Следующая последовательность преобразует одно требование в сбалансированный набор положительных и отрицательных случаев.

  1. Ознакомьтесь с требованиями к ограничениям. Обратите внимание на все допустимые форматы, диапазоны и обязательные поля. Все, что допускает спецификация, считается положительным случаем, а все, что она исключает, — отрицательным.
  2. Сначала напишите положительный случай. Предоставьте достоверные данные, выполните действие и зафиксируйте ожидаемый результат успеха в качестве базового показателя.
  3. Выведите отрицательные случаи из тех же пределов. Используйте анализ граничных значений и разбиение на эквивалентные категории, чтобы получить пустые поля, неверные типы данных и числа, выходящие за пределы допустимого диапазона.
  4. Добавить враждебный ввод. Включают SQL-инъекция строки, просроченные токены и некорректные данные API, поэтому тестирование безопасности Пробелы появляются на ранней стадии.
  5. Расширьте сферу действия проверок, не связанных с функциональностью. A испытание на нагрузку При количестве поддерживаемых пользователей значение положительное, в то время как стресс тест За этим пределом находится соответствующий отрицательный случай.
  6. Выберите, где будет рассматриваться каждое дело. Не допускайте появления негативных случаев. проверка на прочность и здравомыслиекоторые представляют собой быстрые положительные затворы и управляют ими в функциональном режиме. регрессионное тестирование циклы.

При снятии наличных в банкомате отображается сопряжение. В положительном случае вводится правильный PIN-код и действительная сумма, после чего выдаются наличные и чек. В отрицательном случае вводится неправильный PIN-код, и ожидается сообщение об отказе, а затем блокировка карты.

Лучшие практики для поддержания правильного баланса

  • Перед началом разработки необходимо описать как минимум два варианта развития событий для каждого требования: один положительный и один отрицательный.
  • Приоритезируйте негативные случаи в зависимости от их влияния, поэтому сбои при введении данных и платежах будут рассматриваться раньше, чем косметические ошибки ввода.
  • Указывайте на само сообщение об ошибке, а не только на то, что действие не удалось, поскольку нечеткие сообщения тоже являются дефектами.
  • Оставьте место для исследовательское тестированиеи регистрируйте полученные данные через свой процесс управления дефектами.

⚠️ Предупреждение: Никогда не запускайте тесты на ложных срабатываниях в рабочей производственной среде. Они существуют для того, чтобы инициировать сбои, а преднамеренный сбой затрагивает реальных пользователей и реальные данные.

Часто задаваемые вопросы (FAQ)

Отрицательное тестирование Проверяет, что приложение корректно отклоняет недопустимые входные данные. Деструктивное тестирование идет дальше и намеренно доводит систему до сбоя, например, разрывая соединение с базой данных в середине транзакции, чтобы измерить поведение при восстановлении и отказоустойчивость в экстремальных условиях.

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

Да. Генераторы ИИ считывают требования или пользовательские истории и предлагают допустимые и недопустимые наборы входных данных, включая граничные значения. Тестировщик все равно их проверяет, поскольку сгенерированные отрицательные случаи часто не соответствуют ограничениям предметной области, таким как нормативные пороговые значения или правила округления валюты.

Да. Функции ИИ требуют отрицательных значений для внедрения подсказок, некорректных ответов модели, тайм-аутов и вопросов, выходящих за рамки области видимости. Поскольку выходные данные различаются между запусками, утверждения должны проверять формат ответа, фильтры безопасности и резервное поведение, а не одну фиксированную ожидаемую строку.

Selenium управляет проверкой полей браузера, Postman охватывает недопустимые данные API и коды состояния, а также JMeter Превышает допустимый предел нагрузки в стрессовых сценариях. Выберите инструмент, соответствующий уровню, который вы проверяете.

Подведем итог этой публикации следующим образом: