Tekoälyn (AI) käyttö testiautomaatiossa on laadunvarmistuksen uusin trendi. Testaus yleensä ja erityisesti testiautomaatio näyttävät saaneen ”kaikki on parempaa tekoälyn kanssa” -tartunnan.
Koska tekoäly, koneoppiminen ja neuroverkot ovat tällä hetkellä kuuminta mahdollista, oli ehkä väistämätöntä, että tekoäly löytäisi tiensä testiautomaatioon jollain tavalla.
Testiautomaation taustaa
Muistan ajan useita vuosia sitten, jolloin testiautomaatio oli vielä uutta ja yksi laadunvarmistustiimeistämme työskenteli suuren asiakkaan projektissa. Kyseessä oli mobiilisovellus, jolla oli miljoonia käyttäjiä ja kuukausittaiset julkaisusyklit. Laadunvarmistustiimi oli yleensä rentona syklin kaksi ensimmäistä viikkoa ja työskenteli sen jälkeen kiihkeästi julkaisuun asti – yksi ketterän ohjelmistokehityksen erikoisista sivuvaikutuksista, joista otsikoissa ei kerrota!
Lopulta yksi laadunvarmistuksen vetäjistä kyllästyi pyörittelemään peukaloitaan rauhallisten kahden ensimmäisen viikon aikana ja alkoi työstää testiautomaation viitekehystä. Hän kirjoitti Rubylla testiskriptejä ja käytti Seleniumia / Appiumia sekä Jenkinsiä alkeelliseen putkeen, johon kuului myös näyttäviä raportteja, joissa testin epäonnistumista tai onnistumista kuvattiin punaisilla, keltaisilla ja vihreillä merkinnöillä.
Hän onnistui tässä muutaman julkaisusyklin ajan. Silloin esittelimme sen laadunvarmistusjohtajallemme, joka esitteli sen asiakkaillemme ja innosti heidät maksamaan automaattisesta testauksesta aliprojektina. Olimme seitsemännessä taivaassa ja kehityksen eturintamassa!
Kehityksen eturintama sai kuitenkin uuden merkityksen muutamaa kuukautta myöhemmin, kun havaitsimme tämän perustavanlaatuisen totuuden testiautomaatiosta, jonka jokainen pätevä laadunvarmistuksen automaatioinsinööri joutuu nykyään kohtaamaan:

Miksi sanon näin? Koska melko pian tunsimme itsemme Liisaksi Mordorissa juoksemassa hullun lailla Punaisen kuningattaren kanssa:

Olimme juuri havainneet testiautomaation loukun kylmän todellisuuden: yhden laadunvarmistusinsinöörimme oli pidettävä automaatiotestikokonaisuus ajan tasalla sovelluksen kanssa lähes jokaisen julkaisusyklin aikana, koska muutoksia tuli nopeasti ja paljon!
Yksi kentän nimen muutos ja automaattiset ohjelmistotestimme olivat pudonneet vertauskuvalliseen kaninkoloon. Uuden julkaisun alku oli erityisen hankala, koska ohjelmistokehitystiimi teki valtavasti uusia lisäyksiä.
Testiautomaatio ei ole sittemmin muuttunut perustavanlaatuisesti, koska se vaatii edelleen jatkuvaa valvontaa ja ylläpitoa. Mahdollisuus merkittävään parannukseen lähestymistavassa ja toteutuksessa on ilmaantunut vasta tekoälyn kyvykkyyksien viimeaikaisen kehityksen myötä.
Tekoälyhypetys vastaan todellisuus
Tekoälyteknologiassa nykyisessä muodossaan on pääasiassa kyse koneoppimisalgoritmien käyttämisestä mallien kouluttamiseen melko suurilla datamäärillä ja sitten koulutettujen mallien käyttämisestä ennusteiden tekemiseen tai jonkin halutun tuotoksen luomiseen. Lähes kaikki tekoäly sopii tähän, tosin liiankin yksinkertaistettuun kuvaukseen. Meidän kannaltamme tärkein kysymys kuitenkin kuuluu:
Pystyykö tekoäly todella auttamaan testitapausten automaattisessa luomisessa ja päivittämisessä? Löytämään virheitä? Parantamaan koodikattavuutta?
Vastaus tähän kysymykseen on tällä hetkellä kaikkea muuta kuin selvä, koska olemme tekoälyn hypesyklin huipulla. Erityinen osa-alue, syväoppiminen, on aiheuttanut paljon tästä innostuksesta.

Minusta tässä kaaviossa on kiinnostavinta tämä:
Jos Sirin pitäisi olla hypesyklin huipun jo ohittanut, olemme vielä kaukana Kansasista, Dorothy!
Tarkoitan, että tunnen monia ihmisiä, jotka joutuvat toistamaan sanomansa saadakseen Sirin ymmärtämään heitä (ei pahalla, Sirin fanit. Ihan oikeasti 😉).
Hypesykli kertoo, että tekoälyn potentiaali herättää paljon innostusta, joka laantuu ennen kuin kaikki siirtyvät perustekemisen ja tavanomaisen liiketoiminnan tilaan. Yksinkertaisesti sanottuna Gartnerin hieno kaavio kertoo tämän:

Vaikka olemme kuitenkin vielä kaukana singulariteetista, tekoälyllä sen nykyisessä muodossa on edelleen potentiaalia parantaa merkittävästi testiautomaatiota.
Miten koneoppiminen tuottaa automaattisia testejä?
- Koulutus: Koulutusvaiheessa koneoppimismalli on koulutettava tietyn organisaation aineistolla, johon kuuluvat koodikanta, sovelluksen käyttöliittymä, lokit, testitapaukset ja jopa määritysdokumentit. Riittävän suuren koulutusaineiston puuttuminen voi heikentää algoritmin tehokkuutta.
Joissakin työkaluissa on valmiiksi koulutettuja malleja, joita päivitetään jatkuvan oppimisen avulla tiettyjä sovelluksia, kuten käyttöliittymätestausta, varten, jotta yleistä oppimista voidaan hyödyntää tietyssä organisaatiossa. - Tuloste / tulosten luonti: Käyttötapauksesta riippuen malli luo testitapauksia, tarkistaa olemassa olevista testitapauksista koodikattavuuden, täydellisyyden ja tarkkuuden sekä suorittaa jopa testejä. Kaikissa tapauksissa testaajan on tarkistettava luotu tuloste sen validoimiseksi ja varmistettava, että sitä voidaan käyttää.
Jos käytämme vertauksena itseohjautuvia autoja, tulokset muistuttavat enemmän ajoavustinta kuin varsinaista kuljettajatonta autoa. - Jatkuva kehittäminen: Kun organisaatio käyttää työkalua säännöllisesti, koulutusaineisto kasvaa jatkuvasti, mikä voi puolestaan parantaa olemassa olevien koulutettujen verkkojen tarkkuutta ja tehokkuutta. Lyhyesti sanottuna tekoälyjärjestelmä oppii ja kehittyy jatkuvasti.
Koneoppimisalgoritmit mullistavat testiautomaation. Tutustu huippuluokan ohjelmistotestaustyökaluja käsittelevään oppaaseemme löytääksesi työkaluja, joissa näitä edistyneitä algoritmeja hyödynnetään.
Tekoälyn sovellukset testiautomaatiossa
Tarkastellaan lähemmin joitakin tekoälyn sovelluksia testiautomaatiossa, mukaan lukien yksikkötestaus, käyttöliittymätestaus, API-testaus ja automaattisen testipaketin ylläpito.
Have an account? Log In
Yksikkötestien luominen ja päivittäminen
Yksikkötestaus, jota käytetään usein osana DevOpsin DevOps-toimintamallin jatkuvaa testausta, jatkuvaa integrointia / jatkuvaa toimitusta (CI / CD), voi olla todella tuskallista… asteroidivyöhykkeessä.
Kehittäjät käyttävät yleensä huomattavan paljon aikaa yksikkötestien kirjoittamiseen ja ylläpitämiseen, mikä ei ole läheskään yhtä hauskaa kuin sovelluskoodin kirjoittaminen. Tässä tilanteessa tekoälypohjaiset tuotteet automaattiseen yksikkötestien luomiseen voivat olla hyödyllisiä, erityisesti organisaatioille, jotka suunnittelevat yksikkötestien käyttöönottoa myöhäisessä vaiheessa tuotteen elinkaarta.
Edut:
- Tekoälypohjaiset automaattiset yksikkötestit ovat merkittävä askel eteenpäin verrattuna staattista tai dynaamista analyysiä hyödyntävään mallipohjaiseen automaattisten yksikkötestien luomiseen. Näin tuotetut testit ovat varsinaista koodia eivätkä pelkkiä runkoja.
- Tekoälypohjaiset yksikkötestit voidaan luoda erittäin nopeasti, mikä on hyödyllistä suuren olemassa olevan koodikannan yhteydessä.
- Kehittäjien tarvitsee vain muokata testejä, ja he voivat ottaa yksikkötestien regressiotestipaketin käyttöön suhteellisen nopeasti.
Rajoitukset:
- Tekoälyn luomat yksikkötestit yksinkertaisesti jäljittelevät koodia, jonka pohjalta ne on rakennettu. Ne eivät vielä osaa päätellä koodin tarkoitettua toiminnallisuutta. Jos koodi ei toimi tarkoitetulla tavalla, kyseiselle koodille luotu yksikkötesti heijastaa tätä tarkoittamatonta toimintaa.
Tämä on merkittävä haittapuoli, koska yksikkötestien tarkoitus on nimenomaan pakottaa noudattamaan ja varmistaa implisiittinen tai eksplisiittinen sopimus. - Koneoppimisen avulla luodut yksikkötestit voivat rikkoa olemassa olevia toimivia yksikkötestejä, ja kehittäjän vastuulla on varmistaa, ettei näin tapahdu.
- Kehittäjien on kirjoitettava monimutkaista liiketoimintalogiikkaa koskevat testit itse.
Käyttöliittymän automaattinen testaus
Tämä on alue, jolla tekoäly alkaa loistaa. Tekoälypohjaisessa käyttöliittymätestauksessa testiautomaatiotyökalut jäsentävät DOM-rakenteen ja siihen liittyvän koodin selvittääkseen objektien ominaisuudet. Ne käyttävät myös kuvantunnistustekniikoita sovelluksessa navigointiin sekä käyttöliittymäobjektien ja -elementtien visuaaliseen tarkistamiseen käyttöliittymätestien luomiseksi.
Lisäksi tekoälytestijärjestelmät käyttävät tutkivaa testausta löytääkseen sovelluksen käyttöliittymästä virheitä tai variaatioita ja luodakseen kuvakaappauksia QA-insinöörin myöhempää tarkistusta varten. Samoin testattavan järjestelmän (SUT) visuaaliset ominaisuudet, kuten asettelu, koko ja väri, voidaan tarkistaa.
Hyödyt:
- Automatisoitu käyttöliittymätestaus voi parantaa koodikattavuutta.
- Pienet poikkeamat käyttöliittymässä eivät aiheuta testisarjan epäonnistumista. Tuotekohtaiset tekoälymallit pystyvät käsittelemään nämä.
Rajoitukset:
- Kaikissa nykyaikaisissa sovelluksissa alustojen, sovellusversioiden ja selainversioiden määrä on suuri. Ei ole selvää, kuinka hyvin tekoälyyn perustuva käyttöliittymän automatisointi toimii näissä olosuhteissa. Pilvipohjaiset testaustyökalut voivat kuitenkin suorittaa testejä rinnakkain, joten tätä aluetta on mielenkiintoista seurata!
Tekoälyn hyödyntäminen API-testauksen tukena
Ilman tekoälyäkin API-testauksen automatisointi on haastava tehtävä, koska se edellyttää API:n ymmärtämistä ja testien määrittämistä lukuisia skenaarioita varten kattavuuden syvyyden ja laajuuden varmistamiseksi.
Nykyiset API-testauksen automatisointityökalut, kuten Tricentis ja SoapUI, tallentavat API-toimintoja ja -liikennettä analysoidakseen niitä ja luodakseen testejä. Testien muokkaaminen ja päivittäminen edellyttää kuitenkin, että testaajat perehtyvät REST-kutsujen ja parametrien yksityiskohtiin ja päivittävät sitten API-testisarjan.
Tekoälyyn perustuvat API:n automatisoidun testauksen työkalut pyrkivät lieventämään tätä ongelmaa tarkastelemalla liikennettä sekä tunnistamalla API-kutsujen välisiä malleja ja yhteyksiä ja ryhmittelemällä ne tehokkaasti skenaarioiden mukaan. Työkalut käyttävät myös olemassa olevia testejä API:en välisten suhteiden oppimiseen, hyödyntävät niitä API:en muutosten ymmärtämiseen ja päivittävät olemassa olevia testejä tai luovat uusia skenaariopohjaisia testejä.
Hyödyt:
- Aloitteleville testaajille tai ohjelmointikokemusta vailla oleville tämä voisi olla todella hyödyllistä, sillä sen avulla he pääsevät nopeasti alkuun.
Jälleen kerran muutosten hallinta olisi huomattavasti helpompaa, koska tekoälyn automatisointityökalu pystyisi käsittelemään ainakin osan API-muutoksista.
Rajoitukset:
- API-testauksen määrittäminen on yleensä vaikeaa, eikä tällä alueella ole monia työkaluja, jotka tarjoavat koneoppimiseen perustuvia ominaisuuksia. Niillä työkaluilla, jotka niitä tarjoavat, ominaisuudet vaikuttavat melko alkeellisilta.
Automatisoitujen testien ylläpito
Tekoälyyn perustuvat työkalut voivat arvioida koodiin tehtyjä muutoksia ja korjata useita olemassa olevia testejä, jotka eivät vastaa näitä muutoksia, erityisesti jos koodimuutokset eivät ole liian monimutkaisia. Käyttöliittymäelementtien ja kenttien nimien päivitykset eivät enää välttämättä riko testisarjaa.
Jotkin tekoälytyökalut valvovat käynnissä olevia testejä ja kokeilevat epäonnistuneille testeille muokattuja vaihtoehtoja valitsemalla parhaiten sopivat käyttöliittymäelementit. Ne voivat myös tarkistaa testikattavuuden ja täydentää puutteita tarvittaessa.
More Articles
Tekoälyyn perustuva testidatan luonti
Testidatan luonti on toinen lupaava alue tekoälymalleille. Koneoppimisen avulla voidaan helposti luoda tietojoukkoja, kuten henkilöprofiilien valokuvia ja tietoja, kuten ikää ja painoa, käyttämällä koulutettuja koneoppimismalleja, jotka oppivat olemassa olevista tuotantodataseteistä.
Tällä tavoin luotu testidata muistuttaa hyvin paljon tuotantodataa, joten se sopii ihanteellisesti ohjelmistotestaukseen. Dataa tuottavaa koneoppimismallia kutsutaan generatiiviseksi vastakkainasetteluverkoksi (GAN).
Koneoppimista hyödyntävät testiautomaatiotyökalut
Tutustu alla oleviin työkaluihin, jos etsit ohjelmistoa, joka käyttää koneoppimista automatisoitujen testien suorittamiseen ja seurantaan. Monet niistä sisältävät avoimen lähdekoodin tai koodittomia vaihtoehtoja testausryhmäsi tarpeisiin.
Yhteenveto
Tekoäly on vaikuttanut merkittävästi testaustyökaluihin ja -menetelmiin, erityisesti testiautomaatioon. Nykyisistä tekoälyä lupaavasti hyödyntävistä työkaluista tehty katsaus osoittaa, että vaikka uusia ominaisuuksia lisätään paljon, useat näistä ominaisuuksista ovat vielä kypsymässä.
Jos pidit tätä artikkelia hyödyllisenä, tilaa The QA Lead -uutiskirje ja pysy ajan tasalla kaikista testauksen maailman uusimmista päivityksistä.



