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.

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ä.



