Testivetoinen Java-kehitys
Haltiapuu, Inka (2016)
Haltiapuu, Inka
Haaga-Helia ammattikorkeakoulu
2016
Creative Commons Attribution-NonCommercial-NoDerivs 1.0 Suomi
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2016112918144
https://urn.fi/URN:NBN:fi:amk-2016112918144
Tiivistelmä
Opinnäytetyön tavoitteena oli tietokantaa käyttävän web-sovelluksen kehitys käyttäen testivetoista kehitysmenetelmää. Työssä selvitettiin, miten testivetoista sovelluskehitystä ja yksikkötestausta tehdään, millaisia etuja ja haittoja testivetoisesta sovelluskehityksestä on ammattikirjallisuudessa ja tutkimuksissa havaittu koituvan, ja mitä etuja ja haittoja opinnäytetön tekijä itse havaitsi testivetoisesta kehitysmallista olevan sovelluskehitystyössä.
Opinnäytetyön tuotoksena syntyi demo web-selaimen kautta käytettävästä varaussovelluksesta, joka soveltuu itsepalvelukirpputorin myyntipaikkavarausten tekoon. Tuotoksen tarkoituksena oli demonstroida pienen web-pohjaisen sovelluksen toteuttamista testivetoisesti Java-teknologioilla ja SQL-tietokannalla.
Työn teoriaosuudessa tarkasteltiin testivetoisesta sovelluskehityksestä kertovaa ammattikirjallisuutta ja aiheesta tehtyjä tutkimuksia. Havaittiin, että vaikka ammattikirjallisuudessa ja kehitysmallin mukaista sovelluskehitystyötä ammatikseen tekevien keskuudessa mallia pidetään kannattavana ja hyödyllisenä, tutkimukset eivät osoittaneet yksiselitteisesti ja ristiriidattomasti, että testivetoinen sovelluskehitys parantaisi ohjelmakoodin laatua, yksikkötestien laatua tai tuottavuutta. Tutkimuksiin tutustuessa kävi selkeästi ilmi, että tutkimuksia oli vaikeaa järjestää siten, että tuloksia olisi voitu vertailla objektiivisesti, ja toisaalta riittävän kattavaa, koko projektin elinkaaren huomioivaa tutkimusta aiheesta ei ole juuri tehty. Selvää oli, että aiheesta tulisi tehdä enemmän tutkimusta, jotta kehitysmallin hyödyistä ja haitoista voitaisiin vetää selkeitä ja ristiriidattomia johtopäätöksiä.
Opinnäytetyön tekijän oma kehitystyö testivetoisella sovelluskehitysmenetelmällä osoitti, että menetelmän noudattamisen avulla päästiin hyviin yksikkötestien kattavuuslukuihin. Testien kattavuus oli yli 90%, ja rivimäärällisesti yksikkötestaukseen liittyviä koodirivejä oli hieman enemmän kuin itse ohjelmakoodia. Kattavat testit helpottivat ohjelmavirheiden paikallistamista ja vähensivät näin virheenkorjaukseen käytettyä aikaa sekä mahdollistivat ohjelmakoodin huolettomamman refaktoroinnin ja laajentamisen, koska testien avulla voitiin nopeasti varmistaa, etteivät muutokset ohjelmakoodiin aiheuttaneet virheitä aiemmin implementoituihin toimintoihin. Aiheesta julkaistujen tutkimusten ja oman sovelluskehitystyön perusteella ei kuitenkaan voitu tulla lopputulokseen, että testivetoinen sovelluskehitys itsessään välttämättä johtaisi laadukkaampaan ohjelmakoodiin ja parempaan tuottavuuteen. Sen sijaan vaikutti siltä, että testivetoinen sovelluskehitysmalli voisi edesauttaa kattavampien yksikkötestien kirjoittamista, mikä puolestaan voi johtaa laadukkaampaan, helpommin laajennettavaan ja ylläpidettävään ohjelmakoodiin sekä korkeampaan tuottavuuteen koko projektin elinkaarta tarkasteltaessa.
Opinnäytetyön tuotoksena syntyi demo web-selaimen kautta käytettävästä varaussovelluksesta, joka soveltuu itsepalvelukirpputorin myyntipaikkavarausten tekoon. Tuotoksen tarkoituksena oli demonstroida pienen web-pohjaisen sovelluksen toteuttamista testivetoisesti Java-teknologioilla ja SQL-tietokannalla.
Työn teoriaosuudessa tarkasteltiin testivetoisesta sovelluskehityksestä kertovaa ammattikirjallisuutta ja aiheesta tehtyjä tutkimuksia. Havaittiin, että vaikka ammattikirjallisuudessa ja kehitysmallin mukaista sovelluskehitystyötä ammatikseen tekevien keskuudessa mallia pidetään kannattavana ja hyödyllisenä, tutkimukset eivät osoittaneet yksiselitteisesti ja ristiriidattomasti, että testivetoinen sovelluskehitys parantaisi ohjelmakoodin laatua, yksikkötestien laatua tai tuottavuutta. Tutkimuksiin tutustuessa kävi selkeästi ilmi, että tutkimuksia oli vaikeaa järjestää siten, että tuloksia olisi voitu vertailla objektiivisesti, ja toisaalta riittävän kattavaa, koko projektin elinkaaren huomioivaa tutkimusta aiheesta ei ole juuri tehty. Selvää oli, että aiheesta tulisi tehdä enemmän tutkimusta, jotta kehitysmallin hyödyistä ja haitoista voitaisiin vetää selkeitä ja ristiriidattomia johtopäätöksiä.
Opinnäytetyön tekijän oma kehitystyö testivetoisella sovelluskehitysmenetelmällä osoitti, että menetelmän noudattamisen avulla päästiin hyviin yksikkötestien kattavuuslukuihin. Testien kattavuus oli yli 90%, ja rivimäärällisesti yksikkötestaukseen liittyviä koodirivejä oli hieman enemmän kuin itse ohjelmakoodia. Kattavat testit helpottivat ohjelmavirheiden paikallistamista ja vähensivät näin virheenkorjaukseen käytettyä aikaa sekä mahdollistivat ohjelmakoodin huolettomamman refaktoroinnin ja laajentamisen, koska testien avulla voitiin nopeasti varmistaa, etteivät muutokset ohjelmakoodiin aiheuttaneet virheitä aiemmin implementoituihin toimintoihin. Aiheesta julkaistujen tutkimusten ja oman sovelluskehitystyön perusteella ei kuitenkaan voitu tulla lopputulokseen, että testivetoinen sovelluskehitys itsessään välttämättä johtaisi laadukkaampaan ohjelmakoodiin ja parempaan tuottavuuteen. Sen sijaan vaikutti siltä, että testivetoinen sovelluskehitysmalli voisi edesauttaa kattavampien yksikkötestien kirjoittamista, mikä puolestaan voi johtaa laadukkaampaan, helpommin laajennettavaan ja ylläpidettävään ohjelmakoodiin sekä korkeampaan tuottavuuteen koko projektin elinkaarta tarkasteltaessa.