Summary: | Yksikkötestien kirjoittaminen manuaalisesti on aikaa vievää ja työlästä. Lisäksi perinteiset lähestymistavat yksikkötestien generoimisisessa ovat puutteellisia, esimerkiksi niiden tuottamien testien luettavuuden takia. Tekoälytyökalujen käyttö on yleistynyt ohjelmistokehityksessä. Yksi ensimmäisistä ja käytetyimmistä kaupallisista tekoälytyökaluista on GitHub Copilot, ja se pystyy mm. generoimaan koodia, testejä ja dokumentaatiota ohjelmoijan puolesta.
Tässä tutkielmassa arvioidaan, miten hyvin GitHub Copilot soveltuu yksikkötestien generointiin, kun kohteena on Python kirjasto nimeltä Great Tables. Tämän lisäksi tarkastellaan GitHub Copilotin käytettävyyttä yksikkötestien generoinnissa. Tutkimusmenetelmänä toimii tapaustutkimus. Testejä generoitiin porrastetusti kolmessa vaiheessa lisäämällä kohdennettua kontekstia ja kussakin vaiheessa korjattiin generointituloksia virheiden ilmentyessä iteratiivisesti. Prosessista kerättiin aineistoa, jota analysoitiin kvantitatiivisesti ja kvalitatiivisesti.
Copilot suoriutui kohtuullisen hyvin yksikkötestien generoinnissa, kunhan Copilotin käytön parhaita käytäntöjä noudatettiin ja oleellista kontekstia annettiin riittävästi. Kaikki yksikkökohtaisesti generoidut testit olivat iteroinnin jälkeen toimivia (CSR = 100%). Virheellisesti generoituja testejä saatiin vähennettyä iteroinnilla 80%. Testit olivat rivi- ja haarautumakattavuukseltaan hyviä (COV_L = 90% ja COV_B = 88%). Oikeellisia testejä oli 79,5% kaikista generoiduista testeistä. Suurimmat puutteet olivat testien yksinkertaisuudessa, testihajuissa tai generointien virheissä. Yleisesti ottaen Copilotin käyttö oli helppoa ja nopeaa, mutta Copilotin generointeihin liittyvät ongelmat tuottivat testaajalle välillä lisätyötä. Tulokset osoittavat ja osin vahvistavat, että GitHub Copilot on potentiaalinen työkalu yksikkötestien generointiin, kunhan sitä käyttäessä noudatetaan parhaita käytäntöjä.
|