Sivusto on suunniteltu XHTML & CSS-yhteensopiville selaimille. Suosittelemme selaimen päivittämistä uudempaan versioon.
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.
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ä.
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ä:
Soveltamissamme Agile-menetelmissä tärkeimpiin periaatteisiin kuuluu kehitysryhmän vastuu oman työnsä laadun jatkuvasta arvioinnista ja parantamisesta.
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).
Ohjelmistojen laatu varmistetaan kurinalaisilla työtavoilla ja monipuolisella testauksella. Näihin kuuluvat muun muassa