Monkey Testing

Monkey Testing (рус. обезьянье тестирование) — методика тестирования программного обеспечения, при которой приложение подвергается случайным и непредсказуемым действиям и входным данным, имитирующим хаотичное поведение пользователя, с целью выявить скрытые дефекты, сбои и уязвимости[1]. Подход относится к техникам «чёрного ящика» и применяется как вручную, так и с помощью автоматизированных инструментов[2].

Общие сведения
Monkey Testing
англ. Monkey Testing
Область использования Тестирование программного обеспечения

Определение

Monkey Testing — это неконтролируемое или слабо контролируемое «хаотическое» тестирование, характеризующееся следующими принципами:

  • Случайность действий. Инструмент или тестировщик генерирует произвольные клики, жесты, вводы текста, перефокусировки и системные события[3].
  • Отсутствие предварительных знаний о системе (для «глупой обезьяны»): тесты не опираются на сценарии или структуру приложения[4].
  • Непредсказуемость. Поведение максимально хаотично, что создаёт условия, близкие к реальным «крайним случаям» использования[5].
  • Фокус на разрушении. Цель — «сломать» систему, выявить сбои и нестабильность[6].
  • Возможность автоматизации. Большинство современных реализаций выполняется скриптами или специализированными утилитами[7].

Основные цели методики:

  1. Выявление редких и трудновоспроизводимых дефектов.
  2. Проверка устойчивости приложения к некорректным или случайным данным.
  3. Оценка надёжности и производительности под хаотичной нагрузкой[8].

Типы и виды

  • Random (Dumb) Monkey Testing — полностью случайные действия без знания структуры приложения. Чаще всего используется для стресс-тестирования и поиска критических сбоев[9].
  • Smart Monkey Testing — частично случайные действия с учётом базовой информации о UI-элементах (тип поля, допустимые значения). Повышает воспроизводимость дефектов и охват функциональности[10].
  • Hybrid / Brilliant Monkey Testing — комбинация случайных и целенаправленных сценариев, использующая данные о состоянии приложения для исследования критически важных маршрутов пользователя[5].

Этапы работы

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

1. Подготовка

На этом этапе определяются цели тестирования, критерии приёма, выбирается тип «обезьяны» (Random, Smart, Hybrid) и инструментарий. Также задаются параметры генерации событий: количество, частота, seed-значение для воспроизводимости[11].

2. Настройка тестовой среды

Создаётся изолированная среда, максимально повторяющая production-конфигурацию. Подключаются системы логирования, мониторинга и инструменты измерения покрытия кода, чтобы обеспечить сбор всех необходимых данных[12].

3. Выполнение тестирования

Инструмент или тестировщик генерирует событийный поток в соответствии с заданными параметрами. Во время сессии собираются логи, метрики производительности, скринкасты; при критическом сбое тест может быть остановлен досрочно[4].

4. Сбор и анализ результатов

Анализируются журналы, отчёты об ошибках и данные профилировщиков. Ключевые метрики включают количество сбоев, время до первого сбоя (TTF), утечки памяти, процент покрытия кода[13].

5. Отчётность

Формируется итоговый отчёт, включающий перечень инцидентов, статистику дефектов по критичности, визуализации стабильности и рекомендации по дальнейшему улучшению качества[2].

Сравнение и отличия от смежной / похожей технологии, термина

  • Fuzz Testing генерирует случайные данные для API или протоколов и ориентируется на безопасность, тогда как Monkey Testing оперирует действиями UI и пользовательскими сценариями[8].
  • Gorilla Testing массово повторяет один сценарий для отдельного модуля, а Monkey Testing хаотично покрывает всю систему[3].
  • В отличие от Exploratory Testing, где тестировщик сознательно исследует приложение, Monkey Testing заменяет осмысленные действия на случайный поток событий.

Преимущества и недостатки

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

  • Обнаружение скрытых и редких ошибок, пропущенных формальными сценариями[5].
  • Стресс-тестирование устойчивости и производительности системы[4].
  • Низкие затраты на подготовку сценариев при автоматизации[14].

Недостатки

  • Сложность воспроизведения дефектов из-за случайной природы действий[5].
  • Риск неполного охвата критических пользовательских потоков[4].
  • Значительные усилия на анализ объёмных логов и фильтрацию ложных срабатываний[8].

Сферы применения

  • Тестирование мобильных приложений (Android/iOS) на устойчивость к жестам и многозадачности.
  • Проверка сложных веб-интерфейсов с динамическим контентом.
  • Ранние стадии разработки, когда формальные тест-кейсы ещё не написаны.
  • Дополнение к регрессионному тестированию перед релизом для выявления «edge cases»[2].

Инструменты для использования

Инструменты для мобильных приложений

  • UI/Application Exerciser Monkey — встроенный CLI-инструмент Android SDK для генерации псевдо-случайных событий[15].
  • MonkeyRunner — Python-API для управления устройствами Android извне, поддерживает запись скриншотов и тесты на нескольких девайсах[4].
  • Appium — кроссплатформенный фреймворк, позволяющий реализовать как Random, так и Smart Monkey сценарии для Android и iOS[8].
  • xcmonkey — инструмент командной строки для стресс-тестирования iOS-приложений, вдохновлённый Android Monkey[16].

Инструменты для веб-приложений

  • Gremlins.js — JavaScript-библиотека, которая запускает «гремлинов»-агентов для случайных кликов, скроллов и ввода данных в браузере[17].
  • Monkey Test It — облачный сервис быстрого хаотического тестирования сайтов, формирующий отчёты со скриншотами и логами[12].
  • Сценарии на базе Selenium / WebDriverIO с произвольной генерацией элементов и действий для эмуляции случайного поведения пользователя[6].

Фреймворки и библиотеки

  • MonkeyTalk — кроссплатформенный инструмент записи и воспроизведения сценариев для нативных и гибридных мобильных приложений[5].
  • AWS Device Farm Fuzz Test — встроенный тип теста, который отправляет случайные UI-события на реальные устройства в облаке[18].
  • American Fuzzy Lop (AFL) / afl-ios — высокопроизводительные фаззеры, применяемые для генерации случайных данных на уровне кода и протоколов; могут дополнять Monkey Testing при поиске уязвимостей[19].

Примечания

  1. Что такое Monkey Testing. QaRocks. Дата обращения: 20 июня 2025.
  2. 1 2 3 Random Monkey Testing. QA Bible. Дата обращения: 20 июня 2025.
  3. 1 2 Обезьянье тестирование: цели и этапы. LeadStartup. Дата обращения: 20 июня 2025.
  4. 1 2 3 4 5 Monkey Testing Explained. TestRail. Дата обращения: 20 июня 2025.
  5. 1 2 3 4 5 Monkey Testing: A Complete Guide. Testsigma. Дата обращения: 20 июня 2025.
  6. 1 2 Monkey Testing with WebdriverIO. BrowserStack. Дата обращения: 20 июня 2025.
  7. Monkey Testing — виды и инструменты. Qase. Дата обращения: 20 июня 2025.
  8. 1 2 3 4 Monkey Testing — deep dive. ZAPTEST. Дата обращения: 20 июня 2025.
  9. Monkey Software Testing. GeeksforGeeks. Дата обращения: 20 июня 2025.
  10. Smart Monkey Testing. QATouch. Дата обращения: 20 июня 2025.
  11. Monkey Test Explained. WP Fastest Cache. Дата обращения: 20 июня 2025.
  12. 1 2 How to set up Monkey Testing. Aqua Cloud. Дата обращения: 20 июня 2025.
  13. Guide to Monkey Testing 2025. RTCTek. Дата обращения: 20 июня 2025.
  14. Advantages and Disadvantages of Monkey Testing. Try QA. Дата обращения: 20 июня 2025.
  15. UI/Application Exerciser Monkey. Android Developers. Дата обращения: 20 июня 2025.
  16. xcmonkey. GitHub. Дата обращения: 20 июня 2025.
  17. Gremlins.js — хаотическое тестирование веб-UI. Habr. Дата обращения: 20 июня 2025.
  18. Built-in Fuzz Test. AWS Device Farm. Дата обращения: 20 июня 2025.
  19. AFL-iOS. GitHub. Дата обращения: 20 июня 2025.
© Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ».
Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ».