Більшість типів тестування програмного забезпечення використовують ретельно розроблений план тестування для забезпечення покриття. Однак, хоча ці параметри охоплюють багато можливих варіантів використання програмного забезпечення, вони не завжди імітують поведінку користувача, який не знайомий з програмою і просто намагається взаємодіяти з нею в дослідницькому порядку: Введіть тестування на мавпах.
У цій статті ми розглянемо все, що стосується мавпячого тестування, включаючи програмне забезпечення для мавпячого тестування, процеси, типи, підходи та багато іншого.
Що таке тестування на мавпах?
Мавпяче тестування стає все більш популярною технікою тестування програмного забезпечення. Він передбачає надсилання випадкових вхідних даних у додаток, щоб імітувати непередбачуваність взаємодії з користувацьким інтерфейсом.
Мета полягає в тому, щоб знайти помилки або збої, які може бути важко виявити за допомогою попередньо визначених тестових кейсів. Мавпячий тест імітує те, як людина, яка не має досвіду або знань про програму, може випадковим чином досліджувати програмне забезпечення.
Ця техніка – хороший варіант для обох
навантаження
так і
стрес-тестування
програми. По суті, тести надають безперервні випадкові вхідні дані, намагаючись зламати програму.
Існує багато подібностей між тестуванням на мавпах та
спеціальним тестуванням
зокрема, їх випадковий характер і відсутність залежності від плану тестування. Однак між ними достатньо відмінностей, щоб вважати їх різними підходами.
Хоча деякі розробники вважають, що мавпяче тестування є різновидом спеціального тестування, суттєва відмінність між ними полягає в тому, що мавпяче тестування можуть виконувати люди, які не мають жодних знань про додаток.
Мавпяче тестування – це відсутність плану тестування. Йдеться про подачу випадкових вхідних даних з метою вивести з ладу програмне забезпечення.
Чому це називається “мавпячим тестуванням”?
Немає єдиної думки щодо того, чому цей метод називається тестуванням на мавпах. Однак є кілька переконливих теорій, що стоять за цією назвою.
Теорема 1: Теорема про нескінченну мавпу
Перша теорія припускає, що назва пов’язана з теоремою про нескінченну мавпу, метафорою, яка використовується для обговорення статистичної ймовірності. Якщо коротко, то вона стверджує, що якби мавпа сиділа перед друкарською машинкою і натискала випадкові клавіші протягом нескінченної кількості часу, то в якийсь момент вона видала б повне зібрання творів Вільяма Шекспіра.
Ідея полягає в тому, що мавпяче тестування імітує ці випадкові натискання клавіш, і з достатньою кількістю часу воно охоплює всі можливі випадки, з якими додаток зіткнеться під час виробництва.
Теорія 2: “Мавпа” Macintosh
Інша теорія полягає в тому, що назва походить від програми для MacOS 1983 року під назвою “Мавпа”. Коротше кажучи, команда, що працювала над першим комп’ютером Macintosh, хотіла знайти спосіб провести стрес-тестування своєї машини.
Вони міркували, що якби у них була мавпа, яка б несамовито била по клавішах і рухала мишкою, це допомогло б їм перевірити стійкість комп’ютера. У них не було під рукою живої мавпи, тому вони створили додаток, який міг імітувати таке використання, і назвали його “The Monkey”.
Чому тестування на мавпах важливе?
Основна причина важливості мавпячого тестування полягає в тому, що воно допомагає командам виявляти граничні випадки або неочікувану поведінку в додатку. Ідея полягає в тому, що розробники можуть використовувати мавпяче тестування поряд з більш традиційними методами, щоб краще зрозуміти, як додаток буде сприйнятий у дикій природі.
Навіть всебічне тестування продукту не може конкурувати з десятками тисяч і більше користувачів, які працюють з додатком протягом тривалого часу. У невеликому відсотку цих випадків користувачі просять додаток зробити щось неочікуване. Розкрити всі ці сценарії за допомогою тестових кейсів практично неможливо.
Мавпяче тестування намагається охопити ці майже випадкові сценарії. Коли розробники створюють тестовий кейс, вони, як правило, мають глибокі знання про додаток. Вони розуміють, які цілі ставить перед собою користувач, і знають найкращу послідовність взаємодій, які слід використовувати для досягнення чогось у додатку.
Випадковість цих вхідних даних означає, що додаток тестується способами, які розробники не врахували. Загалом, це підвищує загальну стійкість і довговічність програмного забезпечення та гарантує, що воно може вийти у світ і зіткнутися з непередбачуваністю широкого кола користувачів без збоїв.
Коли варто використовувати тестування на мавпах?
Мавпяче тестування – чудовий додатковий метод тестування. Його найбільша перевага полягає в здатності знаходити несподівані помилки, які не були б виявлені більш традиційними методами тестування програмного забезпечення. Тому його найкраще використовувати разом з такими методами, як:
Зазвичай розробники використовують мавпяче тестування на ранній стадії процесу тестування. Це особливо корисно, коли не вистачає готових планів тестування, на які можна спиратися.
Як відбувається тестування на мавпах?
У недалекому минулому тестування на мавпах проводили вручну. Тестувальники натискали кнопки, вводили текст, вибирали об’єкти тощо, щоб побачити, як система реагує на нестандартне введення даних. Тут є очевидні проблеми. По-перше, це забирає багато часу. По-друге, мало гарантій, що ці дії охоплять усі можливі випадки.
Приклади ручного тестування на мавпах
Ось кілька прикладів того, як виконується ручне мавпяче тестування. Це також може дати вам уявлення про те, що намагається імітувати автоматизоване мавпяче тестування.
- Тестувальник переміщується по веб-сайту, натискаючи випадкові посилання, щоб побачити, чи можуть вони призвести до збою програми або до неочікуваних сторінок
- Тестувальник вводить випадкові тексти в поле форми, щоб побачити реакцію програми
- Тестувальник перетягує іконки та об’єкти, щоб побачити, чи поводяться вони так, як очікувалося, чи видають небажані результати.
Різні типи тестування на мавпах
Існує три основні типи мавпячих тестів, які розробники використовують для отримання чіткої інформації про відмовостійкість своїх додатків.
1. Тестування на тупих мавпах
Тестування німої мавпи описує підхід, коли тестувальник нічого не знає про програму, що тестується. Замість цього, тестувальника просять колупатися, абсолютно не знаючи про робочий процес, натискати кнопки, вводити текст і так далі. Цей метод може допомогти виявити суттєві недоліки, про які розробники не знають.
2. Тестування на розумних мавпах
При тестуванні за допомогою розумної мавпи тестувальник знає трохи про додаток та його цілі і навіть має детальну інформацію про те, як він працює. Цей процес також використовує більш цілеспрямований тип випадкового введення, який призначений для того, щоб підштовхнути програму до перевищення певних обмежень. Цей підхід добре підходить як для стрес-, так і для навантажувального тестування.
3. Блискуче тестування на мавпах
Тестування на геніальних мавпах – це наступний рівень після тестування на розумних мавпах. Тестувальник має глибокі та всебічні знання програми і обирається на основі цих знань. Цей недогляд може допомогти тестувальнику виявити багато помилок, оскільки він повинен розуміти продукт з точки зору користувача.
Плюси та мінуси тестування на мавпах
Перш ніж ви вирішите використовувати метод мавпячого тестування, вам потрібно зрозуміти його плюси і мінуси.
Переваги тестування на мавпах
1. Пошук рідкісних або прихованих помилок
Мабуть, найбільш переконливою перевагою мавпячого тестування є здатність цієї методики виявляти помилки, дефекти або поведінку, які в іншому випадку могли б залишитися непоміченими. Знайти ці граничні випадки складно за допомогою традиційних методів тестування, тому мавпяче тестування – це надійний спосіб перевірити збої, пошкодження даних і все інше, що загрожує стабільності додатку.
2. Забезпечує надійність
Мавпяче тестування призначене для того, щоб побачити, як додаток реагує на непередбачувані умови, з якими він зіткнеться під час реального використання. Коли додаток потрапляє в руки користувача, він отримує безліч різних вхідних даних, які розробники не можуть передбачити. Мавпяче тестування імітує цю ситуацію, що призводить до більш надійних збірок.
3. Економічна ефективність
Порівняно з іншими видами тестування, тестування на мавпах є дуже економічно ефективним. На це є кілька причин. По-перше, вам не потрібно витрачати багато часу на розробку сценаріїв використання вашого додатку. Крім того, програмні інструменти для мавпячого тестування значною мірою автоматизовані, що звільняє час розробників для інших завдань, заощаджуючи ваші гроші.
4. Універсальність
Одна з найкращих речей у мавпячому тестуванні – це те, що тести можуть виконувати люди без технічної освіти. Дійсно, в деяких випадках бажано, щоб хтось був повністю “зеленим”. Крім того, ці тести досить прості в налаштуванні, що знову ж таки зменшує залежність від кваліфікованих інженерів.
5. Раннє виявлення помилок
Знаходження та усунення помилок на ранній стадії життєвого циклу розробки економить час на подальшому шляху. Мавпяче тестування вносить певний рівень випадковості в тестування, що може допомогти вам знайти недоліки у вашому коді, які легко виправити.
Недоліки тестування на мавпах
1. Покриття
Хоча мавпяче тестування може призвести до покращення тестового покриття, йому не вистачає планової та стратегічної ретельності, властивої іншим типам тестування. По суті, через те, що ви закидаєте додаток випадковими вхідними даними, ви перебуваєте у владі хаосу у пошуку помилок. Це не означає, що він не знайде все, але без чіткої та заздалегідь визначеної стратегії ви не можете бути на 100% впевнені, що все зафіксовано.
2. Обмежене застосування
Мавпяче тестування підходить не для всіх типів додатків. Він чудово підходить для складних додатків з великою кількістю різноманітних функцій і можливостей, які, що особливо важливо, мають потенціал для несподіваної взаємодії з користувачем. Програми, які пропонують більш жорсткі та передбачувані функції, з меншою ймовірністю виграють від цих тестів.
3. Забирає багато часу
Ручне мавпяче тестування дуже трудомістке. Це вимагає великої кількості взаємодій з модулями та програмним забезпеченням, без гарантії, що кожна сесія виявить помилки. Звичайно, ви можете автоматизувати процес, що значно економить час і ресурси.
4. Помилкові спрацьовування
Через хаотичну або випадкову природу мавпячого тестування деякі вхідні дані можуть імітувати сценарії, які не відбудуться під час реального використання продукту. Така ситуація може призвести до генерації хибних спрацьовувань, що змушує кодерів виправляти непотрібні помилки.
Що таке хаос-мавпяче тестування?
Хаос-тестування – це техніка розробки програмного забезпечення, яка використовує контрольовані та навмисні експерименти, спрямовані на порушення роботи системи (і навіть спричинення збоїв) для оцінки її стійкості та здатності до відновлення.
Ідея навмисного зламу системи для забезпечення стійкості досить поширена в середовищі розробки програмного забезпечення, і ці методи, як правило, призводять до створення збірок, за якими можуть стояти інженери.
У 2008 році після триденного пошкодження бази даних популярний потоковий сервіс Netflix вирішив мігрувати на Amazon Web Services (AWS). Мета полягала в тому, щоб уникнути єдиної точки відмови та зменшити проблеми масштабування, пов’язані з розширенням їхніх послуг.
Команда реалізувала хаос-мавпяче тестування для перевірки публічних екземплярів на інфраструктурі AWS. Переваги були подвійними:
- Процес виявив слабкі місця, які інженери Netflix змогли виправити
- Це надихнуло команду на створення автоматизованих механізмів відновлення для свого сервісу.
Тестування на мавпах Хаосу є частиною Хаос-інжинірингу. Він використовується для перевірки відмовостійкості системи та її здатності підтримувати стабільність і продуктивність, навіть якщо окремі компоненти несподівано виходять з ладу.
Хоча це пов’язано з тестуванням на мавпах, це окрема методика.
Тестування на мавпах проти тестування горили
Можливо, ви також чули про концепцію тестування Gorilla у розробці програмного забезпечення. Хоча обидві техніки носять назви приматів, вони мають багато спільних рис і відмінностей. Давайте розберемося, що таке тестування Gorilla і де його можна використовувати.
Тестування горил вважається більш структурованою версією мавпячого тестування. Для порівняння, мавпяче тестування часто використовується на ранніх стадіях тестування, коли ще немає формальних тестових кейсів. З іншого боку, тестування Gorilla використовує автоматизований інструмент або скрипт для генерації випадкових вхідних даних для програмного додатку.
Тестування за допомогою горили швидке і набагато ефективніше, ніж ручне тестування на мавпах. Він пропонує широке покриття, і це чудовий спосіб знайти аварії, які потребують вирішення. Однак його найкраще використовувати для додатків з чітко визначеними межами або для ретельного тестування певного модуля.
І мавпяче тестування, і тестування горил мають своє місце в сучасному тестуванні розробки програмного забезпечення. Розуміння їх є ключем до використання правильного підходу в правильному просторі.
Який найкращий інструмент для мавпячого тестування?
Програмне забезпечення для тестування мавп стало невід’ємною частиною інструментарію сучасного розробника. Однак є кілька варіантів. Отже, який найкращий інструмент для мавпячого тестування? Ось декілька з них, про які вам потрібно знати.
1. ZAPTEST
ZAPTEST – це потужний
безкоштовний та корпоративний інструмент автоматизації тестування програмного забезпечення
який підтримує широкий спектр методів автоматизації тестування, включаючи мавпяче тестування. Деякі з функцій ZAPTEST, які допомагають при тестуванні на мавпах, включають в себе наступні:
- Запис сценаріїв без коду: Команди можуть записувати взаємодії користувачів і перетворювати їх на тестовий код.
- Генерація вхідних даних: ZAPTEST полегшує генерацію випадкових вхідних даних, що є основним елементом мавпячого тестування
- Надійна звітність: ZAPTEST пропонує потужні можливості звітування, які допоможуть вам документувати ваші тести
Звичайно, ці функції – лише невелика частина можливостей ZAPTEST для широкого спектру методів тестування, включаючи тести на мавпах. Завдяки інтеграції з WebDriver, функціям штучного інтелекту та ZAPTEST CoPilot команди можуть випробувати майбутнє тестування програмного забезпечення в одному місці.
Більше того, користувачі ZAPTEST Enterprise отримують доступ до штатного спеціаліста ZAP Expert та необмежену кількість ліцензій, і все це за передбачувану фіксовану вартість.
2. Аппій.
Appium – це інструмент з відкритим вихідним кодом. Ви можете використовувати його як для Android, так і для iOS. Він дозволяє користувачам автоматизувати взаємодію з мобільними додатками та має можливість тестування на мавпах. Розробники можуть імітувати широкий спектр реакцій користувацького інтерфейсу, таких як введення тексту, клацання, торкання та прокрутка.
Хоча Appium є чудовим інструментом для мобільних розробників, йому не вистачає можливостей для десктопного та веб-тестування.
3. Перевірка на мавпах
Monkey Test Це хмарна платформа для тестування з широким спектром можливостей, включаючи тестування на мавпах. Хоча Monkey Test дуже зручний у використанні, йому, можливо, не вистачає потужності інструментів-конкурентів.
Інші недоліки полягають у тому, що він міг би виглядати більш витонченим і супроводжуватися кращою документацією. Більше того, деякі користувачі скаржилися на неточні результати тестів. Тим не менш, це проста програма з низькою ціною, тому ви не можете очікувати від неї багато чого.
4. MonkeyTestJS
MonkeyTestJS – це австралійський інструмент з відкритим вихідним кодом на основі JavaScript, створений лише для веб-додатків. Він досить простий, але більш ніж здатний виконувати свою роботу. Інструмент дозволяє розробникам імітувати взаємодію користувача з веб-додатком, наприклад, кліки, заповнення форм, введення з клавіатури тощо.
Очевидним недоліком інструменту є те, що він доступний лише для веб-додатків. Однак його варто мати у своєму арсеналі.
Який найкращий спеціалізований інструмент для тестування Android monkey?
Є кілька хороших варіантів для розробників, які хочуть внести трохи хаосу в тестування Android-додатків. Розглянемо два.
1. Інтерфейс/додаток Exerciser Monkey для Android
UI/Додаток Exerciser Monkey для Android – це інструмент командного рядка, який дозволяє розробникам надсилати псевдовипадкові вхідні дані або події як на пристрої Android, так і на емуляції. Цей інструмент працює в оболонці Android Debug Bridge.
2. MonkeyRunner для Android
MonkeyRunner для Android – популярний інструмент для тестування мавп на Android. Програмне забезпечення являє собою API, що дозволяє розробникам писати програми, які емулюють або керують пристроєм Android. Це також хороший варіант як для функціонального, так і для модульного тестування.
Обидва ці додатки є хорошими варіантами. Однак вони досить технічні, що підійде не всім командам.
Чи варто автоматизувати мавпяче тестування?
Однією з найбільших проблем ручного мавпячого тестування є те, що воно забирає багато часу. Інша річ, на яку слід звернути увагу, – це те, що кільком тестувальникам важко змоделювати різноманітні взаємодії, які може мати широка база користувачів з певним додатком.
Отже, відразу впадають в око три недоліки. Ручне тестування на мавпах:
- Забирає багато часу
- Дорого
- Потенційно недостатнє покриття
Інструмент автоматизованого мавпячого тестування вирішує всі ці проблеми.
Чи є ZAPTEST правильним вибором для тестування на мавпах?
Мавпяче тестування – хороша техніка, яку варто мати у своєму репертуарі, особливо якщо ви розробляєте складні додатки. Однак придбання спеціального програмного забезпечення для тестування на мавпах коштує дорого.
ZAPTEST
це гнучкий та потужний
інструмент автоматизації тестування повного стека.
Він легко налаштовується і дозволяє як розробникам, так і нетехнічним командам створювати і проектувати нескінченну кількість методів тестування програмного забезпечення, включаючи мавпяче тестування.
Тестування на мавпах є чудовим вибором, якщо доповнити його іншими типами тестів. ZAPTEST пропонує все під одним дахом, з додаванням високоякісні інструменти RPA.
Заключні думки
Програмне забезпечення для тестування Monkey надає розробникам нетрадиційний спосіб тестування своїх додатків. Сила цього методу полягає в його здатності моделювати безліч непередбачуваних способів, якими користувач може взаємодіяти з програмним забезпеченням. Коротше кажучи, мавпяче тестування забезпечує покриття, якого може бути важко досягти за допомогою плану тестування.