Что такое нечеткое тестирование?

Нечеткое тестирование считается типом тестирования, при котором для обнаружения ошибок в кодировании, а также лазеек в безопасности в программном обеспечении или в операционных системах требуется либо автоматизированное, либо полуавтоматическое тестирование, обеспечивая ввод случайных данных. в систему. Эти случайные данные называются FUZZ. В конце концов, это происходит, система проверяется на наличие различных типов исключений, таких как сбой системы или даже сбой встроенного кода и многое другое. Первоначально он был разработан кем-то по имени Бартон Миллер, который был из Университета Висконсина. Это также называется фаззингом, который считается типом тестирования безопасности.

Зачем нам нужен нечеткий тест?

  • Часто Fuzz-тестирование позволяет определить наиболее серьезные ошибки безопасности в системе.
  • Он дает гораздо более эффективные результаты, когда мы используем его вместе с Black Box Testing, Beta Testing или другими методами отладки.
  • Это также необходимо для проверки уязвимости программного обеспечения. Это также действительно экономически эффективный метод тестирования.
  • Считается, что это один из методов проверки черного ящика. Это также один из наиболее часто используемых методов хакеров, который обнаруживает уязвимость системы.

Как проводится нечеткое тестирование?

Этапы нечеткого тестирования включают в себя основные этапы тестирования:

Шаг 1 : Распознавание целевой системы.

Шаг 2 : Распознавание входных данных.

Шаг 3 : Генерация нечетких данных.

Шаг 4 : Выполнение теста с использованием нечетких данных.

Шаг 5 : Мониторинг поведения системы.

Шаг 6 : Регистрация дефектов.

Примеры фаззеров

Есть много fuzzers как ниже:

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

У нас есть два ограничения этого фаззинга, основанного на протоколах:

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

Существует простейшая форма нечеткого тестирования - отправка случайного ввода в программное обеспечение в виде протокольных пакетов или даже в виде события. Этот конкретный способ передачи случайного ввода считается достаточно мощным для обнаружения ошибок в различных приложениях, а также в службах. Есть и другие методы, которые также доступны, и их довольно легко реализовать.

Типы ошибок, обнаруженные при нечетком тестировании

  • Утечки памяти и ошибки утверждения. Этот метод широко используется в широких приложениях, в которых ошибки влияют на безопасность памяти, которая считается серьезной уязвимостью.
  • Неверный ввод: фаззеры необходимы для генерации недопустимого ввода, который требуется при тестировании процедур обработки ошибок при тестировании фазз. Кроме того, это совершенно необходимо для программного обеспечения, которое не контролирует ввод. Fuzzing считается способом автоматизации негативного тестирования.
  • Корректность ошибок: Fuzzing необходим для обнаружения нескольких видов ошибок «правильности», таких как поврежденная база данных или плохие результаты поиска и многое другое.

Инструменты для нечеткого тестирования

Инструменты, которые весьма полезны в веб-безопасности, также могут в значительной степени использоваться для нечеткого или нечеткого тестирования. Например, Peach Fuzzer, Burp Suite и т. Д.

1. Персиковый фаззер

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

2. Спайк Прокси

Spike считается инструментом профессионального уровня, который ищет уязвимости на уровне приложений в различных веб-приложениях. SPIKE Proxy рассматривает только основы, такие как SQL-инъекция или межсайтовый скриптинг. Тем не менее, это полностью открытая инфраструктура Python. SPIKE Proxy присутствует как для Linux, так и для Windows.

преимущества

  • Ошибки, обнаруженные при нечетком тестировании, часто считаются серьезными, и в основном они используются хакерами, которые состоят из сбоев, утечки памяти или необработанного исключения и многого другого.
  • Если тестировщикам не удалось обнаружить какую-либо ошибку или ошибку из-за ограниченности времени и ресурсов, эти ошибки могут быть обнаружены в тестировании Fuzz.

Недостатки

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

Вывод

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

Рекомендуемые статьи

Это руководство по нечеткому тестированию. Здесь мы обсудим, что такое нечеткое тестирование? инструменты тестирования, преимущества и недостатки соответственно. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Тестирование производительности
  2. Типы тестирования программного обеспечения
  3. Что такое юзабилити-тестирование?
  4. Статическое Тестирование