Sivusto on suunniteltu XHTML & CSS-yhteensopiville selaimille. Suosittelemme selaimen päivittämistä uudempaan versioon.

Suoraan sisältöön.
Tulosta sivu

Laadunvarmistus ja testaus

16.11.2006

Laatua rakennetaan tuotteeseen koko ohjelmistokehitysprojektin ajan.

Lasse Koskela, menetelmäkonsultti

Täysin virheettömien ohjelmistojen tuottamista on perinteisesti pidetty lähes mahdottomana tehtävänä. Nykyaikaisia laadunvarmistuksen menetelmiä käyttämällä virheettömyys on aiempaa realistisempi tavoite.

Testivetoinen kehittäminen (Test-Driven Development), kattava testiautomaatio yhdistettynä jatkuvaan integrointiin ja katselmointiin sekä suorituskyvyn seuraaminen läpi projektin auttavat tuottamaan järjestelmiä, jotka toimivat oikein ja ovat helpommin muunneltavissa.

Testauksen automatisointi säästää aikaa

Laadunvarmistuksen kulmakivi on testaus jokaisessa järjestelmäkehityksen työvaiheessa. Yksikkötestauksen kautta muodostuvat testijoukot eivät ainoastaan todenna hienojakoisesti sovellusosien oikeellisuutta, vaan muodostavat myös suojan regressiovirheitä vastaan, mikä on korvaamatonta ylläpidettävyyden ja muuntautuvuuden kannalta. Korkeamman tason integrointi- ja hyväksymistestaus rakentavat vastaavan turvaverkon koko järjestelmän läpi.

Jotta laajan testijoukon suorittaminen jatkuvasti koko projektin ajan on mahdollista, täytyy testitapaukset automatisoida mahdollisimman pitkälle. Automatisoitujen testien ansiosta testaajat voivat keskittyä siihen, missä ihmiset ovat koneita parempia eli käyttämään älyään. Järkevä testausstrategia käyttää testaajien aikaa ja ammattitaitoa niihin osa-alueisiin, joissa niistä saadaan eniten hyötyä.

Jatkuva integrointi ja katselmointi varmistavat laadun

Laajoissa kehityshankkeissa ohjelmiston kääntämis- ja koostamisprosessien on toimittava luotettavasti, jotta jokainen ohjelmistoon tehty lisäys tai muutos voidaan välittömästi testata koko järjestelmään integroituna.

Sovellusosien integrointiin liittyvät ongelmat ovat perinteisesti olleet merkittävä rasite ohjelmistokehitysprojekteissa. Usein niiden määrä ja vaikeusaste lisääntyvät projektin edetessä. Integroimalla jatkuvasti (Continuous Integration), jopa useita kertoja tunnissa, integraatiot pysyvät pieninä ja sitä myöten helposti hallittavina.

Yksittäinen muutos vaikuttaa hyvälaatuisessa järjestelmässä usein suhteellisen rajattuun osaan. Koska täysi testiajo saattaa kestää useita minuutteja, on yleinen käytäntö ajaa ainoastaan rajattu osajoukko kaikista automatisoiduista testeistä integraation yhteydessä. Täyden testiajon suorittamisesta huolehtii ns. integraatiopalvelin sillä aikaa kun kehittäjä siirtyy eteenpäin. Työvälineisiimme tällä alueella kuuluvat muun muassa Hudson, Continuum ja Bamboo.

Ohjelmistoille asetetaan yleensä myös ei-toiminnallisia vaatimuksia esimerkiksi ylläpidettävyyden, koodin laadun tai järjestelmän hallittavuuden suhteen. Nämä vaatimukset edellyttävät tuotosten jatkuvaa katselmointia koko projektin ajan.

Laatukatselmoinnissa sovelletaan muun muassa seuraavia käytäntöjä ja työvälineitä:

  • koodikatselmointi: pariohjelmointi, versionhallinnan automaattiset muutosraportit
  • ohjelmakoodin yhteisomistajuus
  • automatisoidut raportit, esimerkiksi testikattavuus ja koodin staattiset analyysit
  • yhdenmukaisen koodin tuottamiseen tähtäävät ohjelmointikonventiot

Soveltamissamme Agile-menetelmissä tärkeimpiin periaatteisiin kuuluu kehitysryhmän vastuu oman työnsä laadun jatkuvasta arvioinnista ja parantamisesta.

Ei-toiminnallisen laadun varmistaminen

Puhuttaessa tietojärjestelmistä ei laatu tarkoita pelkkää toiminnallisuuden virheettömyyttä vaan myös ei-toiminnallisia ominaisuuksia kuten esimerkiksi järjestelmän suorituskykyä. Kuten toiminnallistenkin testien kohdalla, tulee näitä ominaisuuksia mitata ja seurata alusta alkaen. Työvälineitä tähän ovat järjestelmän profilointi ja kuormitustestaus sekä avainkomponenttien että itse arkkitehtuurin osalta. Näin varmistetaan, että mahdolliset ongelmat nähdään jo hyvissä ajoin, kun niiden korjaaminen on vielä helppoa ja kustannustehokasta.

Käyttämällä järkeviä käytäntöjä sekä järjestelmäkehityksessä että laadunvarmistuksessa ja testauksessa, otetaan kunnon harppaus työn tuottavuudessa ja tuotettujen ratkaisujen soveltuvuudessa asiakkaan tarpeeseen. Laatu on nopean kehityksen edellytys. Siksi me Reaktorilla kiinnitämme erityisen paljon huomiota laadunvarmistusmenetelmien tehokkaaseen käyttöön.

Lasse Koskela, menetelmäkonsultti

 

Lasse on Reaktorin menetelmäasiantuntija. Hän kiertää kouluttamassa ja valmentamassa asiakasorganisaatioita ketterien menetelmien ja insinöörikäytäntöjen osalta niin kotimaassa kuin muualla Euroopassa. Hän on myös kirjoittanut kirjan testivetoisesta kehityksestä (Koskela Lasse: Test Driven, Manning Publications, 2007).

Laadunvarmistus

Ohjelmistojen laatu varmistetaan kurinalaisilla työtavoilla ja monipuolisella testauksella. Näihin kuuluvat muun muassa

  • testivetoinen kehittäminen ja automatisoitu yksikkötestaus
  • automatisoitu integrointi- ja hyväksymistestaus
  • tutkiva, manuaalinen testaus (exploratory testing)
  • suorituskyky- ja kuormitustestaus