Using Automated Unit Testing to Improve Software Quality

No Thumbnail Available
Journal Title
Journal ISSN
Volume Title
Helsinki University of Technology | Diplomityö
Checking the digitized thesis and permission for publishing
Instructions for the author
Date
2004
Major/Subject
Ohjelmistotekniikka
Mcode
T-106
Degree programme
Language
en
Pages
7+71
Series
Abstract
Most of the work today in software industry is maintenance work. Maintenance work is mostly fixing defects that customers have reported. Every year organizations spend billions of dollars to fix their own defects that could have been fixed a lot cheaper before customers got their hands on the products. Most organizations know this, but the knowledge regarding efficiency and effectiveness of different software quality improvement techniques is limited, despite the fact that a lot of research is done in defect detection. By releasing poor quality software, organizations do not only have to fix the defects, but the future of the organizations is in jeopardy. Poor quality software affects the reputation of the organizations and the motivation of employees, but the largest problem with poor quality software is that it costs a lot of money to release and maintain. Testing is the most common and known software quality improvement technique and almost all organizations test their software before releasing them. However, most of the testing is done just before releasing the product and not enough resources are allocated for testing. Defects found with traditional testing might postpone the release, which is unacceptable in many organizations. Therefore software products are often released despite the fact that there are defects in them. Software quality cannot be added to the software by testing it, instead software must be developed in a way that guarantees that the software has high quality in every phase. Unit testing can be used to assure high quality from the first line of code onwards. Most of the testing done on existing software is done to make sure that all the existing functionality is still working. This is called regression testing. In this thesis it is presented how automated unit testing can be used to improve software quality, combine the benefits of both traditional unit testing and regression testing, and make developers' lives easier.

Suurin osa ohjelmistokehityksestä on jo julkaistujen tuotteiden ylläpitoa. Suurin osa ylläpidosta on asiakkaiden raportoiminen ohjelmistovirheiden korjaamista. Joka vuosi organisaatiot käyttävät miljardeja dollareita korjatakseen tekemiään virheitä, jotka olisi voitu korjata huomattavasti halvemmalla, ennen kuin asiakkaat olisivat päässet käsiksi tuotteisiin. Organisaatiot tietävät tämän asian, mutta he eivät tiedä tarpeeksi erilaisista ohjelmistojen laadunparantamistekniikoista ja niiden tehokkuuksista, vaikka huomattava määrä tutkimustyötä on tehty virheiden havaitsemisessa. Julkaisemalla heikkolaatuisia ohjelmistoja, organisaatiot eivät ainoastaan joudu korjaamaan tuotteissaan olevia virheitä vaan heidän koko organisaationsa tulevaisuus on vaakalaudalla; Huonolaatuiset tuotteet vaikuttavat organisaation maineeseen ja työntekijöiden motivaatioon, mutta lopulta huonolaatuiset tuotteet maksavat paljon enemmän kuin laadukkaat tuotteet. Testaus on yleisin ja tunnetuin laadunparantamistekniikka ja lähes kaikki organisaatiot testaavat tuotteitaan ennen niiden julkaisua, mutta testaus painottuu yleensä projektin loppuvaiheeseen, eikä siihen panosteta tarpeeksi. Perinteisellä testauksella löydettyjen virheiden korjaaminen saattaa viivyttää tuotteen julkaisua, mikä useassa organisaatiossa ei ole hyväksyttävää. Tuotteet julkaistaan vaikka niissä olisikin virheitä. Ohjelmistojen laatua ei voi jälkikäteen testaamalla parantaa vaan ohjelmistoja pitää kehittää menetelmillä, jotka takaavat ohjelmiston laadun jokaisessa vaiheessa. Yksikkötestauksella voidaan varmistaa ohjelmiston laatu jo ensimmäisestä koodirivistä lähtien. Suurin ohjelmistoihin kohdistuvasta testauksesta on jo olemassa olevan toiminnallisuuden testaamista eli regressiotestaamista. Tässä diplomityössä esitetään kuinka automatisoitu yksikkötestaus voi parantaa ohjelmistojen laatua, yhdistää perinteisen yksikkötestauksen ja regressiotestauksen tuomat hyödyt sekä helpottaa kehittäjien elämää.
Description
Supervisor
Soisalon-Soininen, Eljas
Thesis advisor
Rinne, Timo
Keywords
unit testing, yksikkötestaus, regression testing, regressiotestaus, automated unit testing, automatisoitu yksikkötestaus, software quality, ohjelmistojen laatu,
Other note
Citation