Tekoäly testiautomaatiossa: näin se toimii

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Miten tekoäly ja koneoppiminen vaikuttavat testiautomaatioon ja tehostavat sitä? Tutustu tekoälyhypen ja todellisuuden eroihin tässä artikkelissa!

Tekoälyn (AI) käyttö testiautomaatiossa on laadunvarmistuksen uusin trendi. Testaus yleensä ja erityisesti testiautomaatio vaikuttavat saaneen ”kaikki on parempaa tekoälyn kanssa” -taudin.

Koska tekoäly, koneoppiminen ja neuroverkot ovat tällä hetkellä kuuminta teknologiaa, oli ehkä väistämätöntä, että tekoäly löytäisi tiensä testiautomaatioon jollain tavalla.

Testiautomaation taustaa

Muistan ajan useita vuosia sitten, kun testiautomaatio oli vielä uutta ja yksi laadunvarmistustiimeistäni 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 vimmatusti julkaisuun asti – yksi ketterän ohjelmistokehityksen erikoisista sivuvaikutuksista, joista otsikoissa ei kerrota!

Lopulta yksi laadunvarmistuksen vetäjistä, joka oli kyllästynyt toimettomuuteen kiireettömien kahden ensimmäisen viikon aikana, alkoi työstää testiautomaation viitekehystä. Hän kirjoitti Rubylla testiskriptejä ja käytti Seleniumia / Appiumia sekä Jenkinsiä alkeelliseen putkeen. Mukana oli myös tyylikkäitä raportteja, joissa testien epäonnistumiset ja onnistumiset ilmaistiin punaisella, keltaisella ja vihreällä.

Hän onnistui tässä muutaman julkaisusyklin ajan. Silloin esittelimme ratkaisun laadunvarmistuksesta vastaavalle johtajallemme, joka esitteli sen asiakkaillemme ja sai heidät innostumaan siinä määrin, että he maksoivat testiautomaatiosta aliprojektina. Olimme pilvissä, aivan kehityksen kärjessä!

Kehityksen kärjessä oleminen sai kuitenkin uuden merkityksen muutamassa kuukaudessa, kun havaitsimme tämän perustavanlaatuisen totuuden testiautomaatiosta, jonka jokainen pätevä testiautomaatioinsinööri joutuu nykyään kohtaamaan:

Automaattisia testejä ei noin vain luoda!

Miksi sanon näin? Koska melko pian tunsimme olevamme kuin Alice Mordor-maassa juoksemassa hullun lailla Punaisen kuningattaren kanssa:

”On juostava minkä pystyy, jotta pysyy paikallaan.” – Lewis Carroll, Liisa ihmemaassa. (Lähde)

Olimme juuri havainneet testiautomaation ansan karun 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 sananmukaisesti kuin kaninkoloon pudonneet. Uuden julkaisun alku oli erityisen hankala, koska ohjelmistokehitystiimi teki valtavasti uusia lisäyksiä.

Testiautomaatio ei ole sen jälkeen 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 on nykyisessä muodossaan pääasiassa kyse koneoppimisalgoritmien käyttämisestä mallien kouluttamiseen melko suurilla datamäärillä ja sen jälkeen koulutettujen mallien käyttämisestä ennusteiden tekemiseen tai jonkin halutun tuotoksen tuottamiseen. Lähes kaikki tekoäly sopii tähän, myönnettäköön, yksinkertaistettuun kuvaukseen. Meidän kannaltamme tärkein kysymys on kuitenkin:

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 hype-syklin huipulla. Yksi erityinen osa-alue, syväoppiminen, on aiheuttanut suuren osan tästä innostuksesta.

Gartnerin tekoälyn hype-sykli vuonna 2019. (Lähde)

Minusta tässä kaaviossa on kiinnostavinta tämä:

Jos Sirin pitäisi olla hype-käyrän huipun jo ohittanut, olemme vielä kaukana Kansasista, Dorothy!

Tarkoitan, että tunnen monia ihmisiä, jotka joutuvat toistamaan sanomisensa, jotta Siri ymmärtäisi heitä (ei pahalla, Sirin fanit. Ihan oikeasti 😉).

Hype-käyrä kertoo, että tekoälyn potentiaalista ollaan hyvin innostuneita, mutta innostus laantuu ennen kuin kaikki siirtyvät arkipäiväiseen, liiketoiminnan normaaliin toimintatilaan. Yksinkertaisesti ilmaistuna Gartnerin hieno kuvaaja tarkoittaa tätä:

Tekoäly: odotukset vs. todellisuus - kuvakaappaus
Tekoäly: odotukset vs. todellisuus.

Vaikka olemme vielä kaukana singulariteetista, tekoälyllä on nykyisessä muodossaan edelleen potentiaalia parantaa merkittävästi testiautomaatiota.

Miten koneoppiminen tuottaa automatisoituja testejä?

  1. Koulutus: Koulutusvaiheessa koneoppimismalli on koulutettava organisaation tietyn tietoaineiston avulla. Tähän aineistoon kuuluvat koodikanta, sovelluksen käyttöliittymä, lokit, testitapaukset ja jopa määrittelyasiakirjat. Riittävän suuren koulutusaineiston puuttuminen voi heikentää algoritmin tehokkuutta.

    Joissakin työkaluissa on esikoulutettuja malleja, joita päivitetään jatkuvan oppimisen avulla tiettyjä sovelluksia, kuten käyttöliittymätestausta, varten, jotta yleistettyä oppimista voidaan hyödyntää tietyssä organisaatiossa.

  2. Tuotoksen / tuloksen luominen: Käyttötapauksesta riippuen malli luo testitapauksia, tarkistaa olemassa olevien testitapausten koodikattavuuden, täydellisyyden ja tarkkuuden sekä suorittaa jopa testejä. Kaikissa tapauksissa testaajan on tarkistettava luotu tuotos sen validoimiseksi ja käyttökelpoisuuden varmistamiseksi.

    Jos käytämme vertauksena itseohjautuvia autoja, tulokset muistuttavat enemmän ajoavustinta kuin varsinaista kuljettajatonta autoa.

  3. Jatkuva kehittäminen: Kun organisaatio käyttää työkalua säännöllisesti, koulutusdata lisääntyy jatkuvasti, mikä voi parantaa olemassa olevien koulutettujen verkkojen tarkkuutta ja tehokkuutta. Lyhyesti sanottuna tekoälyjärjestelmä oppii ja kehittyy jatkuvasti.

Koneoppimisalgoritmit mullistavat testiautomaation. Jos haluat löytää näitä kehittyneitä algoritmeja hyödyntäviä työkaluja, tutustu huippuluokan ohjelmistotestaustyökalujen oppaaseemme

Tekoälyn sovellukset testiautomaatiossa

Tarkastellaan lähemmin joitakin tekoälyn sovelluksia testiautomaatiossa, kuten yksikkötestausta, käyttöliittymätestausta, API-testausta ja automaattisen testikokonaisuuden ylläpitoa.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Yksikkötestien luominen ja päivittäminen

Yksikkötestaus, jota käytetään usein osana jatkuvaa testausta sekä jatkuvaa integrointia / jatkuvaa toimitusta (CI / CD) DevOpsissa, voi olla todellinen riesa… asteroidivyöhykkeellä.

Tyypillisesti kehittäjät käyttävät huomattavan paljon aikaa yksikkötestien kirjoittamiseen ja ylläpitämiseen, mikä ei ole läheskään yhtä hauskaa kuin sovelluskoodin kirjoittaminen. Tässä tapauksessa tekoälypohjaiset tuotteet automatisoituun yksikkötestien luomiseen voivat olla hyödyllisiä, etenkin organisaatioille, jotka suunnittelevat yksikkötestien käyttöönottoa myöhäisessä vaiheessa tuotteen elinkaarta.

Hyödyt: 

  • Tekoälypohjaiset automatisoidut yksikkötestit ovat merkittävä edistysaskel verrattuna mallipohjaiseen automatisoitujen yksikkötestien luomiseen, jossa käytetään staattista tai dynaamista analyysiä. Näin luodut 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 tapauksessa.
  • Kehittäjien tarvitsee vain muokata testejä, ja he voivat määrittää yksikkötestien regressiotestikokonaisuuden suhteellisen nopeasti.

Rajoitukset: 

  • Tekoälyn luomat yksikkötestit yksinkertaisesti jäljittelevät koodia, jonka perusteella ne on rakennettu. Ne eivät toistaiseksi pysty arvaamaan koodin tarkoitettua toiminnallisuutta. Jos koodi ei toimi tarkoitetulla tavalla, kyseistä koodia varten luotu yksikkötesti heijastaa tätä tahatonta toimintaa.

    Tämä on merkittävä haittapuoli, koska yksikkötestien koko tarkoitus on pakottaa noudattamaan implisiittistä tai eksplisiittistä sopimusta ja varmistaa sen toteutuminen.
  • 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.

Automatisoitu käyttöliittymätestaus 

Tämä on alue, jolla tekoäly alkaa loistaa. Tekoälypohjaisessa käyttöliittymien 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älytestausjärjestelmät käyttävät tutkivaa testausta löytääkseen sovelluksen käyttöliittymästä virheitä tai muunnelmia ja luovat kuvakaappauksia, jotka QA-insinööri voi myöhemmin tarkistaa. Samoin testattavan järjestelmän (SUT) visuaaliset ominaisuudet, kuten asettelu, koko ja väri, voidaan tarkistaa.

Edut:

  • Automaattinen käyttöliittymätestaus voi parantaa koodikattavuutta.
  • Käyttöliittymän pienet poikkeamat eivät aiheuta testisarjan epäonnistumista. Tuotekohtaiset tekoälymallit pystyvät käsittelemään nämä.

Rajoitukset:

  • Missä tahansa nykyaikaisessa sovelluksessa alustojen, sovellusversioiden ja selainversioiden määrä on suuri. Ei ole selvää, kuinka hyvin tekoälypohjainen käyttöliittymäautomaatio 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 vaativa tehtävä, koska se edellyttää API:n ymmärtämistä ja testien määrittämistä monenlaisia skenaarioita varten kattavuuden varmistamiseksi sekä laajuuden että syvyyden osalta.

Nykyiset API-testiautomaatiotyökalut, kuten Tricentis ja SoapUI, tallentavat API-toimintoja ja -liikennettä analysoidakseen niitä ja luodakseen testejä. Testien muokkaaminen ja päivittäminen edellyttää kuitenkin testaajilta REST-kutsujen ja parametrien yksityiskohtaista tarkastelua sekä API-testisarjan päivittämistä.

Tekoälypohjaiset API:n automaatiotestaustyökalut pyrkivät lieventämään tätä ongelmaa tutkimalla liikennettä ja tunnistamalla API-kutsujen välisiä malleja ja yhteyksiä sekä ryhmittelemällä ne tehokkaasti skenaarioittain. Työkalut hyödyntävät myös olemassa olevia testejä oppiakseen APIen välisistä suhteista, käyttävät näitä tietoja APIen muutosten ymmärtämiseen ja päivittävät olemassa olevia testejä tai luovat uusia skenaariopohjaisia testejä. 

Edut:

  • Aloitteleville testaajille tai ohjelmointikokemusta vailla oleville tämä voi olla erittäin hyödyllistä, sillä sen avulla he pääsevät nopeasti alkuun.

    Jälleen kerran muutosten hallinta olisi huomattavasti helpompaa, koska ainakin osan API-muutoksista voisi käsitellä tekoälyyn perustuva automaatiotyökalu.

Rajoitukset:

  • API-testauksen määrittäminen on yleensä vaikeaa, eivätkä monet työkalut tarjoa koneoppimiseen perustuvia ominaisuuksia tällä alueella. Niillä työkaluilla, jotka niitä tarjoavat, ominaisuudet vaikuttavat melko alkeellisilta.

Automaatiotestien ylläpito

Tekoälypohjaiset työkalut voivat arvioida koodiin tehtyjä muutoksia ja korjata useita olemassa olevia testejä, jotka eivät ole linjassa näiden muutosten kanssa, etenkin jos koodimuutokset eivät ole liian monimutkaisia. Käyttöliittymäelementtien ja kenttien nimien päivitysten kaltaisten muutosten ei enää tarvitse rikkoa testisarjaa.

Jotkin tekoälytyökalut valvovat käynnissä olevia testejä ja kokeilevat epäonnistuneille testeille muokattuja muunnelmia valitsemalla käyttöliittymäelementtejä parhaiten sopivan vaihtoehdon perusteella. Ne voivat myös tarkistaa testikattavuuden ja täydentää puutteita tarvittaessa. 

More Articles

Tekoälypohjainen testidatan luonti

Testidatan luonti on toinen lupaava alue tekoälymalleille. Koneoppiminen voi helposti luoda tietojoukkoja, kuten henkilöprofiilien valokuvia ja tietoja, esimerkiksi iästä ja painosta, hyödyntämällä koulutettuja koneoppimismalleja, jotka oppivat olemassa olevista tuotantotietojoukoista. 

Tällä tavoin luotu testidata muistuttaa suuresti tuotantodataa, joten se soveltuu ihanteellisesti ohjelmistotestaukseen. Dataa tuottavaa koneoppimismallia kutsutaan nimellä generatiivinen adversariaalinen verkko (GAN).

Koneoppimista hyödyntävät testiautomaatiotyökalut

Tutustu alla oleviin työkaluihin, jos etsit ohjelmistoa, joka hyödyntää koneoppimista automaattisten 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. Nykyisten tekoälyä hyödyntäviksi lupaavien työkalujen tarkastelu osoittaa, että vaikka uusia ominaisuuksia lisätään paljon, useat niistä 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ä.

Harold Fernandes
Harold Fernandes is a multipotentialite and has worked on the product side and engineering side of multiple startups. He has led software, testing, and UX teams for over 20 years. He is also an international award-winning author and speaker, a certified mindfulness coach, a musician, and a bibliophile. He is at his happiest doing something new!

You may also like