При повечето видове тестване на софтуер се използва внимателно определен план за тестване, за да се осигури покритие. Въпреки че тези параметри покриват много от възможностите за използване на даден софтуер, те невинаги ще имитират поведението на потребител, който не е запознат с приложението и просто се опитва да взаимодейства с него по изследователски начин: Навлизат тестовете с маймуни.
В тази статия ще разгледаме всичко, свързано с тестването с маймуни, включително софтуер за тестване с маймуни, процеси, видове, подходи и др.
Какво представлява тестването на маймуни?
Тестването с маймуни е все по-популярна техника за тестване на софтуер. Тя включва изпращане на случайни входни данни в приложението, за да се симулира непредсказуемостта на взаимодействието с потребителския интерфейс.
Целта е да се открият грешки или сривове, които може да са трудни за откриване с предварително дефинирани тестови случаи. Тестът с маймуна имитира начина, по който човек без опит или познания за дадено приложение може да изследва софтуера на случаен принцип.
Тази техника е добър вариант както за
натоварване
и
стрес-тестове
приложения. На практика тестовете предоставят непрекъснати случайни входни данни в опит да се разбие приложението.
Съществуват много сходства между тестовете с маймуни и
ad hoc тестването
, по-специално случайния им характер и липсата на зависимост от план за изпитване. Въпреки това между двата подхода има достатъчно разлики, за да ги разглеждаме като отделни подходи.
Макар че някои разработчици смятат, че маймунските тестове са вид 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 могат да отстранят.
- Това вдъхнови екипа да изгради автоматизирани механизми за възстановяване на услугата си.
Тестването с маймуни на Chaos е част от Chaos Engineering. Той се използва за тестване на устойчивостта на системата на грешки и способността ѝ да поддържа стабилност и производителност дори при неочаквани откази на отделни компоненти.
Въпреки че е свързан с изпитването с маймуни, той е отделна техника.
Тестване с маймуна срещу тестване с горила
Може би сте чували и за концепцията за тестване на горила при разработването на софтуер. Въпреки че и двете техники носят имената на примати, те имат много прилики и разлики. Нека разгледаме какво представлява тестването Gorilla и къде може да се използва.
Тестването с горила се счита за по-структурирана версия на тестването с маймуна. За сравнение, маймунското тестване често се използва в ранните етапи на тестването, когато няма налични официални тестови случаи. От друга страна, при тестването на “горила” се използва автоматизиран инструмент или скрипт за генериране на случайни входни данни за софтуерно приложение.
Тестването с горила е бързо и много по-ефективно от ръчното тестване с маймуни. Тя предлага широк обхват и е отличен начин да откриете аварии, които трябва да бъдат отстранени. Най-добре е обаче да се използва за приложения с точно определени граници или за цялостно тестване на определен модул.
И тестовете с маймуни, и тестовете с горили имат своето място в съвременното тестване на софтуерни разработки. Разбирането им е от ключово значение за използването на правилния подход в правилното пространство.
Кой е най-добрият инструмент за тестване на маймуни?
Софтуерът за тестване на маймуни се превърна в съществена част от инструментариума на съвременния разработчик. Въпреки това има няколко възможности. И така, кой е най-добрият инструмент за тестване на маймуни? Ето някои от тях, за които трябва да знаете.
1. ZAPTEST
ZAPTEST е мощен
безплатен и корпоративен инструмент за автоматизация на тестването на софтуер
която поддържа широк набор от техники за автоматизация на тестове, включително тестване с маймуни. Някои от функциите на ZAPTEST, които помагат при тестването на маймуни, включват:
- Записване на скрипт без код: Екипите могат да записват взаимодействията на потребителите и да ги превръщат в тестови код.
- Генериране на входни данни: ZAPTEST улеснява генерирането на случайни входни данни, което е основен елемент на маймунското тестване
- Надеждно отчитане: ZAPTEST предлага мощни възможности за отчитане, които ви помагат да документирате тестовете си
Разбира се, тези функции само очертават повърхността на възможностите на ZAPTEST за широк спектър от техники за тестване, включително маймунски тестове. С интеграцията на WebDriver, функциите на изкуствения интелект и ZAPTEST CoPilot екипите могат да изпитат бъдещето на софтуерното тестване на едно място.
Нещо повече, потребителите на ZAPTEST Enterprise получават достъп до специализиран експерт на ZAP на пълен работен ден и неограничени лицензи, и всичко това на предвидима фиксирана цена.
2. Appium
Appium е инструмент с отворен код. Можете да я използвате както за Android, така и за iOS. Тя позволява на потребителите да автоматизират взаимодействията с мобилни приложения и има възможности за тестване на маймуни. Разработчиците могат да имитират широк спектър от реакции на потребителския интерфейс, като въвеждане на текст, кликване, докосване и превъртане.
Въпреки че Appium е чудесен инструмент за мобилни разработчици, той не разполага с възможности за тестване на настолни компютри и уеб сайтове.
3. Тествайте го с маймуни
Monkey Test Това е базирана в облака платформа за тестване с редица възможности за тестване, които включват тестване с маймуни. Макар че 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.
Заключителни мисли
Софтуерът за тестване на маймуни предоставя на разработчиците нетрадиционен начин за тестване на техните приложения. Силата на тази техника се крие в способността ѝ да симулира безбройните непредвидими начини, по които потребителят може да работи с даден софтуер. Накратко, тестването с маймуни осигурява покритие, което трудно може да се постигне с план за тестване.