robot and man at home 2025 03 24 23 15 10 utc 1500

Voivatko LLM-mallit tuoda inhimillisyyttä testiautomaatioon?

27.03.2025

Johdanto

Ohjelmistotestauksen kehittyessä tekoälypohjaisten ratkaisujen hyödyntäminen on noussut yhä houkuttelevammaksi vaihtoehdoksi. Tähän asti tekoälyn käyttö testiautomaatiossa on kuitenkin ollut melko rajattua — lähinnä osaoptimointia, kuten itsestään korjautuvia testejä tai koodin ja testidatan generointia.

T&K-tiimimme käynnisti projektin tutkiakseen, kuinka suuria kielimalleja (LLM, Large Language Model) voidaan hyödyntää sovellustestauksen automatisoinnissa korkeammalla tasolla. Tässä blogikirjoituksessa esittelemme löydöksemme, kohtaamamme haasteet sekä mahdolliset vaikutukset tekoälyavusteisen testauksen tulevaisuudelle.

Miksi käyttää tekoälyä tai kielimalleja testaukseen?

Perinteiset testiautomaatiotyökalut ovat hyviä suorittamaan ennalta määriteltyjä skriptejä, mutta ne eivät kykene mukautumaan dynaamisesti, tekemään ehdotuksia tai käsittelemään jäsentämätöntä syötettä. Kielimallit sen sijaan tuovat mukanaan inhimillistä päättelykykyä, jolla voidaan:

  • Laatia suunnitelma testiskenaarion suorittamiseksi kontekstin ja vaatimusten perusteella.
  • Tehdä dynaamisia päätöksiä testitapauksen edetessä.
  • Tulkita jäsentämättömiä formaatteja, kuten kuvia ja ihmiselle tarkoitettua tekstiä.
  • Mukautua rajapintoihin dynaamisesti ja simuloida ihmismäistä vuorovaikutusta sovellusten kanssa.

LLM-mallit yksinkertaisesti hallitsevat monia samoja taitoja kuin ihmistestaajat — erityisesti tutkivassa testauksessa ja korkean tason testitapauksien generoinnissa.

Kehitys ja arkkitehtuuri

Aloitimme yksinkertaisilla kokeiluilla: syötimme verkkosivun lähdekoodia LLM-mallille ja annoimme sen päättää seuraavan klikkauksen tai syötteen annetun testiskenaarion pohjalta. Tässä lähestymistavassa oli kuitenkin rajoitteita, sillä malli ei kyennyt ymmärtämään monimutkaisia käyttöliittymiä riittävän tarkasti, ja hallusinaatioiden vuoksi se harhautui usein pois alkuperäisestä testitarkoituksesta.

Parantaaksemme mallin kykyjä perehdyimme monimuotoisten LLM-mallien teoriaan ja otimme käyttöön niin sanotun Planner–Observer-mallin. Tämän avulla pystyimme:

  • Pilkkomaan testitehtävät pienempiin osiin.
  • Käyttämään suunnittelumoduulia, joka päättää seuraavat toimenpiteet.
  • Hyödyntämään havainnointimoduulia, joka tulkitsee web-sovelluksen palautteen.

Keskeiset komponentit:

  • Web-vuorovaikutuskerros: Käyttää työkaluja kuten Selenium ja ChromeDriver web-sovelluksiin liittymiseen.
  • LLM-käsittely: Hyödyntää OpenAI:n GPT-4o-mallia testitapausten generointiin ja vastausten tulkintaan.
  • Liiketoimintalogiikka: Yhdistää eri LLM-toimijat ja ohjaa niitä sopivilla kehotteilla tuottamaan hyödyllisiä tuloksia.

Haasteet ja löydökset

Hallusinaatiot:

  • LLM-mallit voivat tuottaa itsevarmoja mutta vääriä vastauksia, mikä on ongelmallista deterministisessä testiautomaatiossa.
  • Käytännössä tätä voidaan lieventää ottamalla ihminen mukaan validoimaan lopputulos tai suorittamalla testausprosessi useita kertoja parhaan testitapauksen löytämiksi.

Suorituskyvyn rajoitteet:

  • Reaaliaikainen web-selaus LLM:n avulla on tällä hetkellä vielä hidasta, ja se vaatii optimointeja ollakseen tehokasta.
  • Demossa olemme parantaneet suorituskykyä esiprosessoinnilla. Huomaa myös, että video näytetään nopeutettuna.

CAPTCHA:t ja rajoitteet:

  • Jotkut web-sovellukset estävät automaattista käyttöä (esim. CAPTCHA haasteet estävät etenemisen). Tarvittaessa nämä ominaisuudet voidaan poistaa käytöstä testauksen ajaksi.
  • Nykyisissä sovelluksissa on myös paljon elementtejä, jotka reagoivat hiirellä tehtäviin hover- ja raahaustoimintoihin tai kosketustapahtumiin. Tekoäly vaatii sopivia integraatioita ja havainnointikykyä päästäkseen niihin käsiksi.

Käytännön sovellukset

Yksi lupaava lähestymistapa on käyttää LLM-malleja perinteisten testiautomaatiotapausten generointiin uudelleenkäyttöä varten sen sijaan, että testit ajettaisiin aina ”älykkäässä tilassa”. Esimerkiksi:

Testitapausten generointi:

  • LLM tallentaa testiaskeleet (esim. klikatut elementit, syötteet) ja muuntaa ne uudelleenkäytettäviksi testiskripteiksi.
  • Näitä skriptejä voidaan sitten suorittaa itsenäisesti, mikä vähentää riippuvuutta LLM:stä rutiinitestien aikana.

Regressiotestauksen tuki:

  • Kun testiskripti epäonnistuu käyttöliittymämuutosten takia, LLM voi auttaa korjaamaan tai uudelleengeneroimaan koodin.

Tulevaisuus?

Vaikka tämä lähestymistapa on vielä kokeellinen, sen potentiaali on valtava. Jatkotutkimusta varten listallamme on:

  • Paikallisten LLM-mallien tutkiminen: API-pohjaisista malleista riippuvuuden vähentäminen kustannusten ja tietosuojan parantamiseksi.
  • Nopeuden ja deterministisen toiminnan parantaminen: Vastausten johdonmukaisuuden ja vasteaikojen kehittäminen.
  • Laajentuminen web-sovellusten ulkopuolelle: Ensimmäiset kokeilut viittaavat siihen, että ratkaisu voisi toimia myös esimerkiksi Windows-sovelluksissa.

Yhteenveto

Yllätyimme miten moninaisista haasteista kehittämämme LLM-pohjainen web-sovellusten testirobotti selvisi saadessaan käyttöönsä riittävät työkalut. Vaikka haasteita on edelleen, hybridimallit, jotka yhdistävät LLM-avusteisen älykkyyden perinteisiin automaatiotyökaluihin, voivat mullistaa ohjelmistotestauksen käytäntöjä.

Odotamme innolla näiden ideoiden jatkokehittämistä ja toivotamme tervetulleiksi yhteistyöehdotukset tekoäly- ja testausyhteisöiltä. Pysy kuulolla — jatkamme matkaamme kohti tekoälyavusteista testiautomaatiota!