Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables

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

Full description

Bibliographic Details
Main Author: Michelsson, Joakim
Other Authors: Informaatioteknologian tiedekunta, Faculty of Information Technology, Jyväskylän yliopisto, University of Jyväskylä
Format: Master's thesis
Language:fin
Published: 2025
Subjects:
Online Access: https://jyx.jyu.fi/handle/123456789/100766
_version_ 1833407613349396480
author Michelsson, Joakim
author2 Informaatioteknologian tiedekunta Faculty of Information Technology Jyväskylän yliopisto University of Jyväskylä
author_facet Michelsson, Joakim Informaatioteknologian tiedekunta Faculty of Information Technology Jyväskylän yliopisto University of Jyväskylä Michelsson, Joakim Informaatioteknologian tiedekunta Faculty of Information Technology Jyväskylän yliopisto University of Jyväskylä
author_sort Michelsson, Joakim
datasource_str_mv jyx
description 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ä.
first_indexed 2025-03-18T21:00:28Z
format Pro gradu
free_online_boolean 1
fullrecord [{"key": "dc.contributor.advisor", "value": "Mikkonen, Tommi", "language": null, "element": "contributor", "qualifier": "advisor", "schema": "dc"}, {"key": "dc.contributor.author", "value": "Michelsson, Joakim", "language": null, "element": "contributor", "qualifier": "author", "schema": "dc"}, {"key": "dc.date.accessioned", "value": "2025-03-18T12:06:31Z", "language": null, "element": "date", "qualifier": "accessioned", "schema": "dc"}, {"key": "dc.date.available", "value": "2025-03-18T12:06:31Z", "language": null, "element": "date", "qualifier": "available", "schema": "dc"}, {"key": "dc.date.issued", "value": "2025", "language": null, "element": "date", "qualifier": "issued", "schema": "dc"}, {"key": "dc.identifier.uri", "value": "https://jyx.jyu.fi/handle/123456789/100766", "language": null, "element": "identifier", "qualifier": "uri", "schema": "dc"}, {"key": "dc.description.abstract", "value": "Yksikk\u00f6testien kirjoittaminen manuaalisesti on aikaa viev\u00e4\u00e4 ja ty\u00f6l\u00e4st\u00e4. Lis\u00e4ksi perinteiset l\u00e4hestymistavat yksikk\u00f6testien generoimisisessa ovat puutteellisia, esimerkiksi niiden tuottamien testien luettavuuden takia. Teko\u00e4lyty\u00f6kalujen k\u00e4ytt\u00f6 on yleistynyt ohjelmistokehityksess\u00e4. Yksi ensimm\u00e4isist\u00e4 ja k\u00e4ytetyimmist\u00e4 kaupallisista teko\u00e4lyty\u00f6kaluista on GitHub Copilot, ja se pystyy mm. generoimaan koodia, testej\u00e4 ja dokumentaatiota ohjelmoijan puolesta.\n\nT\u00e4ss\u00e4 tutkielmassa arvioidaan, miten hyvin GitHub Copilot soveltuu yksikk\u00f6testien generointiin, kun kohteena on Python kirjasto nimelt\u00e4 Great Tables. T\u00e4m\u00e4n lis\u00e4ksi tarkastellaan GitHub Copilotin k\u00e4ytett\u00e4vyytt\u00e4 yksikk\u00f6testien generoinnissa. Tutkimusmenetelm\u00e4n\u00e4 toimii tapaustutkimus. Testej\u00e4 generoitiin porrastetusti kolmessa vaiheessa lis\u00e4\u00e4m\u00e4ll\u00e4 kohdennettua kontekstia ja kussakin vaiheessa korjattiin generointituloksia virheiden ilmentyess\u00e4 iteratiivisesti. Prosessista ker\u00e4ttiin aineistoa, jota analysoitiin kvantitatiivisesti ja kvalitatiivisesti.\n\nCopilot suoriutui kohtuullisen hyvin yksikk\u00f6testien generoinnissa, kunhan Copilotin k\u00e4yt\u00f6n parhaita k\u00e4yt\u00e4nt\u00f6j\u00e4 noudatettiin ja oleellista kontekstia annettiin riitt\u00e4v\u00e4sti. Kaikki yksikk\u00f6kohtaisesti generoidut testit olivat iteroinnin j\u00e4lkeen toimivia (CSR = 100%). Virheellisesti generoituja testej\u00e4 saatiin v\u00e4hennetty\u00e4 iteroinnilla 80%. Testit olivat rivi- ja haarautumakattavuukseltaan hyvi\u00e4 (COV_L = 90% ja COV_B = 88%). Oikeellisia testej\u00e4 oli 79,5% kaikista generoiduista testeist\u00e4. Suurimmat puutteet olivat testien yksinkertaisuudessa, testihajuissa tai generointien virheiss\u00e4. Yleisesti ottaen Copilotin k\u00e4ytt\u00f6 oli helppoa ja nopeaa, mutta Copilotin generointeihin liittyv\u00e4t ongelmat tuottivat testaajalle v\u00e4lill\u00e4 lis\u00e4ty\u00f6t\u00e4. Tulokset osoittavat ja osin vahvistavat, ett\u00e4 GitHub Copilot on potentiaalinen ty\u00f6kalu yksikk\u00f6testien generointiin, kunhan sit\u00e4 k\u00e4ytt\u00e4ess\u00e4 noudatetaan parhaita k\u00e4yt\u00e4nt\u00f6j\u00e4.", "language": "fi", "element": "description", "qualifier": "abstract", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Submitted by jyx lomake-julkaisija (jyx-julkaisija.group@korppi.jyu.fi) on 2025-03-18T12:06:31Z\nNo. of bitstreams: 0", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.description.provenance", "value": "Made available in DSpace on 2025-03-18T12:06:31Z (GMT). No. of bitstreams: 0", "language": "en", "element": "description", "qualifier": "provenance", "schema": "dc"}, {"key": "dc.format.extent", "value": "131", "language": null, "element": "format", "qualifier": "extent", "schema": "dc"}, {"key": "dc.format.mimetype", "value": "application/pdf", "language": null, "element": "format", "qualifier": "mimetype", "schema": "dc"}, {"key": "dc.language.iso", "value": "fin", "language": null, "element": "language", "qualifier": "iso", "schema": "dc"}, {"key": "dc.rights", "value": "CC BY 4.0", "language": null, "element": "rights", "qualifier": null, "schema": "dc"}, {"key": "dc.title", "value": "Yksikk\u00f6testien generoiminen GitHub Copilotin avustuksella \u2013 Tapaus Great Tables", "language": null, "element": "title", "qualifier": null, "schema": "dc"}, {"key": "dc.type", "value": "master thesis", "language": null, "element": "type", "qualifier": null, "schema": "dc"}, {"key": "dc.identifier.urn", "value": "URN:NBN:fi:jyu-202503182583", "language": null, "element": "identifier", "qualifier": "urn", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Informaatioteknologian tiedekunta", "language": "fi", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.faculty", "value": "Faculty of Information Technology", "language": "en", "element": "contributor", "qualifier": "faculty", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "Jyv\u00e4skyl\u00e4n yliopisto", "language": "fi", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.contributor.organization", "value": "University of Jyv\u00e4skyl\u00e4", "language": "en", "element": "contributor", "qualifier": "organization", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Ohjelmistokehityksen opintosuunta", "language": "fi", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "dc.subject.discipline", "value": "Specialisation in Software Development", "language": "en", "element": "subject", "qualifier": "discipline", "schema": "dc"}, {"key": "dc.type.coar", "value": "http://purl.org/coar/resource_type/c_bdcc", "language": null, "element": "type", "qualifier": "coar", "schema": "dc"}, {"key": "dc.rights.copyright", "value": "\u00a9 The Author(s)", "language": null, "element": "rights", "qualifier": "copyright", "schema": "dc"}, {"key": "dc.rights.accesslevel", "value": "openAccess", "language": null, "element": "rights", "qualifier": "accesslevel", "schema": "dc"}, {"key": "dc.type.publication", "value": "masterThesis", "language": null, "element": "type", "qualifier": "publication", "schema": "dc"}, {"key": "dc.format.content", "value": "fulltext", "language": null, "element": "format", "qualifier": "content", "schema": "dc"}, {"key": "dc.rights.url", "value": "https://creativecommons.org/licenses/by/4.0/", "language": null, "element": "rights", "qualifier": "url", "schema": "dc"}, {"key": "dc.description.accessibilityfeature", "value": "unknown accessibility", "language": "en", "element": "description", "qualifier": "accessibilityfeature", "schema": "dc"}, {"key": "dc.description.accessibilityfeature", "value": "ei tietoa saavutettavuudesta", "language": "fi", "element": "description", "qualifier": "accessibilityfeature", "schema": "dc"}]
id jyx.123456789_100766
language fin
last_indexed 2025-05-21T20:05:41Z
main_date 2025-01-01T00:00:00Z
main_date_str 2025
online_boolean 1
online_urls_str_mv {"url":"https:\/\/jyx.jyu.fi\/bitstreams\/664c0776-273e-47a9-92c4-f00b06ae7875\/download","text":"URN:NBN:fi:jyu-202503182583.pdf","source":"jyx","mediaType":"application\/pdf"}
publishDate 2025
record_format qdc
source_str_mv jyx
spellingShingle Michelsson, Joakim Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables Ohjelmistokehityksen opintosuunta Specialisation in Software Development
title Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
title_full Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
title_fullStr Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
title_full_unstemmed Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
title_short Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
title_sort yksikkötestien generoiminen github copilotin avustuksella tapaus great tables
title_txtP Yksikkötestien generoiminen GitHub Copilotin avustuksella – Tapaus Great Tables
topic Ohjelmistokehityksen opintosuunta Specialisation in Software Development
topic_facet Ohjelmistokehityksen opintosuunta Specialisation in Software Development
url https://jyx.jyu.fi/handle/123456789/100766 http://www.urn.fi/URN:NBN:fi:jyu-202503182583
work_keys_str_mv AT michelssonjoakim yksikkötestiengeneroiminengithubcopilotinavustuksellatapausgreattables