Открыть сервисСервис

Гаггинг — метод тестирования программного обеспечения

Гаггинг (от англ. gagging — «закрывание рта», «удушение») — разновидность тестирования программного обеспечения, при которой тестировщик намеренно вводит в систему некорректные, неполные или заведомо ошибочные данные с целью выявления дефектов обработки исключительных ситуаций. Метод относится к классу негативного (негативно-ориентированного) тестирования и дополняет позитивное тестирование, проверяющее штатные сценарии работы программы.

Суть метода

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

Цель метода — убедиться, что программа не падает, не повреждает данные и не выдаёт уязвимостей при получении «неправильного» ввода. Корректно написанное приложение должно обработать такие входные данные предсказуемо: отклонить их, показать понятное сообщение об ошибке, не допустить повреждения базы данных или выхода процесса из строя.

Типичные техники гаггинга

На практике при гаггинге применяют следующие приёмы:

  • Пустые значения — отправка формы с незаполненными обязательными полями.
  • Неверные типы данных — ввод букв в числовые поля, спецсимволов в поля с именами, скриптов в текстовые формы (проверка на XSS-уязвимости).
  • Граничные значения — данные на границах допустимого диапазона: минимальная и максимальная длина строки, нулевые и отрицательные числа, очень большие числа (проверка переполнения).
  • Некорректные форматы — неправильно отформатированные даты, номера телефонов, почтовые индексы, идентификаторы.
  • Специальные символы и инъекции — ввод SQL-фрагментов (SQL injection), управляющих последовательностей, нулевых байтов.
  • Несогласованные данные — например, дата окончания события раньше даты начала.
  • Дубликаты — повторная регистрация с тем же логином или e-mail, если уникальность должна обеспечиваться.

Отличие от фаззинга

Гаггинг часто путают с фаззингом (fuzzing), однако методы различаются. Фаззинг — автоматизированный подход, при котором программа получает массово сгенерированные случайные или псевдослучайные данные, часто с помощью специализированных инструментов (AFL, libFuzzer, WinAFL). Гаггинг, как правило, выполняется вручную тестировщиком, который осознанно подбирает некорректные данные на основе анализа бизнес-логики и спецификации. Фаззинг масштабируется на тысячи вариантов, гаггинг фокусируется на конкретных уязвимых местах.

Область применения

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

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

Связь с тестированием граничных значений

Гаггинг тесно связан с методом граничного анализа (boundary value analysis) — приёмом, при котором проверяются значения на границах допустимых диапазонов. Если граничный анализ фокусируется на точных значениях на границе, гаггинг шире: он включает и значения за границей, и полностью бессмысленные данные. Оба метода дополняют друг друга в рамках негативного тестирования.

Роль в обеспечении качества

Гаггинг считается обязательной частью тест-сьютов зрелых команд разработки. Дефекты, выявляемые этим методом, часто относятся к категории «крашей» (crash), утечек памяти, SQL-инъекций и ошибок валидации — то есть к дефектам с высокой критичностью. Регулярное применение гаггинга повышает устойчивость приложения к некорректному вводу и снижает риск эксплуатационных инцидентов.

История термина

Термин «гаггинг» не имеет устоявшегося формального определения в международных стандартах тестирования (ISTQB, ISO/IEC 25010) и используется преимущественно в русскоязычной практике тестирования программного обеспечения. В англоязычной литературе аналогичные приёмы описываются как negative testing, error guessing (угадывание ошибок) или robustness testing (тестирование устойчивости). «Error guessing» — термин ISTQB, обозначающий метод тестирования, основанный на опыте тестировщика и предположениях о возможных ошибках в программе, что близко по духу к гаггингу.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru