Modern software development favours agile methods, which emphasise rapid delivery and iterative value creation. However, this velocity often leads to technical debt and quality concerns. Test-Driven Development (TDD) is proposed as a solution, yet research on its impact remains inconclusive. Given the ongoing debate and the growing focus on quality in agile methods, further investigation into effective TDD practices and their real-world implications is essential. This thesis explores how TDD practices can enhance software quality and the development process. This thesis combines a literature review and an empirical study using design science research. The literature review established a foundation for the empirical study, which was conducted within a crane IoT data team.
The findings of this thesis suggest that certain TDD practices can improve soft ware quality through functionality and maintainability. These practices include defining clear and testable requirements and tasks, by motivating and describing desired behaviour and specifying acceptance criteria, and writing unit tests before implementation. Improvements in maintainability were observed through increased code coverage, enhanced documentation, and positive developer perceptions regarding the maintainability of the software. Improvements in functionality were observed through positive developer perceptions and experiences, as well as earlier bug detection. The short-term development velocity was impaired, however, the impact on long-term development velocity remains unclear. These practices can be adopted without major obstacles if teams receive proper training, coaching, and management support, and potential domain-specific limitations are considered. Measuring the impact of TDD practices was done with both qualitative and quantitative metrics, because using quantitative metrics alone wouldn’t capture the subjective experiences and perceived improvements of the TDD practices.
To conclude, TDD practices can enhance both internal quality through maintainability and external quality through functionality. They also support the development process by producing higher-quality backlog items to work on and facilitating better communication among stakeholders. Finally, TDD practices may initially decrease development velocity, however, their long-term impact remains unclear.Moderni ohjelmistokehitys suosii ketteriä menetelmiä, jotka painottavat nopeutta ja iteratiivista arvontuottoa. Nopeuden korostaminen johtaa usein teknisen velan kerryttämiseen ja laadun heikkenemiseen. Testivetoinen kehitys (TDD) on koettu mahdolliseksi ratkaisuksi tälle, mutta tutkimukset sen vaikutuksista eivät ole yksimielisiä. Huomioiden laadun kasvavan merkityksen teollisuudessa, TDD käytäntöjen ja niiden vaikutusten tutkiminen on tärkeää. Tämä diplomityö tutkii, kuinka TDD-käytännöt voivat parantaa ohjelmiston laatua ja kehitysprosessia. Työssä yhdistyy kirjallisuuskatsaus ja empiirinen tutkimus, joka toteutettiin suunnittelutiedettä hyödyntäen. Kirjallisuuskatsaus muodosti pohjan empiiriselle tutkimukselle, joka toteutettiin nosturien IoT-datatiimissä.
Työn tulokset osoittavat, että tietyt TDD-käytännöt voivat parantaa ohjelmiston laatua ylläpidettävyyden ja toiminnallisuuden osalta. Näihin käytäntöihin kuuluvat selkeiden ja testattavien vaatimusten ja tehtävien määrittely motivoimalla ja kuvaamalla haluttu käytös sekä määrittämällä hyväksymiskriteerit, ja yksikkötestien tekeminen ennen toteutusta. Ylläpidettävyyden parantuminen ilmeni laajempana testikattavuutena, dokumentaationa ja kehittäjien positiivisina havaintoina. Toiminnallisuuden parantuminen ilmeni aikaisempana virheiden havaitsemisena ja kehittäjien myönteisinä havaintoina. Käytännöt hidastivat kehitysnopeutta lyhyellä aikavälillä, mutta vaikutus jäi epäselväksi pitkällä aikavälillä. Käytännöt on mahdollista ottaa käyttöön ilman suurempia ongelmia, jos tiimeille tarjotaan riittävä koulutus, valmennus ja johdon tuki, sekä ottaen huomioon mahdolliset toimialakohtaiset rajoitteet. TDD-käytäntöjen vaikutuksia mitattiin sekä laadullisilla että määrällisillä mittareilla, sillä pelkät määrälliset mittarit eivät riittäneet kuvaamaan ihmisten subjektiivisia kokemuksia ja havaintoja Yhteenvetona TDD-käytännöt voivat parantaa sisäistä laatua ylläpidettävyyden ja ulkoista laatua toiminnallisuuden osalta. Ne tukevat myös kehitysprosessia tuottamalla laadukkaampia backlog-itemeitä ja parantamalla sidosryhmien välistä kommunikaatiota. Lyhyellä aikavälillä TDD-käytännöt saattavat heikentää kehitysnopeutta, mutta sen pitkän aikavälin vaikutukset kaipaavat lisätutkimusta.