Korvaako tekoäly ohjelmistotestaajat?

By Esko Hannula

Tekoäly muuttaa ohjelmistotestausta, mutta se ei tee testaajista tarpeettomia (vaikka se saattaakin parantaa heidän kykyjään). Miten tekoäly voi automatisoida toistuvia tehtäviä, priorisoida testejä ja auttaa testaajia tehostamaan testausprosesseja?

Tekevätkö tekoäly ja ohjelmistotestaajat toisensa tarpeettomiksi? Todennäköisesti eivät. Tekoäly tekee todennäköisemmin ohjelmistokehittäjät tarpeettomiksi. Ei kuitenkaan ole epäilystäkään siitä, että tekoäly merkitsee suurta muutosta ohjelmistotestaukseen. Tässä kirjoituksessa käsitellään joitakin muutoksia, joita tulemme todennäköisesti näkemään melko pian.

Kauan sitten testiautomaatio korvasi testaajat robottien tekemässä työssä eli jonkun muun suunnittelemien testien suorittamisessa. Testaajat eivät kadonneet. Heidän aikansa vapautui yhä useampien ja parempien testien suunnitteluun ja tietenkin niiden automatisointiin. Myöhemmin ketterien menetelmien ja DevOpsin piti tehdä testaaja tarpeettomaksi, koska kehittäjät testaisivat koodinsa sitä rakentaessaan. Kävi ilmi, että useimmat kehittäjät kirjoittivat mieluummin koodia kuin testasivat sitä. Opimme myös, että koko liiketoimintaprosessi on testattava sovellusten rajojen yli. Ohjelmistotestaajat laajensivat työnsä laajuutta tutkivaan testaukseen ja päästä päähän -testaukseen.

Miten tekoäly muuttaa ohjelmistotestausta

Tekoäly muuttaa testaajan roolia toimimalla tehokkaana apuna tehtävissä, joissa testaajat eivät ole kovin hyviä. Tekoäly muovaa todennäköisesti koko testausprosessia sen sijaan, että se vain parantaisi yksittäisiä tehtäviä.

Testaajan työlle on ominaista, että samoja asioita tehdään useita kertoja vähäisin muutoksin ja paljon odottaen. Testaajat odottavat:

  • uutta testattavaa julkaisua.
  • automaattisten testiajojen valmistumista.
  • korjausta virheeseen, joka estää testaamisen jatkamisen.
  • ja niin edelleen...

Testaajat suorittavat myös tehtäviä, jotka vaativat paljon tarkkaavaisuutta yksityiskohtiin ja eivät välttämättä ole kovin motivoivia, kuten automaattisten testiajojen tulosten analysointia, sovellukseen tehtyjen muutosten vuoksi epäonnistuneiden automaattisten testien ylläpitoa tai testauksen tilan laskemista ja raportointia. Joka minuutti, jonka he käyttävät näihin tärkeisiin tehtäviin, joku muu odottaa testituloksia.

Ihmistestaaja pelaamassa shakkia tekoälyä käyttävän robottitestaajan kanssa
Tämä kuva luotiin yksinkertaisella kehotteella tekoälytyökalua käyttäen

Testauksen työstä suurin osa on testien suorittamista. Se on suurelta osin automatisoitua, mutta kuluttaa edelleen myös ihmisten työpanosta; ja tämä ihmisten työpanos hidastaa koko testauskierrosta. Tarvitsemme edelleen ihmisiä automatisoimaan robotin suoritettavat testit, ylläpitämään testejä sovelluksen muuttuessa ja analysoimaan testituloksia. Saatavilla on jo tekoälyä hyödyntäviä testaustyökaluja, jotka voivat valita ja järjestää testit sen perusteella, kuinka todennäköisesti ne havaitsevat virheitä, korjata rikkoutuneet testit automaattisesti tai esitäyttää virheraportteja. 

Tekoälyn välitön vaikutus laadunvarmistukseen

Seuraavassa automaattisten testien luomisen aallossa näemme työkaluja, jotka luovat testejä suoraan käyttötapauksen kuvauksesta tai jopa vielä suoremmin tarkkailemalla ihmistestaajaa, joka tutkii sovellusta. Tämä on suuri askel automaattisesta testauksesta kohti autonomista testausta. Emme ehkä ole vielä aivan siinä vaiheessa. Useimmat sovellukset ja liiketoimintaprosessit ovat omistusoikeudellisia, ja tekoälyn kouluttamiseen tarvittava data on hajallaan eri ohjelmistotestaustyökaluissa. Siksi näemme todennäköisesti ensin ihmisen valvomaa testausta täysin autonomisen testauksen sijaan.

Useimmilla ohjelmistotiimeillä on liian vähän testejä eikä liian paljon. Tekoälyn käytön myötä testivarannon koko todennäköisesti kasvaa. Vaikka automaattisten testien suorittaminen on käytännössä ilmaista, testitulosten saamisen nopeudella on edelleen merkitystä. Siksi regressioajot olisi hyödyllistä järjestää niin, että virheitä todennäköisimmin havaitsevat testit suoritetaan ensin. Jos tekoäly ymmärtää elinkaaridatan riittävän hyvin, se voi tarkastella koodimuutoksia ja aiempia testituloksia, määrittää testien suoritusjärjestyksen ja siten nopeuttaa palautekierrosta.

Jos tekoäly pystyy valitsemaan testit sen perusteella, kuinka todennäköisesti ne havaitsevat virheitä, sen pitäisi pystyä myös ennustamaan, mistä virheet todennäköisesti löytyvät. Ihmistestaaja voi hyötyä tästä tiedosta keskittymällä manuaaliseen tutkivaan testaukseen kyseisissä ominaisuuksissa.

Monille ihmisille tekoäly on synonyymi ChatGPT:n osoittamille luonnollisen kielen tuottamisominaisuuksille. Näillä ominaisuuksilla on paikkansa myös testauksessa. Jos tekoäly osaa luoda testitapauksen, se osaa myös kuvata testin suorittamisen virheraportissa. On todennäköistä, että tekoälyn luomaa virheraporttia on helpompi ymmärtää kuin ihmisen hätäisesti kirjoittamaa raporttia tämän kiirehtiessä tarkistamaan seuraavaa testitapausta.

Virheraporttien lisäksi testaus tuottaa paljon määrällistä tietoa ohjelmiston laadusta ja jopa ohjelmiston luovasta prosessista. Ongelma on se, että testausta lähellä olevat ja dataa ymmärtävät ihmiset eivät halua selittää sitä niille, joiden pitäisi ymmärtää, eivätkä niiden, joiden pitäisi ymmärtää, välttämättä halua kuunnella. Tekoäly voi tehdä suuren palveluksen molemmille osapuolille ja heidän johtajilleen muuttamalla testitilastot sanallisiksi oivalluksiksi, johtopäätöksiksi ja suosituksiksi. 

Korvaako tekoäly laadunvarmistajat?

On houkuttelevaa pohtia, kumman tekoäly korvaisi helpommin: testaajan vai kehittäjän. Testin luominen on helpompaa kuin koodin luominen. Toisaalta merkityksellisten testien luominen vaatii enemmän mielikuvitusta. Loppujen lopuksi koodaus muuntaa vaatimuksen koodiksi, joka saa sovelluksen toimimaan, kun taas testauksen pitäisi muuntaa vaatimus yhdeksi tai useammaksi testiksi, joiden pitäisi saada sovellus rikkoutumaan. 

Suuressa mittakaavassa testien suunnittelu on kuitenkin yksinkertaisempaa kuin koodaus. Laajan tietojärjestelmän rakentaminen on paljon haastavampaa kuin yksittäisen toiminnon koodin kirjoittaminen. Laajan tietojärjestelmän testien suunnittelu ei ole juurikaan vaikeampaa kuin yksittäisen ominaisuuden testien suunnittelu. Se on vain työläämpää. Testin valmistelu voi kuitenkin olla paljon haastavampaa. 

Esimerkiksi mobiilisovelluksessa tilauksen luovan testin määrittäminen ja varmistaminen, kun tilaus käsitellään Salesforcessa ja välitetään sitten SAP:iin toimitusta varten, on erittäin monimutkainen tehtävä – vaikka itse testiskenaario on varsin suoraviivainen. Tarvitsemme sekä tekoälyn avustamia ihmisiä että ihmisten avustamaa tekoälyä.

Nämä pienetkin esimerkit osoittavat, että asiat tulevat olemaan jo lähitulevaisuudessa hyvin erilaisia. Tekoäly parantaa ohjelmistojen rakentamisen nopeutta ja tuottavuutta, mutta se ei vielä pysty rakentamaan ohjelmistoa ja varmistamaan sen laatua itsenäisesti.

Jos olisin nykyään kokopäiväinen ohjelmistotestaaja, en olisi huolissani siitä, että tekoäly vie työni. Olisin huolissani siitä, miten voin testata tekoälyä.

Jos haluat lisätietoja tekoälystä ja ohjelmistotestauksesta, tilaa CTO Clubin uutiskirje, niin pysyt ajan tasalla uusimmista trendeistä.

Esko Hannula
Esko Hannula is VP Product Line Management at Copado, a DevOps and testing solution for low code SaaS platforms that run the world’s largest digital transformations. Backed by Insight Partners, Salesforce Ventures and SoftBank Vision Fund, Copado accelerates multi-cloud, enterprise deployments by automating the end-to-end software delivery process to maximize customers’ return on their cloud investment.
Follow the author:

You may also like