Какова цель манки тестинга
Что проверяют
Понимаете ли вы, что манки-тестирование ищет падения и зависания на случайных действиях, а не проверяет правильность функций. Хороший ответ отличает его от исследовательского тестирования и называет инструменты. Следом спрашивают, как воспроизвести баг, найденный случайной последовательностью.
Как отвечать
Суть: приложению подают поток случайных событий (тапы, свайпы, ввод текста, системные кнопки) и смотрят, выдержит ли оно. Оракул здесь простой: краш, ANR, необработанное исключение, утечка памяти. Правильность результата такой тест не проверяет.
Виды, которые стоит назвать:
- dumb monkey: ничего не знает о приложении и жмёт куда попало. Дёшево, но глубоко в сценарии не заходит;
- smart monkey: знает модель экранов и допустимых действий, поэтому доходит до дальних экранов и вводит осмысленные данные;
- gorilla testing: это другое, многократная проверка одного модуля, путать их не нужно.
На Android есть встроенный UI/Application Exerciser Monkey: adb shell monkey -p com.example.app -s 42 --throttle 300 -v 5000, где -s задаёт seed, --throttle паузу между событиями в миллисекундах, последнее число это количество событий. Для веба есть библиотека gremlins.js. Для iOS встроенного аналога нет, случайные действия пишут поверх XCUITest.
Где это полезно: ночной прогон на свежей сборке, проверка устойчивости перед релизом, поиск падений при быстром переключении экранов и повороте. Падения разбирают по логам, на Android через adb logcat. Запускайте на тестовом аккаунте: обезьяна легко нажмёт «Оплатить» или «Удалить профиль».
Где спотыкаются
Называют манки-тестирование ручным «потыкать без плана». Это скорее ad hoc, а манки-тест обычно автоматизирован и работает на объёмах, недоступных человеку.
Не сохраняют seed и последовательность событий. Краш найден, а воспроизвести его невозможно, и баг закрывают как «не воспроизводится».
Выдают его за нагрузочное тестирование или замену регрессии. Случайные тапы не нагружают сервер и не проверяют, что функция работает правильно, они только ловят падения.