Основная цель тестирования — получить продукт оптимального качества. Тестеры пытаются выявить максимальное количество дефектов, тем самым гарантируя, что конечный пользователь не столкнется с отклонениями в работе приложения. Тестировщик стремится сделать тестирование эффективным, а эффективное тестирование подразумевает оптимизацию списка позитивных и негативных сценариев таким образом, чтобы добиться желаемого результата.
Позитивное тестирование
Позитивное тестирование помогает убедиться в том, что приложение функционирует должным образом и позволяет проверить, работает ли система в нормальных условиях так, как задумывалось. Но как понять, сможет ли система справиться с непредвиденными обстоятельствами?
Негативное тестирование
Негативное тестирование гарантирует, что приложение продолжит работу в случае ошибки или непредвиденного поведения со стороны пользователя. С его помощью можно определить, как система реагирует на неожиданности. Разработчики создают приложение в соответствии с заданными критериями приемлемости. Тестировщик знает, что обеспечивает нормальную работу функционала. Но он также обязан мыслить нестандартно, чтобы понять, что может привести к поломке приложения.
Например, если пользователь пытается ввести букву в поле для цифр, должно появится сообщение «Неверные данные, пожалуйста, введите цифры». Цель негативного тестирования — выявлять такие ситуации и предотвращать сбои в работе приложений, улучшая их качество. Негативное тестирование помогает как повысить качество работы приложения, так и найти его слабые места.
Негативное тестирование часто называют тестированием сбоев. Оно требует максимальной креативности, поскольку его предполагаемая цель — проверить, как отображаются ошибки и что при этом видит пользователь. Оно помогает оценить функциональную надежность приложения или программного обеспечения. Негативное тестирование направлено не только на выявление потенциальных недостатков, но и на определение условий, при которых приложение может выйти из строя.
В каких случаях требуется негативное тестирование? К примеру:
- Пользователь нажал кнопку «ОК», но не ввел данные.
- Введенные данные превышают допустимое количество знаков.
- Имя содержит числовые значения.
- В имени есть специальный символ, а приложение этого не предвидит.
- Использованы недопустимые слова.
Увидеть, как в вышеперечисленных случаях ведет себя программное обеспечение можно с помощью негативного тестирования.
Основные методы написания негативных тестов
Как определить максимальное количество негативных сценариев? Два наиболее широко используемых метода определения негативных сценариев тестирования включают:
— Анализ граничных значений;
— Разделение эквивалентности.
Что такое «анализ граничных значений»?
Анализ граничных значений — это процесс тестирования между крайними точками или границами входных значений. Крайние значения (например, Start-End, Lower-Upper, Maximum-Minimum, Just Inside-Just Outside) называются граничными, а тестирование называется «анализом граничных значений». Основная идея этого подхода состоит в следующем — нужно выбрать значения входных переменных на их:
- Минимуме;
- Чуть выше минимума;
- Номинальном значении;
- Чуть ниже максимума;
- Максимуме.
Что такое «разделение эквивалентности»?
Входные данные домена делятся на разные классы эквивалентности. Этот метод позволяет взять все возможные тесты и поместить их в классы. Во время тестирования из каждого класса выбирается одно тестовое значение. Если вы тестируете поле ввода, куда можно вводить числа от 1 до 1000, нет смысла писать тысячи тестов для всех действительных входных чисел. Тесты можно разделить на классы согласно трем наборам входных данных.
- Класс входных данных для всех допустимых входных данных.
- Класс входных данных со всеми значениями за нижним пределом.
- Входные данные с любым значением больше 1000.
Проблемы негативного тестирования
Не все тестировщики охотно занимаются негативным тестированием, поскольку считают, что это пустая трата времени и энергии и может потенциально отсрочить релиз программного обеспечения. Позитивное тестирование, как правило, получает достаточное внимание, а вот негативное – нет. Нельзя упускать его из виду, поскольку именно оно гарантирует, что система справится с неожиданными условиями работы. Позитивное тестирование, безусловно, играет важнейшую роль, ведь именно оно показывает, решает ли приложение те задачи, ради которых оно и разрабатывалось. Но бесперебойная работа невозможна без негативного тестирования.
Негативное тестирование в действии
Представим следующую ситуацию — у вас есть экран входа в приложение с двумя текстовыми полями. В первое текстовое поле необходимо ввести имя пользователя. Во второе — пароль. К вводу данных есть конкретные требования. К примеру, имя пользователя в первом поле не может состоять только из символов. Кроме того, оно не может оставаться пустым (это же требование распространяется и на второе текстовое поле). Пароль может включать любую комбинацию букв (заглавных или строчных) или цифр от 0 до 9. Использовать другие символы нельзя. Максимальное количество символов для обоих полей — 10.
Как, в таком случае, выглядит негативное тестирование?
- Попробуйте ввести имя пользователя, состоящее из цифр и символов или только символов: 123 * _ ;
- Создайте пароль, включающий специальные символы и пробелы: \ {^ * &;
- Оставьте оба поля пустыми;
- Введите более 10 символов в оба текстовых поля.
Наша цель – посмотреть, как приложение реагирует на непредвиденное поведение и нестандартные ситуации. Для этого нужно испробовать различные сценарии. Написание негативных тестов — процесс, требующий креативного подхода и творческого мышления. По сути, вам необходимо представить, как можно «сломать» приложение и попытаться это сделать. Можно отталкиваться от требований и идти им наперекор, но лучше не делать этого напрямую, поскольку тогда существует риск, что проведенное вами тестирование окажется позитивным, а не негативным.
Негативное тестирование — это уникальный тип тестирования. Основная часть тестов нацелена на проверку и подтверждение соответствия системы заданным требованиям. Этот же тип тестирования, напротив, работает с тем, что система делать не должна. Отрицательный тест выходит за рамки требований. Его главный фокус — неожиданные сценарии, поэтому важно мыслить нестандартно.