Негативное тестирование – это тип тестирования программного обеспечения, используемый для проверки поведения приложения при неожиданных входных данных и условиях.
Неожиданные данные или условия могут быть любыми – от неправильного типа данных до сильной хакерской атаки. Цель негативного тестирования – предотвратить аварийное завершение работы программного приложения из-за негативных входных данных и улучшить качество и стабильность.
Проводя позитивное тестирование, мы можем убедиться только в том, что в нормальных условиях наша система работает. Но чтобы обеспечить безотказность системы, мы также должны проверить, что она может справиться с неожиданными условиями.
В этой статье мы рассмотрим следующие темы:
- Примеры негативного тестирования
- Важность негативного тестирования
- Как проводить негативное тестирование
- Преимущества и недостатки негативного тестирования
Примеры негативного тестирования
Рассмотрим случай с лифтом, который считается стандартным примером негативного тестирования.
Мы все знаем функциональность лифта. Например, нажатие на кнопку с номером этажа заставляет лифт ехать на этот конкретный этаж. Когда лифт достигает указанного этажа, дверь автоматически открывается. И так далее.
Теперь рассмотрим некоторые негативные сценарии для лифта.
БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"
Негативное тестирование | Позитивное тестирование |
---|---|
Что произойдет, если количество людей (вес) превысит установленный лимит? | Предполагает, что в лифт войдет только определенное количество человек |
Что произойдет, если кто-то закурит или вызовет пожар внутри лифта? | Внутри лифта не будет дыма или огня |
Что произойдет, если во время работы произойдет отключение питания? | Во время работы лифта не произойдет отключение электроэнергии |
Все эти случаи попадают под негативное тестирование. Поскольку мы не можем быть уверены, что какие-либо из этих случаев не произойдут, нам нужно проверить поведение лифта в таких ситуациях.
Допустим, проверяется условие перегруза, и при его выполнении лифт работает ненормально. Это окажет потенциальное влияние на надежность системы и даже может стать причиной опасности для жизни. Этот пример – хорошая иллюстрация важности негативного тестирования.
В тестировании ПО все происходит аналогично. При негативном тестировании мы отклоняемся от нормальной рабочей процедуры.
Давайте рассмотрим пример, скажем, регистрационную форму.
Негативное тестирование | Позитивное тестирование |
---|---|
Недопустимый ввод в поле электронной почты | В поле электронной почты будут вводиться только email-адреса в правильном формате |
Недопустимый ввод в поле номера телефона (нечисловые символы) | В поле номера телефона будет вводиться только номер телефона |
Загрузка изображения, размер которого выходит за указанные границы | Будут загружаться только изображения, размер которых не превышает указанный лимит |
Загрузка недопустимых файлов, таких как XML, SQL и т.д., в поле загрузки изображения | Будут загружаться только допустимые форматы изображений, такие как jpg., png и т. д. |
Как мы уже говорили, мы должны быть уверены, что во всех этих негативных случаях наша система будет работать правильно. Кто-то может ввести нечисловой символ в числовое поле, а система не сможет обработать неожиданные данные, поскольку ожидает число, и в итоге произойдет сбой системы. Или кто-то может попытаться сделать SQL-инъекцию и стереть все наши данные из базы данных. Мы не можем нести такие потенциальные потери. Поэтому проверить поведение системы в негативных случаях очень важно.
Зачем проводить негативное тестирование?
Поскольку тестирование требует больших затрат времени и средств, очень важно решить, что, как и сколько тестировать. Мы должны подумать, нужно ли нам проводить негативное тестирование в нашей системе.
Важность негативного тестирования с точки зрения компании
Компания несет ответственность за предоставление качественного продукта своему клиенту. Возможно, мы не можем построить на 100% безошибочную систему, но мы должны быть уверены, что сделали все возможное для предотвращения сбоя, и для этого мы должны проводить негативное тестирование.
Внешнее воздействие – это один из факторов, которые мы должны учитывать. Допустим, мы провели положительное тестирование онлайн-магазина и убедились, что все в порядке. Но что, если в нашей системе есть лазейка, и кто-то может сделать SQL-инъекцию и стереть все наши данные? Это будет большим нарушением безопасности. Чтобы избежать подобных случаев, необходимо проводить и негативное тестирование.
Примечание редакции: больше по этой теме читайте в статье “Руководство по тестированию безопасности веб-приложений”.
Когда дело касается общедоступных приложений, в основном сайтов, следует всегда помнить о том, что у нас нет возможности контролировать процедуру использования приложения. Негативное тестирование помогает убедиться, что все подобные случаи охвачены и предотвращены.
Также не следует забывать о существовании хакеров, которые ищут возможность разрушить систему. Взлом – важный кейс, который рассматривается в негативном тестировании.
Важность негативного тестирования с точки зрения клиента
Клиенты всегда ожидают, что у продукта будет нулевая уязвимость, поэтому негативное тестирование является обязательным условием.
Если это чувствительный продукт, например, электронная коммерция, онлайн-склад и т.д., то тестирование безопасности и негативное тестирование просто необходимы.
Единственное, что беспокоит клиента в отношении негативного тестирования, – это стоимость. Клиент сам решает, проводить его или нет, основываясь на оценке потенциальных рисков.
Как проводить негативное тестирование
Чтобы провести негативное тестирование, мы должны рассмотреть все возможные случаи. То есть, мы должны по возможности учесть их в тест-кейсах независимо от того, является ли это правильным способом использования приложения.
Например, если видите поле для ввода электронной почты, подумайте обо всех вариантах ввода, кроме правильного. Точно так же, если мы видим опцию загрузки изображения, мы должны протестировать ее со всеми возможными файлами.
При создании негативных тест-кейсов нужно расставлять приоритеты вводимых данных, иначе можно погрязнуть в вариантах.
Скажем, для поля загрузки изображения, в которое предполагается вводить только имена файлов с расширением .png, возможно много вариантов ввода (имена с расширениями .jpeg, .xml, .xls и т.д.). Поэтому нам нужно расставить приоритеты.
Например, XML и SQL могут иметь большее воздействие, чем .jpeg и .xls, поэтому сначала мы должны позаботиться о них. Определение приоритетности тест-кейсов перед выполнением позволит сэкономить время и снизить стоимость тестирования.
Плюсы и минусы негативного тестирования
Как и у всех других методов тестирования, у негативного есть свои плюсы и минусы, в основном связанные с тем, когда и как следует его применять. Давайте их рассмотрим.
Преимущества негативного тестирования:
- Как мы все знаем, негативное тестирование очень важно для обеспечения качества продукта. Качественный продукт – это продукт с нулевой уязвимостью.
- Вероятность возникновения негативных кейсов существует, нравится нам это или нет. Поэтому, чтобы убедиться, что охвачены все возможные случаи, нужно проводить как позитивное, так и негативное тестирование.
- Негативное тестирование придаст клиенту больше уверенности перед выводом продукта на рынок.
Недостатки негативного тестирования:
- В программной инженерии негативное тестирование в некоторых случаях становится пустой тратой времени и сил. Часто нет необходимости в чрезмерном негативном тестировании. Например, если приложение создается для использования одним человеком, то нам не нужно рассматривать случай, когда системой одновременно пользуются 100 пользователей. Поэтому определение условий в негативных тест-кейсах очень важно. Бывает, что негативное тестирование конкретной системы вообще не нужно.
- Для создания негативных тест-кейсов требуются квалифицированные и опытные люди.
- Для клиента негативное тестирование – это еще одна вещь, которая приводит к ненужной задержке релиза и увеличению затрат.
- Существует вероятность того, что тестировщики потратят много времени и энергии на негативное тестирование, что приведет к снижению концентрации на позитивном тестировании.
Перевод статьи Thomas Hamilton «What is Negative Testing? Test cases With Example».
Пингбэк: Негативное тестирование API в Postman