Monkey Testing
Monkey Testing (рус. обезьянье тестирование) — методика тестирования программного обеспечения, при которой приложение подвергается случайным и непредсказуемым действиям и входным данным, имитирующим хаотичное поведение пользователя, с целью выявить скрытые дефекты, сбои и уязвимости[1]. Подход относится к техникам «чёрного ящика» и применяется как вручную, так и с помощью автоматизированных инструментов[2].
Общие сведения
| Monkey Testing | |
|---|---|
| англ. Monkey Testing | |
| Область использования | Тестирование программного обеспечения |
Определение
Monkey Testing — это неконтролируемое или слабо контролируемое «хаотическое» тестирование, характеризующееся следующими принципами:
- Случайность действий. Инструмент или тестировщик генерирует произвольные клики, жесты, вводы текста, перефокусировки и системные события[3].
- Отсутствие предварительных знаний о системе (для «глупой обезьяны»): тесты не опираются на сценарии или структуру приложения[4].
- Непредсказуемость. Поведение максимально хаотично, что создаёт условия, близкие к реальным «крайним случаям» использования[5].
- Фокус на разрушении. Цель — «сломать» систему, выявить сбои и нестабильность[6].
- Возможность автоматизации. Большинство современных реализаций выполняется скриптами или специализированными утилитами[7].
Основные цели методики:
- Выявление редких и трудновоспроизводимых дефектов.
- Проверка устойчивости приложения к некорректным или случайным данным.
- Оценка надёжности и производительности под хаотичной нагрузкой[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 заменяет осмысленные действия на случайный поток событий.
Преимущества и недостатки
Преимущества
Сферы применения
- Тестирование мобильных приложений (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].
Примечания
- ↑ Что такое Monkey Testing. QaRocks. Дата обращения: 20 июня 2025.
- ↑ 1 2 3 Random Monkey Testing. QA Bible. Дата обращения: 20 июня 2025.
- ↑ 1 2 Обезьянье тестирование: цели и этапы. LeadStartup. Дата обращения: 20 июня 2025.
- ↑ 1 2 3 4 5 Monkey Testing Explained. TestRail. Дата обращения: 20 июня 2025.
- ↑ 1 2 3 4 5 Monkey Testing: A Complete Guide. Testsigma. Дата обращения: 20 июня 2025.
- ↑ 1 2 Monkey Testing with WebdriverIO. BrowserStack. Дата обращения: 20 июня 2025.
- ↑ Monkey Testing — виды и инструменты. Qase. Дата обращения: 20 июня 2025.
- ↑ 1 2 3 4 Monkey Testing — deep dive. ZAPTEST. Дата обращения: 20 июня 2025.
- ↑ Monkey Software Testing. GeeksforGeeks. Дата обращения: 20 июня 2025.
- ↑ Smart Monkey Testing. QATouch. Дата обращения: 20 июня 2025.
- ↑ Monkey Test Explained. WP Fastest Cache. Дата обращения: 20 июня 2025.
- ↑ 1 2 How to set up Monkey Testing. Aqua Cloud. Дата обращения: 20 июня 2025.
- ↑ Guide to Monkey Testing 2025. RTCTek. Дата обращения: 20 июня 2025.
- ↑ Advantages and Disadvantages of Monkey Testing. Try QA. Дата обращения: 20 июня 2025.
- ↑ UI/Application Exerciser Monkey. Android Developers. Дата обращения: 20 июня 2025.
- ↑ xcmonkey. GitHub. Дата обращения: 20 июня 2025.
- ↑ Gremlins.js — хаотическое тестирование веб-UI. Habr. Дата обращения: 20 июня 2025.
- ↑ Built-in Fuzz Test. AWS Device Farm. Дата обращения: 20 июня 2025.
- ↑ AFL-iOS. GitHub. Дата обращения: 20 июня 2025.
| Правообладателем данного материала является АНО «Интернет-энциклопедия «РУВИКИ». Использование данного материала на других сайтах возможно только с согласия АНО «Интернет-энциклопедия «РУВИКИ». |