Что такое тестирование на обезьянах и гориллах? Примеры, Разница

⚡ Умное резюме

В ходе «обезьяньего» тестирования в работающее приложение подаются случайные, незапланированные входные данные, и отслеживается, сохраняются ли они, поэтому сбои, зависания и необработанные состояния выявляются задолго до того, как будет написан какой-либо заранее определенный тестовый случай.

  • ???? Основная идея: Случайные щелчки мышью, нажатия клавиш и жесты проверяют систему на наличие точек сбоя, а не на ожидаемые результаты.
  • 🦍 Контраст с гориллами: В ходе «горилла-тестирования» многократно проверяется один модуль, тогда как «обезьянье тестирование» охватывает все приложение.
  • ???? Три класса: Глупые, умные и гениальные обезьяны различаются по уровню своих знаний об исследуемой системе.
  • Честный компромисс: Дешево и быстро в эксплуатации, но дефекты трудно воспроизвести, и гарантировать покрытие невозможно.
  • 🇧🇷 оснастка: Android Инструменты UI/Application Exerciser Monkey, MonkeyRunner и аналогичные средства автоматически генерируют потоки событий.
  • 🎯 Оптимальный размер: Ранние сборки, интерактивные интерфейсы и тесты на стабильность, всегда в сочетании со скриптовым и исследовательским тестированием.

Сравнение методов тестирования программного обеспечения: «обезьянье тестирование» и «гориллье тестирование»

Что такое «обезьянье тестирование»?

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

Название происходит от простой картинки, представленной ниже.

В ходе тестирования в роли обезьяны тестировщик, выступающий в роли обезьяны, вводит случайные данные.

  • При «обезьяньем тестировании» тестировщик (а иногда и разработчик) рассматривается как «обезьяна».
  • Если бы обезьяна пользовалась компьютером, она выполняла бы задачи случайным образом, не понимая принципа работы системы.
  • Аналогичным образом, тестировщик подает случайные входные данные на тестируемую систему для поиска ошибок, не определяя заранее никаких тестовых случаев.
  • В некоторых случаях тестирование на обезьянах направлено на модульное тестирование or Тестирование графического интерфейса.

Что такое тестирование Gorilla?

Гориллы проводят тестирование Это метод тестирования программного обеспечения, при котором один модуль программы многократно тестируется для подтверждения его корректной работы и отсутствия дефектов.

Один и тот же модуль может быть протестирован сто раз или более совершенно одинаковым образом, поэтому «тестирование горилл» также называют «фрустрирующим тестированием». «Обезьянье тестирование» распространяется случайным образом по всему приложению; «тестирование горилл» концентрируется на одном месте, пока оно не сломается или не окажется надежным.

Виды тестирования на обезьянах

Обезьянье тестирование делится на категории в зависимости от того, насколько хорошо тестировщик знаком с системой. Приведенная ниже диаграмма суммирует три типа.

Глупые, умные и гениальные виды обезьян для экспериментов

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

Обезьянье тестирование против горилльего тестирования против нерегламентированного тестирования

Эксперименты на обезьянах, эксперименты на гориллах и нерегламентированное тестирование Их объединяет непредсказуемый характер, поэтому их часто путают. Две таблицы ниже помогают их различить.

Обезьянье тестирование против горилльего тестирования

Обезьяна Тестирование Горилла Тестирование
Тестирование проводилось в случайном порядке, без каких-либо заранее определенных тестовых случаев. Ни предопределенные, ни случайные — одни и те же проверки просто повторяются.
Проводится на всей системе и может включать множество тестовых случаев. Проведено на нескольких выбранных модулях с использованием небольшого количества тестовых примеров.
Цель состоит в том, чтобы проверить наличие сбоя системы. Цель состоит в том, чтобы проверить, правильно ли работает модуль.

Обезьянье тестирование против нерегламентированного тестирования

Обезьяна Тестирование Специальное тестирование
Тестирование проводилось в случайном порядке, без каких-либо заранее определенных тестовых случаев. Выполнено без планирования и документации, поэтому тестовые примеры и требования к программному обеспечению не подготовлены.
Тестировщики могут не знать, что это за система и для чего она нужна. Перед началом тестирования тестировщик должен хорошо понимать систему.
Цель состоит в том, чтобы проверить наличие сбоя системы. Цель состоит в том, чтобы случайным образом разделить систему на подсистемы и проверить их работоспособность.

Преимущества и недостатки обезьяньего тестирования

Поскольку в этом методе планирование уступает место скорости, его преимущества и недостатки обусловлены одним и тем же свойством.

Преимущества обезьяньего тестирования

  • Новые виды насекомых: Тестировщик может работать вне рамок ранее оговоренных сценариев, что приводит к обнаружению ошибок, которые никто не предусмотрел в сценарии.
  • Легко выполнить: Сопоставление случайных действий со случайными данными — это бысткий способ проверить систему.
  • Less квалифицированные специалисты: Проведение тестирования на обезьянах зачастую возможно и без участия высококвалифицированных специалистов.
  • Less дорого: Для его установки и запуска требуется значительно меньше затрат, чем для запуска скриптового пакета.

Недостатки обезьяньего тестирования

  • Воспроизвести ошибки бывает сложно: Поскольку входные данные являются случайными, воспроизведение ошибки может быть невозможно без записанного начального значения генератора случайных чисел.
  • Less точность: Тестировщик не может точно определить сценарий и не может гарантировать точность того, что было проверено.
  • Технические знания по-прежнему полезны: Для того чтобы результаты были значимыми, тестировщикам необходимо хорошее знание предметной области.
  • Медленный темп роста относительно урожайности: Процессы могут продолжаться долгое время и при этом выявлять лишь небольшое количество дефектов, оставляя пробелы в системе.

Как проводить тестирование с помощью обезьян.

Тестирование с помощью «обезьяньих лапок» становится намного эффективнее, когда оно осуществляется с помощью специального инструмента, позволяющего запускать его непосредственно на выбранной модели. Android Сборка включает в себя разработку как настольных, так и веб-приложений. Общий процесс выглядит следующим образом:

  1. Зарегистрируйте тестируемое приложение в инструменте или на выделенном сервере, который будет его запускать.
  2. Подготовьте необходимые справочные материалы и конфигурацию для создания набора тестов.
  3. Запустите собранный набор тестов.
  4. Пусть инструмент записывает свой лог — файл лога «monkey test» записывает каждое сгенерированное событие и его результаты.
  5. Разрешите выполнение программы до тех пор, пока система не достигнет точки сбоя, в которой проблемное действие будет зафиксировано в журнале.
  6. Передайте отчет ответственной команде и сохраните тестовые данные для дальнейшего использования.

Сохраняйте все записи в журнале. Случайный запуск будет полезен в дальнейшем только в том случае, если последовательность событий и начальное значение, которое его породило, были сохранены, поэтому управление дефектами можно связать сбой с воспроизводимым входным сигналом.

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

Тестирование с помощью обезьян обычно автоматизировано, поскольку машина может сгенерировать тысячи событий за то время, пока человек генерирует несколько десятков. Наиболее часто используемые варианты:

  • UI/Application Exerciser Monkey: инструмент командной строки, встроенный в Android который работает в ADB оболочки и отправляет псевдослучайные потоки пользовательских событий, таких как касания, жесты и нажатия клавиш, а также события системного уровня, на устройство или эмулятор.
  • ОбезьянаРаннер: отдельный Python API Это устройство управляет устройствами и эмуляторами с рабочей станции, отправляя определенные команды и делая снимки экрана. Несмотря на название, это не то же самое, что и «обезьянка-тренажер».
  • UI Automator и Appium: Генеральная мобильное тестирование Фреймворки, которые можно запрограммировать для запуска полуслучайных последовательностей событий во время сборки.
  • Инструменты фаззинга, такие как AFL: Та же идея случайного ввода, примененная к данным, а не к жестам, рассматривается в нечеткое тестирование.

Поддержка инструментов для «обезьяньего» тестирования менее развита, чем для «скриптового» тестирования. автоматизация тестированияПоэтому большинство команд используют универсальный генератор событий в сочетании со своей существующей платформой, а не покупают специализированный продукт.

Когда использовать «обезьянье тестирование»?

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

Используйте его, когда:

  • На ранней стадии разработки необходима недорогая проверка стабильности, прежде чем появятся формальные тестовые примеры.
  • Интерфейс отличается высокой интерактивностью — игры, инструменты для рисования, медиаплееры — и предсказать реальное поведение пользователей сложно.
  • Вы хотите принять ванну или напряжение запускает программу, которая в течение многих часов отслеживает сбои, утечки памяти и необработанные состояния.
  • Релиз прошел проверки, выполненные скриптом, и вам нужна независимая проверка всего, что скрипт не затронул.

Избегайте этого, когда:

  • Вам необходимы воспроизводимые доказательства выполнения требования — именно для этого и предназначен письменный документ. прецедент.
  • Сборка настолько нестабильна, что каждый запуск немедленно завершается с ошибкой, что скрывает все проблемы за первой же неудачей.
  • Времени мало, поскольку случайный запуск не гарантирует обнаружения чего-либо.

На практике наиболее эффективные результаты достигаются при сочетании различных подходов: скриптовые тесты охватывают известные сценарии, исследовательское тестирование Они целенаправленно исследуют неизвестное, а обезьяны, используя экспериментальные методы, атакуют то, что, по их мнению, никогда не должно было произойти.

Часто задаваемые вопросы (FAQ)

Название заимствовано из образа бесконечной обезьяны: обезьяна, нажимающая на клавиши случайным образом достаточно долгое время, в конечном итоге создает нечто осмысленное. Применительно к программному обеспечению, случайный ввод в конечном итоге достигает состояний, которые не предвидел ни один разработчик.

Исследовательское тестирование — это целенаправленное тестирование: тестировщик формулирует гипотезу, исследует её и вносит корректировки. Тестирование с помощью «обезьяньих лап» не имеет заранее заданного плана. Одно зависит от экспертной оценки, другое — от объёма и случайности.

Они используют принцип случайного ввода, но различаются по цели. В «обезьяньем» тестировании пользовательские события генерируются через интерфейс. В «фаззинге» некорректные данные передаются парсерам и API, обычно для поиска уязвимостей в системе безопасности.

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

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

Второй пилот GitHub Быстро разрабатывается тестовая среда — генераторы событий, обработка начальных значений, анализаторы логов и скрипты для анализа сбоев. Стратегия генерации случайных чисел и критерии прохождения теста еще должны быть определены тестировщиком.

Полезными показателями являются количество сбоев на тысячу сгенерированных действий, число обнаруженных уникальных дефектов, достигнутое покрытие кода во время выполнения и время до первого сбоя. Анализируйте эти показатели по всем сборкам, а не только по результатам одного запуска.

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

Подведем итог этой публикации следующим образом: