Što je testiranje majmuna i gorile? Primjeri, razlika

⚡ Pametni sažetak

Monkey testing unosi nasumične, neplanirane ulazne podatke u pokrenutu aplikaciju i prati hoće li ona preživjeti, pa se rušenja, zamrzavanja i neobrađena stanja otkrivaju mnogo prije nego što je napisan bilo koji unaprijed definirani testni slučaj.

  • ???? Osnovna ideja: Slučajni klikovi, pritisci tipki i geste ispituju sustav u potrazi za točkama pada, a ne za očekivanim rezultatima.
  • 🦍 Kontrast s gorilama: Gorilla testiranje više puta pogađa jedan modul, dok se monkey testiranje kreće po cijeloj aplikaciji.
  • 🧠 Tri ocjene: Glupi, pametni i briljantni majmuni razlikuju se po tome koliko znaju o sustavu koji se testira.
  • ⚖️ Iskrena kompenzacija: Jeftino i brzo za izvođenje, ali nedostatke je teško reproducirati i pokrivenost se ne može jamčiti.
  • 🛠️ alat: Android UI/Application Exerciser Monkey, MonkeyRunner i slični alati automatski generiraju tokove događaja.
  • 🎯 Najbolje odgovara: Rane verzije, interaktivna sučelja i testovi za stabilnost, uvijek upareni sa skriptiranim i istraživačkim testiranjem.

Usporedba testiranja na majmunima i testiranja na gorili u testiranju softvera

Što je testiranje na majmunima?

Testiranje na majmunima je tehnika testiranja softvera u kojoj tester unosi nasumične ulaze u aplikaciju bez unaprijed definiranih testnih slučajeva i provjerava kako se aplikacija ponaša, posebno ruši li se. Svrha testiranja majmuna je pronaći greške i greške putem eksperimentalne, neskriptirane interakcije.

Naziv dolazi od jednostavne slike, ilustrirane u nastavku.

Tester koji glumi majmuna i unosi nasumične ulaze tijekom testiranja na majmunima

  • U testiranju majmuna, tester (a ponekad i programer) se tretira kao "majmun".
  • Kad bi majmun koristio računalo, izvršavao bi zadatke nasumično, bez razumijevanja sustava.
  • Na isti način, tester primjenjuje nasumične ulaze na testirani sustav kako bi pronašao greške bez prethodnog definiranja bilo kojeg testnog slučaja.
  • U nekim slučajevima testiranje na majmunima usmjereno je na ispitivanje jedinice or Testiranje grafičkog korisničkog sučelja (GUI).

Što je Gorilla testiranje?

Testiranje na gorile je tehnika testiranja softvera u kojoj se jedan modul programa više puta testira kako bi se potvrdilo da ispravno radi i da ne sadrži nedostatke.

Jedan modul može se vježbati stotinu ili više puta na potpuno isti način, zbog čega je gorilla testiranje poznato i kao „frustrirajuće testiranje“. Monkey testiranje se nasumično širi po aplikaciji; gorilla testiranje se upušta u jedno mjesto dok se ne slomi ili ne pokaže čvrstim.

Vrste testiranja majmuna

Testiranje majmuna podijeljeno je u kategorije prema tome koliko tester zna o sustavu. Dijagram u nastavku sažima tri vrste.

Glupe, pametne i briljantne vrste testiranja na majmunima

  • Glupi majmun: Tester nema pojma o sustavu ili njegovoj funkcionalnosti, i ne postoji jamstvo da je bilo koji ulaz valjan.
  • Pametni majmun: Tester ima preciznu ideju o sustavu, njegovoj svrsi i funkcionalnosti, snalazi se u njemu i daje valjane ulazne podatke.
  • Briljantni majmun: Tester radi na temelju stvarnog ponašanja korisnika i može utvrditi gdje se mogu pojaviti nedostaci.

Testiranje na majmunima u odnosu na testiranje na gorilama u odnosu na ad-hoc testiranje

Testiranje na majmunima, testiranje na gorilama i ad-hoc testiranje dijele neplanirani okus, zbog čega se često brkaju. Dvije tablice u nastavku ih razdvajaju.

Testiranje na majmunima u odnosu na testiranje na gorilama

Testiranje majmuna Testiranje gorile
Izvodi se nasumično, bez posebno definiranih testnih slučajeva. Niti unaprijed definirane niti nasumične - iste provjere se jednostavno ponavljaju.
Izvodi se na cijelom sustavu i može uključivati ​​mnogo testnih slučajeva. Izvršeno na nekoliko odabranih modula s malo testnih slučajeva.
Cilj je provjeriti je li došlo do pada sustava. Cilj je provjeriti ispravnost rada modula.

Testiranje majmuna u odnosu na ad-hoc testiranje

Testiranje majmuna Ad-hoc testiranje
Izvodi se nasumično, bez posebno definiranih testnih slučajeva. Izvodi se bez planiranja ili dokumentacije, tako da se ne pripremaju testni slučajevi ili SRS.
Testeri možda ne znaju što je sustav ili čemu služi. Tester mora dobro razumjeti sustav prije početka testiranja.
Cilj je provjeriti je li došlo do pada sustava. Cilj je nasumično podijeliti sustav na poddijelove i provjeriti njihovu funkcionalnost.

Prednosti i nedostaci testiranja na majmunima

Budući da tehnika žrtvuje planiranje za brzinu, njezine prednosti i slabosti proizlaze iz istog svojstva.

Prednosti testiranja na majmunima

  • Nove vrste bugova: Tester može slobodno raditi izvan prethodno navedenih scenarija, što otkriva greške za koje se nitko nije sjetio skriptirati.
  • Jednostavno za izvođenje: Organiziranje slučajnih akcija na temelju slučajnih podataka brz je način vježbanja sustava.
  • Less vješti ljudi: Testiranje na majmunima često se može provesti bez visoko iskusnih testera.
  • Less skupo: Za postavljanje i pokretanje potrebno je znatno manje troškova nego za skriptirani paket.

Nedostaci testiranja na majmunima

  • Bube je teško reproducirati: Budući da su ulazi slučajni, ponovno stvaranje kvara možda neće biti moguće bez zabilježenog početnog podataka.
  • Less točnost: Tester ne može definirati točan scenarij i ne može jamčiti točnost onoga što je obuhvaćeno.
  • Tehnička stručnost i dalje pomaže: Da bi nalazi bili smisleni, testeri trebaju dobro poznavati domenu.
  • Sporo u odnosu na prinos: Izvodi mogu trajati dugo vremena i još uvijek vraćati malo nedostataka, ostavljajući praznine u sustavu.

Kako izvesti testiranje na majmunima

Testiranje majmunima postaje daleko učinkovitije kada ga pokreće alat i kada se može pokrenuti protiv njega. Android izrada, kao i desktop i web aplikacija. Opći postupak je sljedeći:

  1. Registrirajte testiranu aplikaciju s alatom ili namjenskim poslužiteljem koji će je pokretati.
  2. Pripremite reference i konfiguraciju potrebnu alatu za izradu testnog paketa.
  3. Pokrenite izgrađeni paket testova.
  4. Neka alat zapiše svoj dnevnik — datoteka dnevnika „monkey testa“ bilježi svaki generirani događaj i rezultate.
  5. Dopustite da se izvođenje nastavi dok sustav ne dosegne točku pada, u kojoj se sporna radnja bilježi u zapisniku.
  6. Podijelite izvješće s odgovornim timom i pohranite podatke testiranja za buduću upotrebu.

Zapamtite svaki zapisnik. Slučajno pokretanje korisno je kasnije samo ako su spremljeni slijed događaja i početna vrijednost koja ga je proizvela, dakle upravljanje nedostacima može povezati pad sustava s reproducibilnim ulazom.

Alati za testiranje majmuna

Testiranje majmuna obično je automatizirano, jer stroj može generirati tisuće događaja u vremenu u kojem osoba generira nekoliko desetaka. Uobičajeno korištene opcije su:

  • Majmun za vježbanje korisničkog sučelja/aplikacija: alat naredbenog retka ugrađen u Android koji teče u ADB ljuske i šalje pseudo-slučajne tokove korisničkih događaja, kao što su dodiri, geste i pritisci tipki, plus događaje na razini sustava, na uređaj ili emulator.
  • MonkeyRunner: zasebna Python API koji upravlja uređajima i emulatorima s radne stanice, šalje određene naredbe i snima snimke zaslona. Unatoč imenu, to nije isti alat kao i majmun za vježbanje.
  • UI automatizator i Appium: opći mobilno testiranje okvire koji se mogu skriptirati za aktiviranje polu-slučajnih nizova događaja prilikom izgradnje.
  • Alati za fuzzing kao što je AFL: ista ideja slučajnog unosa primijenjena na podatke, a ne na geste, što je obrađeno u testiranje nejasnoća.

Podrška alata za testiranje pomoću majmuna je manja nego za skriptno testiranje. ispitivanje automatizacije, pa većina timova kombinira generički generator događaja sa svojim postojećim okvirom umjesto kupnje namjenskog proizvoda.

Kada koristiti testiranje majmuna

Testiranje na majmunima zaslužuje svoje mjesto u specifičnim situacijama, a ne kao opća zamjena za planirano testiranje.

Koristite ga kada:

  • Rana izrada zahtijeva jeftinu provjeru stabilnosti prije nego što postoje formalni testni slučajevi.
  • Sučelje je vrlo interaktivno - igre, alati za crtanje, media playeri - i stvarno ponašanje korisnika je teško predvidjeti.
  • Želite li se namakati ili stres izvođenje koje satima traži padove sustava, curenje memorije i neobrađena stanja.
  • Izdanje je prošlo skriptne provjere i želite neovisnu provjeru svega čega se skripta nikada nije dotakla.

Izbjegavajte ga kada:

  • Trebate ponovljive dokaze da je zahtjev ispunjen - to je posao pisanog testni slučaj.
  • Izrada je dovoljno nestabilna da se svako pokretanje odmah ruši, što sve skriva iza prvog kvara.
  • Vremena je malo, jer nasumično pretraživaje ne jamči da će se išta pronaći.

U praksi, najjači rezultati dolaze iz miješanih pristupa: skriptirani testovi pokrivaju poznate tokove, istraživačko testiranje namjerno istražuje nepoznato, a testiranje majmunima napada ono što su obojica pretpostavljali da se nikada neće dogoditi.

Pitanja i odgovori

Naziv posuđuje sliku beskonačnog majmuna: majmun koji dovoljno dugo nasumično udara tipke na kraju proizvodi nešto smisleno. Primijenjeno na softver, slučajni unos na kraju doseže stanja koja nijedan dizajner nije očekivao.

Istraživačko testiranje je namjerno: ispitivač formira hipotezu, istražuje je i prilagođava. Testiranje na majmunima je neusmjereno po svojoj prirodi. Jedno ovisi o prosudbi, a drugo o količini i slučajnosti.

Dijele princip slučajnog unosa, ali se razlikuju u cilju. Monkey testing aktivira korisničke događaje na sučelju. Fuzzing dovodi neispravne podatke do parsera i API-ja, obično tražeći sigurnosne propuste.

Chaos Monkey pripada inženjerstvu kaosa: nasumično onemogućuje usluge ili remeti infrastrukturu kako bi testirao otpornost. Zajednička ideja je slučajnost, ali cilj je platforma koja se izvršava, a ne korisničko sučelje.

Modeli mogu usmjeriti tok događaja prema putovima koje stvarni korisnici koriste, pretvarajući glupog majmuna u pametnijeg. Također grupiraju duplicirane zapise o rušenju i rangiraju koji nasumični kvarovi zaslužuju pažnju programera.

GitHub kopilot brzo izrađuje nacrte sustava - generatore događaja, rukovanje početnim podacima, parsere zapisnika i skripte za trijažu rušenja. Strategiju slučajnosti i kriterije prolaza još uvijek treba tester da ih definira.

Korisne mjere uključuju rušenja na tisuću generiranih radnji, broj pronađenih jedinstvenih nedostataka, pokrivenost koda postignutu tijekom izvođenja i vrijeme do prvog kvara. Pratite ih kroz verzije umjesto da čitate jedno izvođenje.

Zabilježite slučajno sjeme i zapisnik događaja. Alati koji prihvaćaju sjeme ponovit će identičan slijed, tako da se kvar može suziti na kratki reproducibilni slučaj i prikazati kao normalan kvar.

Sažmite ovu objavu uz: