Enhancing unit testing to improve maintainability of the software
Sinisalo, Susanna (2017)
Sinisalo, Susanna
2017
Tietotekniikka
Tieto- ja sähkötekniikan tiedekunta - Faculty of Computing and Electrical Engineering
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2017-12-07
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tty-201711162159
https://urn.fi/URN:NBN:fi:tty-201711162159
Tiivistelmä
Many companies are using software that have been developed many years ago. These legacy programs are important to their users and often their development is still ongoing. New features are developed and old ones adapted to suit the current needs of the users. Legacy programs often have quality problems, which makes it increasingly difficult to maintain them. But because of their size, numerous features, and business rules that are documented only in the code, it is difficult to replace them. Therefore, it is imperative to improve their quality safely without introducing defects to the current features. Quality can be enhanced by unit testing and refactoring, but in legacy projects writing unit tests and refactoring is usually error prone and difficult due to the characteristics of legacy software. Taking quality into account when developing new and legacy software is important to ensure the software can be developed further and used in the future. High quality code is maintainable even when it has been developed a long time.
First in this thesis, legacy software problems in quality, refactoring and unit testing were researched. Then, solutions to avoid the problems and increase the quality of software and especially legacy software mainly by safe refactoring and unit testing were searched from literature and research publications. Quality control and metrics were also included in the thesis to supplement the quality enhancement process.
In this thesis, it was found that safe refactoring, unit test quality, code and test quality control, and developer training need to be considered to improve software quality. Refactoring should be done in small steps while writing tests to ensure the current functionality does not change. Unit test quality, especially, test isolation, readability, and test focus need to be considered while writing tests. The quality of the tests need to be monitored to maintain a proper quality level. It is also important to support the developers for them to improve and maintain their unit testing and refactoring skills. Monessa yrityksessä on käytössä ohjelmistoja, joiden kehitys on aloitettu useita vuosia sitten. Nämä legacy-ohjelmistot ovat käyttäjilleen tärkeitä ja usein niiden kehitys jatkuu koko ajan. Uusia ominaisuuksia lisätään ja vanhoja muokataan täyttämään käyttäjien tarpeita. Legacy-ohjelmistot sisältävät usein laatuongelmia, jonka takia niiden ylläpitäminen ja kehittäminen vaikeutuu koko ajan. Niitä ei voida kuitenkaan helposti korvata kokonsa, lukuisten ominaisuuksiensa ja vain koodiin dokumentoidun tietonsa takia. Tämän takia niiden laatua pitäisi saada parannettua turvallisesti ilman, että virheitä ilmestyy toimiviin ominaisuuksiin. Yksikkötestauksen ja refaktoroinnilla voidaan parantaa ohjelmiston laatua, mutta niiden käyttönottaminen ja käyttäminen legacy-ohjelmistossa voi olla riskialtista ja vaikeaa legacy-ohjelmiston ominaisuuksien takia. Laadun huomioonottaminen uuden ja legacy-ohjelmistoa kehittäessä on tärkeää, jotta ohjelmistoa pystytään kehittämään edelleen ja käyttämään myös tulevaisuudessa. Korkealaatuinen koodi on melko ylläpidettävää myös, kun sitä on kehitetty pidemmän aikaa.
Aluksi tässä työssä selvitettiin, mitä ongelmia kuuluu legacy-ohjelmiston yksikkötestaukseen ja refaktorointiin. Sen jälkeen etsittiin ratkaisuja, kuinka välttää näitä ongelmia ja kuinka parantaa ohjelmien erityisesti legacy-ohjelmistojen laatua turvallisella refaktoroinnilla ja yksikkötestauksella. Tapoja etsittiin kirjallisuudesta ja tutkimusjulkaisuista. Laadun valvonta ja metriikat otettiin täydentämään laadun parannusprosessia
Työn aikana saatiin selville, että ohjelmiston laadun parantamisessa pitää ensisijaisesti huomioda testien laatu, turvalliset refaktorointitavat, koodin ja testien laadunvalvonta ja kehittäjien osaamisen kehittäminen. Refaktorointi tulee tehdä pienissä askeleissa kurinalaisesti ja testien avustamana. Yksikkötestien laadussa tulee erityisesti ottaa huomioon eristyneisyys, luettavuus ja kohdennus. Koodin ja testien laatua tulee valvoa, että se pysyy yllä. Kehittäjiä täytyy myös tukea, jotta heidän yksikkötestaus- ja refaktorointitaitonsa kasvaisivat ja pysyisivät yllä.
First in this thesis, legacy software problems in quality, refactoring and unit testing were researched. Then, solutions to avoid the problems and increase the quality of software and especially legacy software mainly by safe refactoring and unit testing were searched from literature and research publications. Quality control and metrics were also included in the thesis to supplement the quality enhancement process.
In this thesis, it was found that safe refactoring, unit test quality, code and test quality control, and developer training need to be considered to improve software quality. Refactoring should be done in small steps while writing tests to ensure the current functionality does not change. Unit test quality, especially, test isolation, readability, and test focus need to be considered while writing tests. The quality of the tests need to be monitored to maintain a proper quality level. It is also important to support the developers for them to improve and maintain their unit testing and refactoring skills.
Aluksi tässä työssä selvitettiin, mitä ongelmia kuuluu legacy-ohjelmiston yksikkötestaukseen ja refaktorointiin. Sen jälkeen etsittiin ratkaisuja, kuinka välttää näitä ongelmia ja kuinka parantaa ohjelmien erityisesti legacy-ohjelmistojen laatua turvallisella refaktoroinnilla ja yksikkötestauksella. Tapoja etsittiin kirjallisuudesta ja tutkimusjulkaisuista. Laadun valvonta ja metriikat otettiin täydentämään laadun parannusprosessia
Työn aikana saatiin selville, että ohjelmiston laadun parantamisessa pitää ensisijaisesti huomioda testien laatu, turvalliset refaktorointitavat, koodin ja testien laadunvalvonta ja kehittäjien osaamisen kehittäminen. Refaktorointi tulee tehdä pienissä askeleissa kurinalaisesti ja testien avustamana. Yksikkötestien laadussa tulee erityisesti ottaa huomioon eristyneisyys, luettavuus ja kohdennus. Koodin ja testien laatua tulee valvoa, että se pysyy yllä. Kehittäjiä täytyy myös tukea, jotta heidän yksikkötestaus- ja refaktorointitaitonsa kasvaisivat ja pysyisivät yllä.