В большинстве видов тестирования программного обеспечения для обеспечения покрытия используется тщательно разработанный план тестирования. Однако, хотя эти параметры охватывают многие возможные варианты использования программного обеспечения, они не всегда могут имитировать поведение пользователя, который не знаком с приложением и просто пытается взаимодействовать с ним в исследовательском режиме: Введите тестирование на обезьянах.
В этой статье мы рассмотрим все, что связано с тестированием на обезьянах, включая программное обеспечение для тестирования на обезьянах, процессы, типы, подходы и многое другое.
Что такое обезьяньи испытания?
Обезьянье тестирование становится все более популярным методом тестирования программного обеспечения. Он предполагает отправку случайных вводов в приложение для имитации непредсказуемости взаимодействия с пользовательским интерфейсом.
Цель — найти ошибки или сбои, которые трудно обнаружить с помощью заранее подготовленных тестовых примеров. Обезьяний тест имитирует то, как человек, не имеющий опыта или знаний о приложении, может случайно изучить программу.
Эта техника является хорошим вариантом как для
нагрузка
и
стресс-тестирования
приложения. По сути, тесты обеспечивают непрерывный случайный ввод данных в попытке сломать приложение.
Есть много общего между тестированием на обезьянах и
специальное тестирование
В частности, их случайный характер и отсутствие опоры на план тестирования. Однако между ними есть достаточно различий, чтобы считать их разными подходами.
Хотя некоторые разработчики считают, что тестирование на обезьянах — это разновидность ad hoc тестирования, существенное различие между ними заключается в том, что тестирование на обезьянах может проводиться людьми, не имеющими никакого представления о приложении.
Обезьянье тестирование — это отсутствие плана тестирования. Речь идет о подаче случайных сигналов с целью вывести программу из строя.
Почему это называется «обезьяньими испытаниями»?
Нет единого мнения о том, почему этот метод называется обезьяньим тестированием. Однако за этим названием кроется несколько убедительных теорий.
Теорема 1: теорема о бесконечной обезьяне
Согласно первой теории, название связано с теоремой о бесконечной обезьяне — метафорой, используемой при обсуждении статистической вероятности. Вкратце она гласит, что если бы обезьяна сидела перед пишущей машинкой и бесконечно долго нажимала на случайные клавиши, то в какой-то момент она бы создала полное собрание сочинений Уильяма Шекспира.
Идея заключается в том, что обезьянье тестирование имитирует случайное перебирание клавиш, и при достаточном количестве времени оно охватит все возможные ситуации, с которыми приложение столкнется в производстве.
Теория 2: «Обезьяна» Макинтоша
По другой версии, название происходит от приложения для MacOS 1983 года под названием «Обезьяна». Короче говоря, команда, работавшая над первым компьютером Macintosh, хотела найти способ провести стресс-тестирование своей машины.
Они решили, что если обезьяна будет бешено стучать по клавишам и двигать мышью, это поможет им проверить устойчивость компьютера. У них не было под рукой живой обезьяны, поэтому они создали приложение, которое могло имитировать такое использование, и назвали его «Обезьяна».
Почему тестирование на обезьянах важно?
Обезьянье тестирование важно потому, что оно помогает командам обнаружить крайние случаи или неожиданное поведение приложения. Идея заключается в том, что разработчики могут использовать тестирование на обезьянах наряду с более традиционными методами, чтобы лучше понять, как приложение будет воспринято в природе.
Даже всестороннее тестирование продукта не может конкурировать с десятками тысяч или более пользователей, работающих с приложением в течение длительного времени. В небольшом проценте случаев пользователи просят приложение сделать что-то неожиданное. Выявить все эти сценарии с помощью тестовых примеров практически невозможно.
Обезьянье тестирование пытается охватить эти почти случайные сценарии. Когда разработчики создают тестовый пример, они, как правило, обладают глубокими знаниями о приложении. Они понимают, какие цели преследует пользователь, и знают, какую последовательность действий следует использовать, чтобы добиться чего-то в приложении.
Случайный ввод этих данных означает, что приложение тестируется способами, которые разработчики не учитывали. В целом, это повышает общую устойчивость и долговечность программного обеспечения и гарантирует, что оно сможет выйти в мир и столкнуться с непредсказуемостью широкого круга пользователей без сбоев.
Когда следует использовать тестирование на обезьянах?
Обезьянье тестирование — отличный метод дополнительного тестирования. Его главное преимущество заключается в способности находить неожиданные ошибки, которые не были бы обнаружены более традиционными методами тестирования программного обеспечения. Поэтому его лучше всего использовать вместе с такими методами, как:
Как правило, разработчики используют обезьянье тестирование на ранних этапах процесса тестирования. Это особенно полезно, когда не хватает предопределенных планов тестирования, на которые можно ориентироваться.
Как проводится тестирование на обезьянах?
В недалеком прошлом тестирование на обезьянах проводилось вручную. Тестировщики должны были нажимать на кнопки, вводить текст, выбирать объекты и т.д., чтобы проверить, как система выдержит нестандартный ввод. Здесь есть очевидные проблемы. Во-первых, это отнимает много времени. Во-вторых, нет никакой гарантии, что эти действия охватят все возможные случаи.
Примеры ручного тестирования обезьян
Вот несколько примеров того, как проводится ручное тестирование на обезьянах. Это также может дать вам представление о том, что автоматическое тестирование обезьян стремится имитировать.
- Испытатель перемещается по веб-сайту, нажимая на случайные ссылки, чтобы проверить, могут ли они привести к сбою приложения или к неожиданным страницам.
- Тестировщик вводит случайные тексты в поле формы, чтобы посмотреть, как отреагирует приложение.
- Тестировщик перетаскивает значки и объекты, чтобы проверить, ведут ли они себя так, как ожидалось, или выдают нежелательные результаты.
Различные виды испытаний на обезьянах
Существует три основных типа обезьяньих тестов, которые разработчики используют для получения различной информации об устойчивости своих приложений.
1. Испытание тупой обезьяной
Тестирование «тупой обезьяны» описывает подход, при котором тестировщик ничего не знает о тестируемом приложении. Вместо этого тестировщика просят пошарить вокруг, совершенно не зная рабочего процесса, нажать на кнопки, ввести текст и так далее. Эта техника может помочь обнаружить существенные недостатки, о которых разработчики не знают.
2. Испытания на умных обезьянах
При тестировании с помощью «умной обезьяны» тестировщик знает немного о приложении и его целях и даже располагает подробной информацией о том, как оно работает. В этом процессе также используется более целенаправленный тип случайного ввода, который призван подтолкнуть приложение к достижению определенных пределов. Такой подход хорош как для стрессового, так и для нагрузочного тестирования.
3. Блестящие испытания на обезьянах
Испытания на блестящих обезьянах — это следующий уровень по сравнению с испытаниями на умных обезьянах. Тестировщик обладает глубокими и всесторонними знаниями о приложении и выбирается на основе этих знаний. Этот недосмотр может помочь тестировщику обнаружить множество ошибок, поскольку он должен понимать продукт с точки зрения пользователя.
Плюсы и минусы тестирования на обезьянах
Прежде чем вы решите использовать метод обезьяньего тестирования, необходимо понять его плюсы и минусы.
Преимущества тестирования на обезьянах
1. Поиск редких или скрытых ошибок
Пожалуй, самым убедительным преимуществом обезьяньего тестирования является способность этой техники обнаруживать ошибки, дефекты или поведение, которые в противном случае могли бы остаться незамеченными. Обнаружить эти крайние случаи сложно с помощью традиционных методов тестирования, поэтому обезьянье тестирование — это надежный способ проверки на сбои, повреждения данных и все остальное, что угрожает стабильности приложения.
2. Обеспечивает надежность
Обезьянье тестирование предназначено для того, чтобы увидеть, как приложение реагирует на непредсказуемые условия, с которыми оно может столкнуться в реальной жизни. Когда приложение попадает в руки пользователя, это приводит к множеству различных вводов, которые разработчики не могут предугадать. Обезьянье тестирование имитирует эту ситуацию, что приводит к созданию более надежных билдов.
3. Экономическая эффективность
По сравнению с другими видами испытаний, тестирование на обезьянах очень экономично. На это есть несколько причин. Во-первых, вам не нужно тратить много времени на разработку сценариев использования вашего приложения. Далее, программные инструменты для тестирования обезьян в значительной степени автоматизированы, что освобождает время разработчиков для других задач и экономит ваши деньги.
4. Универсальность
Одна из лучших вещей в обезьяньем тестировании — это то, что тесты могут выполнять люди без технического образования. Действительно, в некоторых случаях предпочтительнее иметь кого-то совсем зеленого. Более того, эти тесты довольно просты в настройке, что опять же снижает зависимость от квалифицированных инженеров.
5. Раннее обнаружение ошибок
Поиск и устранение ошибок на ранних этапах жизненного цикла разработки экономит время в дальнейшем. Обезьянье тестирование привносит уровень случайности в тестирование, что может помочь вам найти недостатки в вашем коде, пока их легко исправить.
Недостатки тестирования на обезьянах
1. Покрытие
Хотя обезьянье тестирование может привести к улучшению тестового покрытия, ему не хватает плановости и стратегической тщательности других типов тестирования. По сути, из-за того, что вы заваливаете приложение случайными вводами, вы отдаете его на милость хаоса при поиске ошибок. Это не значит, что он не найдет все, но без четкой и заранее определенной стратегии вы не можете быть на 100% уверены, что все было захвачено.
2. Ограниченное применение
Обезьяньи испытания подходят не для всех типов приложений. Он отлично подходит для сложных приложений с множеством различных функций и возможностей, которые, что особенно важно, могут привести к неожиданным взаимодействиям с пользователем. Программы, предлагающие более жесткие и предсказуемые функции, с меньшей вероятностью получат пользу от этих тестов.
3. Затраты времени
Ручное тестирование на обезьянах отнимает много времени. Она требует большого количества взаимодействий с модулями и программным обеспечением, причем нет никакой гарантии, что в каждой сессии будут обнаружены ошибки. К тому же вы можете автоматизировать этот процесс, что значительно экономит время и ресурсы.
4. Ложные срабатывания
Из-за хаотичного или случайного характера обезьяньих испытаний некоторые входные данные могут имитировать сценарии, которые не произойдут при реальном использовании продукта. Такая ситуация может привести к возникновению ложных срабатываний, заставляя кодеров устранять проблемы, в которых нет необходимости.
Что такое хаотическое обезьянье тестирование?
Хаос-тестирование — это метод разработки программного обеспечения, в котором используются контролируемые и преднамеренные эксперименты, направленные на нарушение работы системы (и даже вызывающие сбои), чтобы оценить ее устойчивость и способность к восстановлению.
Идея намеренного разрушения системы для обеспечения ее устойчивости довольно распространена в сфере разработки программного обеспечения, и эти методы обычно приводят к сборкам, за которые инженеры могут постоять.
В 2008 году после трехдневного повреждения базы данных популярный сервис потокового вещания Netflix решил перейти на Amazon Web Services (AWS). Цель заключалась в том, чтобы избежать единых точек отказа и уменьшить проблемы масштабируемости, возникающие при расширении сервиса.
Команда внедрила тестирование «обезьяньего хаоса» для проверки публичных экземпляров на инфраструктуре AWS. Преимущества были двойными:
- Процесс выявил слабые места, которые инженеры Netflix смогли устранить.
- Это вдохновило команду на создание автоматизированных механизмов восстановления для своего сервиса.
Хаос-тестирование обезьян является частью Хаос-инженерии. Он используется для проверки отказоустойчивости системы и ее способности сохранять стабильность и производительность даже при неожиданном отказе отдельных компонентов.
Хотя он и связан с обезьяньим тестированием, это отдельная техника.
Тестирование на обезьянах против тестирования на гориллах
Возможно, вы также слышали о концепции тестирования Gorilla в разработке программного обеспечения. Хотя обе техники носят имена приматов, у них много сходств и различий. Давайте разберемся, что такое тестирование Gorilla и где его можно использовать.
Тестирование «гориллы» считается более структурированной версией тестирования «обезьяны». В отличие от этого, обезьянье тестирование часто используется на ранних стадиях тестирования, когда еще нет формальных тестовых примеров. С другой стороны, при тестировании «горилла» используется автоматизированный инструмент или скрипт для генерации случайных входных данных для программного приложения.
Горилла-тестирование — это быстро и гораздо эффективнее, чем ручное тестирование на обезьянах. Он обеспечивает широкий охват, и это отличный способ найти сбои, которые необходимо устранить. Однако его лучше использовать для приложений с четко определенными границами или для тщательного тестирования конкретного модуля.
И тестирование на обезьянах, и тестирование на гориллах имеют свое место в современном тестировании при разработке программного обеспечения. Их понимание — ключ к использованию правильного подхода в правильном пространстве.
Какой лучший инструмент для тестирования обезьян?
Программное обеспечение для тестирования обезьян стало неотъемлемой частью инструментария современного разработчика. Однако есть несколько вариантов. Итак, какой же инструмент для тестирования обезьян самый лучший? Вот несколько из них, о которых вы должны знать.
1. ZAPTEST
ZAPTEST — это мощный
бесплатный и корпоративный инструмент автоматизации тестирования программного обеспечения
который поддерживает широкий спектр методов автоматизации тестирования, включая обезьянье тестирование. Некоторые из функций ZAPTEST, помогающих в тестировании обезьян, включают:
- Запись сценариев без кода: Команды могут записывать взаимодействия с пользователями и преобразовывать их в тестовый код.
- Генерация входных данных: ZAPTEST облегчает генерацию случайных входных данных, что является основным элементом обезьяньего тестирования
- Надежная отчетность: ZAPTEST предлагает мощные возможности создания отчетов, которые помогут вам документировать ваши тесты
Конечно, эти функции — лишь малая толика возможностей ZAPTEST для широкого спектра методов тестирования, включая тесты на обезьянах. Интеграция с WebDriver, функции искусственного интеллекта и ZAPTEST CoPilot позволяют командам испытать будущее тестирования программного обеспечения в одном месте.
Более того, пользователи ZAPTEST Enterprise получают доступ к штатному эксперту ZAP и неограниченное количество лицензий, и все это за предсказуемую фиксированную стоимость.
2. Appium
Appium — это инструмент с открытым исходным кодом. Вы можете использовать его как для Android, так и для iOS. Она позволяет автоматизировать взаимодействие с мобильными приложениями и обладает возможностями тестирования обезьян. Разработчики могут имитировать широкий спектр реакций пользовательского интерфейса, таких как ввод текста, нажатие, касание и прокрутка.
Хотя Appium — отличный инструмент для мобильных разработчиков, ему не хватает возможностей для тестирования настольных компьютеров и веб-приложений.
3. Испытание обезьянкой
Monkey Test It — это облачная платформа для тестирования с широкими возможностями, включая тестирование на обезьянах. Хотя Monkey Test It очень удобен в использовании, ему, возможно, не хватает мощности конкурирующих инструментов.
К недостаткам можно отнести то, что он мог бы выглядеть более привлекательно и поставляться с лучшей документацией. Более того, некоторые пользователи жаловались на неточные результаты тестов. Тем не менее, это простая программа с низкой ценой, поэтому не стоит ожидать от нее чего-то особенного.
4. MonkeyTestJS
MonkeyTestJS — это австралийский инструмент с открытым исходным кодом на базе JavaScript, созданный только для веб-приложений. Он довольно прост, но более чем способен справиться с поставленной задачей. Этот инструмент позволяет разработчикам моделировать взаимодействие пользователя с веб-приложением, например, клики, отправку форм, ввод с клавиатуры и многое другое.
Очевидно, что недостатком этого инструмента является то, что он доступен только для веб-приложений. Тем не менее, его стоит иметь в своем арсенале.
Какой лучший специализированный инструмент для тестирования обезьян на Android?
Есть несколько хороших вариантов для разработчиков, которые хотят внести немного хаоса в тестирование Android-приложений. Давайте рассмотрим два варианта.
1. UI/Application Exerciser Monkey для Android
UI/Application Exerciser Monkey для Android — это инструмент командной строки, который позволяет разработчикам отправлять псевдослучайные входы или события как на Android-устройства, так и на эмуляторы. Этот инструмент запускается в оболочке Android Debug Bridge.
2. MonkeyRunner для Android
MonkeyRunner для Android — это популярный инструмент для тестирования обезьян на Android. Программное обеспечение представляет собой API, позволяющий разработчикам писать программы, эмулирующие или управляющие устройствами Android. Это также хороший вариант как для функционального, так и для модульного тестирования.
Оба этих приложения — хорошие варианты. Однако они довольно техничны, что подойдет не всем командам.
Нужно ли автоматизировать тестирование обезьян?
Одна из самых больших проблем с ручным тестированием на обезьянах заключается в том, что оно отнимает много времени. Еще один момент, который следует отметить: нескольким тестировщикам сложно реально смоделировать различные взаимодействия, которые могут быть у широкой аудитории пользователей с конкретным приложением.
Итак, сразу же бросаются в глаза три недостатка. Ручное тестирование обезьян — это:
- Занимает много времени
- Дорогой
- Потенциально недостаточный охват
Автоматизированный инструмент для тестирования обезьян решает все эти проблемы.
Подходит ли ZAPTEST для ваших потребностей в тестировании обезьян?
Обезьянье тестирование — хорошая техника, которую стоит иметь в своем репертуаре, особенно если вы разрабатываете сложные приложения. Однако покупка специализированного программного обеспечения для тестирования обезьян обходится недешево.
ZAPTEST
это гибкий и мощный
инструмент для автоматизации тестирования всего стека.
Он отлично настраивается и позволяет как разработчикам, так и нетехническим командам создавать и разрабатывать бесконечное количество методов тестирования программного обеспечения, включая обезьянье тестирование.
Обезьянье тестирование — отличный выбор, если дополнить его другими видами тестов. ZAPTEST предлагает все под одной крышей с добавлением высококачественные инструменты RPA.
Заключительные мысли
Программное обеспечение для тестирования Monkey предоставляет разработчикам нетрадиционный способ тестирования своих приложений. Сила этой техники заключается в ее способности имитировать огромное количество непредсказуемых способов взаимодействия пользователя с программным обеспечением. Одним словом, обезьянье тестирование обеспечивает охват, которого трудно достичь с помощью плана тестирования.