Mitä Monkey & Gorilla -testaus on? Esimerkkejä, ero

⚡ Älykäs yhteenveto

Apinatestaus syöttää satunnaista, suunnittelematonta syötettä käynnissä olevaan sovellukseen ja tarkkailee, selviääkö se, joten kaatumiset, jumiutumiset ja käsittelemättömät tilat paljastuvat kauan ennen kuin yhtään ennalta määriteltyä testitapausta on kirjoitettu.

  • 🐒 Ydinajatus: Satunnaiset klikkaukset, näppäinpainallukset ja eleet etsivät järjestelmää kaatumispisteiden varalta odotettujen tulosten sijaan.
  • 🦍 Gorilla-kontrasti: Gorilla-testaus moukaroi yhtä moduulia toistuvasti, kun taas apinatestaus vaeltaa koko sovelluksen läpi.
  • 🧠 Kolme luokkaa: Tyhmät, älykkäät ja loistavat apinat eroavat toisistaan ​​siinä, kuinka paljon ne tietävät testattavasta järjestelmästä.
  • 🇧🇷 Rehellinen kompromissi: Halpa ja nopea käyttää, mutta vikoja on vaikea toistaa eikä kattavuutta voida taata.
  • 🛠️ työkalut: Android UI/Application Exerciser Monkey, MonkeyRunner ja vastaavat työkalut luovat tapahtumavirtoja automaattisesti.
  • 🎯 Parhaiten sopiva: Varhaiset koontiversiot, interaktiiviset käyttöliittymät ja vakausajot, aina yhdistettynä skriptattuihin ja tutkiviin testeihin.

Apina- ja gorillatestauksen vertailu ohjelmistotestauksessa

Mitä on apinatestaus?

Apinatestaus on ohjelmistotestaustekniikka, jossa testaaja syöttää sovellukseen satunnaisia ​​syötteitä ilman ennalta määriteltyjä testitapauksia ja tarkistaa sovelluksen toiminnan, erityisesti kaatuuko se. Apinatestauksen tarkoituksena on löytää bugeja ja virheitä kokeellisen, ohjelmoimattoman vuorovaikutuksen avulla.

Nimi tulee yksinkertaisesta kuvasta, joka on esitetty alla.

Testaaja toimii apinana syöttäen satunnaisia ​​syötteitä apinatestauksen aikana

  • Apinatestauksessa testaajaa (ja joskus kehittäjää) kohdellaan "apinana".
  • Jos apina käyttäisi tietokonetta, se suorittaisi tehtäviä satunnaisesti ymmärtämättä järjestelmää.
  • Samalla tavalla testaaja käyttää testattavaan järjestelmään satunnaisia ​​syötteitä löytääkseen virheitä määrittelemättä ennalta mitään testitapausta.
  • Joissakin tapauksissa apinatestien tarkoituksena on yksikkötestaus or Käyttöliittymätestaus.

Mitä Gorilla-testaus on?

Gorilla-testaus on ohjelmistotestaustekniikka, jossa yhtä ohjelman moduulia testataan toistuvasti sen varmistamiseksi, että se toimii oikein eikä sisällä virheitä.

Yhtä moduulia voidaan käyttää sata kertaa tai useammin täsmälleen samalla tavalla, minkä vuoksi gorilla-testausta kutsutaan myös "turhauttavaksi testaukseksi". Apinatestaus leviää satunnaisesti sovellukseen; gorilla-testaus keskittyy yhteen kohtaan, kunnes se hajoaa tai osoittautuu vakaaksi.

Apinatestauksen tyypit

Apinatestaus jaetaan luokkiin sen mukaan, kuinka paljon testaaja tietää järjestelmästä. Alla oleva kaavio tiivistää kolme tyyppiä.

Tyhmiä, älykkäitä ja loistavia apinatestejä

  • Tyhmä apina: Testaajalla ei ole aavistustakaan järjestelmästä tai sen toiminnasta, eikä ole takeita siitä, että mikään syöte on pätevä.
  • Älykäs apina: Testaajalla on tarkka käsitys järjestelmästä, sen tarkoituksesta ja toiminnallisuudesta, hän navigoi siinä ja antaa valideja syötteitä.
  • Loistava apina: Testaaja työskentelee todellisen käyttäjäkäyttäytymisen pohjalta ja pystyy osoittamaan, missä vikoja todennäköisesti esiintyy.

Apinatestaus vs. gorillatestaus vs. ad-hoc-testaus

Apinatestaus, gorillatestaus ja ad-hoc-testaus niillä on käsikirjoittamaton maku, minkä vuoksi ne usein sekoitetaan. Alla olevat kaksi taulukkoa erottavat ne toisistaan.

Apinatestaus vs. gorillatestaus

Apinan testaus Gorilla testaus
Suoritetaan satunnaisesti, ilman ennalta määriteltyjä testitapauksia. Ei ennalta määriteltyjä eikä satunnaisia ​​– samat tarkistukset yksinkertaisesti toistetaan.
Suoritetaan koko järjestelmälle ja voi sisältää useita testitapauksia. Suoritettu muutamalla valitulla moduulilla ja muutamalla testitapauksella.
Tavoitteena on tarkistaa, onko järjestelmä kaatunut. Tarkoituksena on tarkistaa, toimiiko moduuli oikein.

Apinatestaus vs. ad-hoc-testaus

Apinan testaus Ad-hoc-testaus
Suoritetaan satunnaisesti, ilman ennalta määriteltyjä testitapauksia. Suoritetaan ilman suunnittelua tai dokumentointia, joten testitapauksia tai SRS:ää ei laadita.
Testaajat eivät välttämättä tiedä, mikä järjestelmä on tai mihin sitä käytetään. Testaajan on ymmärrettävä järjestelmä hyvin ennen testauksen aloittamista.
Tavoitteena on tarkistaa, onko järjestelmä kaatunut. Tavoitteena on jakaa järjestelmä satunnaisesti osiin ja tarkistaa niiden toimivuus.

Apinatestauksen edut ja haitat

Koska tekniikka korvaa suunnittelun nopeudella, sen edut ja heikkoudet johtuvat samasta ominaisuudesta.

Apinatestauksen edut

  • Uusia bugityyppejä: Testaaja voi työskennellä myös aiemmin mainittujen skenaarioiden ulkopuolella, mikä nostaa esiin virheitä, joita kukaan ei ollut ajatellut skriptata.
  • Helppo toteuttaa: Satunnaisten toimien järjestäminen satunnaista dataa vasten on nopea tapa harjoitella järjestelmää.
  • Less osaavat ihmiset: apinatestaus voidaan usein suorittaa ilman erittäin kokeneita testaajia.
  • Less kallis: sen asentaminen ja käyttäminen vaatii huomattavasti vähemmän kustannuksia kuin skriptatun sarjan.

Apinatestauksen haitat

  • Virheitä voi olla vaikea toistaa: Koska syötteet ovat satunnaisia, epäonnistumisen toistaminen ei välttämättä ole mahdollista ilman tallennettua siementä.
  • Less tarkkuus: Testaaja ei voi määritellä tarkkaa skenaariota eikä taata käsiteltyjen asioiden paikkansapitävyyttä.
  • Tekninen asiantuntemus auttaa edelleen: Jotta löydökset pysyisivät merkityksellisinä, testaajien on tunnettava toimiala hyvin.
  • Hidas suhteessa saantoon: Ajot voivat jatkua pitkään ja silti palauttaa vain vähän vikoja, jättäen järjestelmään aukkoja.

Kuinka suorittaa apinatestaus

Apinatestaus tehostuu huomattavasti, kun sitä ohjaa työkalu, ja sitä voidaan käyttää Android sekä työpöytä- että verkkosovelluksia. Yleinen prosessi on seuraava:

  1. Rekisteröi testattava sovellus työkaluun tai sitä käyttävään erilliseen palvelimeen.
  2. Valmistele viitteet ja konfiguraatio, jota työkalu tarvitsee testisarjan rakentamiseen.
  3. Suorita rakennettu testipaketti.
  4. Anna työkalun kirjoittaa lokitiedostonsa — ”apinatesti”-lokitiedosto tallentaa jokaisen luodun tapahtuman ja tulokset.
  5. Anna ajon jatkua, kunnes järjestelmä saavuttaa kaatumispisteen, jossa häiritsevä toiminto tallennetaan lokiin.
  6. Jaa raportti vastuutiimin kanssa ja tallenna testitiedot myöhempää tarvetta varten.

Säilytä jokainen loki. Satunnainen ajo on hyödyllinen myöhemmin vain, jos tapahtumasarja ja sen tuottanut siemen on tallennettu, joten vianhallinnan voi yhdistää kaatumisen toistettavissa olevaan syötteeseen.

Apinan testaustyökalut

Apinatestaus on yleensä automatisoitua, koska kone voi tuottaa tuhansia tapahtumia ajassa, jonka ihminen tuottaa muutaman kymmenen. Yleisesti käytetyt vaihtoehdot ovat:

  • Käyttöliittymä/sovellus Liikuntamonsteri: sisäänrakennettu komentorivityökalu Android joka kulkee ADB kuori ja lähettää laitteelle tai emulaattorille näennäissatunnaisia ​​​​käyttäjätapahtumien virtoja, kuten napautuksia, eleitä ja näppäinpainalluksia, sekä järjestelmätason tapahtumia.
  • MonkeyRunner: erillinen Python API joka ohjaa laitteita ja emulaattoreita työasemalta, lähettää tiettyjä komentoja ja ottaa kuvakaappauksia. Nimestään huolimatta se ei ole sama työkalu kuin kuntoiluapina.
  • Käyttöliittymän automatisointi ja Appium: yleinen mobiilitestaus kehykset, joille voidaan skriptata puolisatunnaisten tapahtumasarjojen käynnistäminen koontiversiossa.
  • Fuzzing-työkalut, kuten AFL: sama satunnaisen syötteen idea sovellettiin dataan eleiden sijaan, mitä käsitellään kohdassa fuzz-testaus.

Apinatestauksen työkalutuki on ohuempi kuin skriptitestauksen automaatiotestaus, joten useimmat tiimit yhdistävät geneerisen tapahtumageneraattorin olemassa olevaan kehykseensä sen sijaan, että ostaisivat erillisen tuotteen.

Milloin apinatestausta käytetään

Apinatestaus ansaitsee paikkansa tietyissä tilanteissa sen sijaan, että se korvaisi suunnitellut testit yleisesti.

Käytä sitä, kun:

  • Varhainen koontiversio tarvitsee halvan vakaustarkistuksen ennen kuin virallisia testitapauksia on olemassa.
  • Käyttöliittymä on erittäin interaktiivinen – pelejä, piirtotyökaluja, mediasoittimia – ja todellista käyttäjän käyttäytymistä on vaikea ennustaa.
  • Haluatko kylpeä tai stressi joka etsii kaatumisia, muistivuotoja ja käsittelemättömiä tiloja useiden tuntien ajan.
  • Julkaisu on läpäissyt skriptitarkastukset ja haluat riippumattoman tarkistuksen kaikelle, mihin skripti ei ole koskaan koskenut.

Vältä sitä, kun:

  • Tarvitset toistettavia todisteita vaatimuksen täyttämisestä – se on kirjallisen todistuksen tehtävä. testitapaus.
  • Koonti on niin epävakaa, että jokainen ajo kaatuu välittömästi, mikä piilottaa kaiken ensimmäisen epäonnistumisen taakse.
  • Aika on vähissä, koska satunnainen haku ei takaa löydöstä.

Käytännössä vahvimmat tulokset saadaan yhdistämällä lähestymistapoja: skriptatut testit kattavat tunnetut virrat, tutkiva testaus tutkii tuntematonta tarkoituksella ja apina testaa hyökkäyksiä tekemällä mitä tahansa he molemmat olettivat, ettei koskaan tapahtuisi.

UKK

Nimi lainaa kuvaa äärettömästä apinasta: apina, joka painaa näppäimiä satunnaisesti riittävän kauan, tuottaa lopulta jotain merkityksellistä. Ohjelmistoihin sovellettuna satunnainen syöte saavuttaa lopulta tiloja, joita suunnittelija ei osannut odottaa.

Tutkiva testaus on harkittua: testaaja muodostaa hypoteesin, tutkii sitä ja mukauttaa sitä. Apinatestaus on suunnittelultaan suuntaamatonta. Toinen perustuu harkintaan, toinen määrään ja satunnaisuuteen.

Niillä on yhteinen satunnaissyöttöperiaate, mutta ne eroavat kohteidensa suhteen. Apinatestaus laukaisee käyttäjätapahtumia rajapinnassa. Sumentava testaus syöttää virheellisesti muotoiltua dataa jäsentimille ja API-rajapinnoille, yleensä etsien tietoturva-aukkoja.

Chaos Monkey kuuluu kaaostekniikkaan: se poistaa palveluita käytöstä tai häiritsee infrastruktuuria satunnaisesti testatakseen niiden sietokykyä. Yhteinen idea on satunnaisuus, mutta kohteena on käynnissä oleva alusta, ei käyttöliittymä.

Mallit voivat painottaa tapahtumavirtaa oikeiden käyttäjien kulkemien polkujen suuntaan, mikä tekee tyhmästä apinasta älykkäämmän. Ne myös ryhmittelevät kaatumislokien kaksoiskappaleet ja luokittelevat satunnaiset viat, jotka ansaitsevat kehittäjän huomion ensin.

GitHub Copilot laatii johtosarjan nopeasti — tapahtumageneraattorit, siementen käsittelyn, lokijäsentimet ja kaatumisten triage-skriptit. Satunnaisuusstrategia ja läpäisykriteerit tarvitsevat edelleen testaajan määriteltäväksi.

Hyödyllisiä mittareita ovat kaatumisten määrä tuhatta luotua toimintoa kohden, löydettyjen yksilöllisten vikojen määrä, suorituksen aikana saavutettu koodin kattavuus ja aika ensimmäiseen virheeseen. Vertaile näitä trendejä eri koontiversioiden välillä yhden suorituskerran lukemisen sijaan.

Kirjaa satunnainen siemen ja tapahtumaloki. Siemenen hyväksyvät työkalut toistavat saman sekvenssin uudelleen, joten vika voidaan rajata lyhyeksi toistettavaksi tapaukseksi ja nostaa esiin normaalina vikana.

Tiivistä tämä viesti seuraavasti: