Введение

Методика, при которой пользователь тестирует приложение или систему, вводя случайные данные – это методология тестирования программного обеспечения. В тестировании программного обеспечения, "обезьянье тестирование" (monkey testing) – это техника, при которой пользователь тестирует приложение или систему, предоставляя случайные входные данные и проверяя её поведение, или выясняя, не приведет ли это к сбою в работе приложения или системы. Обычно обезьянье тестирование реализуется в виде случайных автоматизированных модульных тестов. Хотя происхождение названия "обезьянье тестирование" неясно, некоторые полагают, что оно связано с теоремой о бесконечной обезьяне, которая утверждает, что обезьяна, случайным образом нажимающая клавиши на пишущей машинке в течение бесконечного времени, почти наверняка напечатает заданный текст, например, полное собрание сочинений Уильяма Шекспира. Другие считают, что название происходит от классического приложения Mac OS "The Monkey", разработанного Стивеном Каппсом до 1983 года. Оно использовало журнальные перехватчики для передачи случайных событий в программы Mac и применялось для поиска ошибок в MacPaint. Обезьянье тестирование также включено в Android Studio как часть стандартного набора инструментов для стресс-тестирования.

Виды испытаний на обезьянах

Тестирование методом "обезьяны" можно разделить на умные тесты "обезьяны" и тесты "обезьяны", выполняемые случайным образом.

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

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

Недостатки

Из-за случайности тестирования методом "обезьяны" часто обнаруженные ошибки бывает трудно или невозможно воспроизвести. Неожиданные ошибки, выявленные при таком тестировании, также могут быть сложными и занимать много времени при анализе. В некоторых системах тестирование методом "обезьяны" может длиться долго, прежде чем будет обнаружена ошибка. Для "умных обезьян" эффективность сильно зависит от предоставленной модели состояний, а разработка хорошей модели состояний может быть дорогостоящей. Эти два термина часто используются вместе, однако некоторые считают, что они различаются, утверждая, что тестирование методом "обезьяны" больше связано со случайными действиями, а фаззинг – со случайным вводом данных. Тестирование методом "обезьяны" также отличается от ad hoc тестирования тем, что ad hoc тестирование проводится без планирования и документирования, а его цель – случайное разделение системы на подкомпоненты и проверка их функциональности, чего не происходит при тестировании методом "обезьяны".