Automaatio on tehokas keino ohjelmistokehityksen tehostamiseen: ongelmiin on mahdollista tarttua nopeammin, palaute tuotteen laadusta ja toimivuudesta saadaan ripeästi ja julkaisuväli tihenee.

On hyvä kuitenkin muistaa, että automatisoida voi monella eri tapaa. Niinpä aivan ensimmäiseksi on elintärkeää kartoittaa ohjelmistoja kehittävän yrityksen tilanne, tavoitteet ja tarpeet. Kaikkien organisaatioiden lähtökohdat ovat erilaiset, ja niinpä liiketoiminnan haasteiden taklaamiseen ei ole patenttiratkaisua.

Päämäärä ei ole automatisoida vain automatisoinnin ilosta vaan tuoda konkreettista hyötyä asiakkaan bisnekseen. Joskus vastaus pulmaan voi kummuta joltain aivan toiselta osaamisalueeltamme.

Usein liiketoiminnan haasteiden analysointi kuitenkin osoittaa, että ohjelmistokehityksen prosessien automatisointi voisi tuoda merkittäviä liiketoiminnallisia hyötyjä. Niinpä tässä on kuvattu esimerkinomaisesti pelivälineitä, joista ohjelmistoautomaatioprojekti yrityksesi tarpeiden mukaan koostetaan.

Continuous Integration (CI)

Moni tuotekehityksen ohjelmistoautomaatioprojekti pyrkii auttamaan organisaatiota omaksumaan jatkuvan integroinnin (continuous integration, CI) työtavan. Tässä työtavassa tuotetta kehitetään pienissä osissa ja kokonaisuus pidetään jatkuvasti toimivassa kunnossa. Tavoitteita ovat mm. ennustettavuus, nopea palaute kehittäjille ja vaikeiden virheiden löytö aikaisemmin kehitysvuossa.

Jatkuvan integraation onnistuminen helpottuu usein ratkaisevasti kun infrastruktuuri on kunnossa, automaattiset testit antavat nopeaa palautetta ja kehittäjät voivat keskittyä luomaan uutta toiminnallisuutta tuotteeseen.

Infrastruktuurin pystyttämiseen ja ylläpitoon on viime aikoina tullut paljon uusia mahdollisuuksia. Pilvipalvelut tarjoavat joustavaa konekapasiteettiä, joita on kätevä hallita moderneilla työkaluilla kuten Ansiblella. Infrastruktuurin voi koneiden sijaan perustaa myös kevyempiin kontitustekniikoihin, kuten Dockeriin.

Kääntäminen ja yksikkötestit

Ensimmäiseksi vuossa tuote käännetään. Yleensä tällöin ajetaan myös yksikkötestit niiden nopean luonteen vuoksi. Yksikkötestit antavat nopeaa palautetta koodista matalalla tasolla ja testaavat yksittäisiä funktiota tai metodeja koodista. Ne ovat eristettyjä, eivätkä tarvitse ympärilleen integraatioita.

Integraatiotestit

Integraatiotestauksen aikana koodista testaataan integraatiota muihin koodikomponentteihin sekä komponenttien välisiä rajapintoja.

Savutestit

Savutestien perimmäinen tarkoitus on testata, toimiiko tuote ylipäätään – vai pullahtavatko sieltä savut ulos?

Automatisoidut savutestit vaativat, että tuote on koodattu ja integraatiot ovat toiminnassa. Savutesteillä tuotteen perustoiminnallisuudet testataan kriittisten virheiden varalta. Softaa tutkitaan ulkoisten rajapintojen avustuksella – perusedellytysten ja sisäisten integraatioiden pitää olla kunnossa, jotta ohjelmistokehitystä voidaan jatkaa.

Regressiotestit

Regressiotestauksessa voidaan siirtyä syvemmälle tuotteen toiminnallisuuteen ja yksityiskohtaisiin testikeisseihin.

Regressiotestit ovat toiminnallisia testejä, eli ajatuksena on testata ohjelmiston toimintaa erityisesti liiketoiminnan näkökulmasta. Kyse ei siis ole vain yksittäisten asioiden testaamisesta, vaan tuotteen kaikkia osa-alueita testataan laaja-alaisesti. Ohjelmistoa voidaan myös yrittää rikkoa.

Kun uusi feature otetaan kehitykseen, tehdään sille heti alkuun testikeissit – jopa jo ennen kuin lähdetään kehittämään itse ominaisuutta. Kaikki automatisoidut keissit muuttuvat regressiotesteiksi, kun ne onnistuvat ensimmäisen kerran, ja kone toistaa testit aina samalla tavalla ottamatta kantaa tuloksiin.

Manuaalitestit

Suurin osa ohjelmistoista suunnitellaan ihmisiä, ei koneita, varten. Tästä syystä jonkun lajimme edustajan on hyvä varmistaa, että kaikki toimii järkevästi – eli tehdään kvalitatiivista testausta esimerkiksi käytettävyyden ja yleisen laadun näkökulmasta.

Tässä vaiheessa tehdään kaikki ajattelua, luovuutta tai tunnetta vaativat asiat: näyttääkö saitti hyvältä, ovatko vasteajat kunnossa ja niin edelleen. Automaatio vähentää huomattavasti manuaalisten testien tarvetta: kun automatisoidut testit ovat jo todentaneet tuotteen toimivuuden, sujuu manuaalinen vaihe yleensä sutjakkaammin.

Käyttöönotot

Käyttöönotot ovat myös eräs ohjelmistoautomaation olennaisista osista. Järjestelmän pitäisi viedä koodia erilaisiin ympäristöihin, kunhan laatukriteerit täyttyvät. Ympäristöjä voivat olla testausympäristöt, kuten staging- ja tuotantoympäristö.

Muita ohjelmistoautomaatioon liittyviä vaiheita voiva olla esimerkiksi koodianalyysit, tietoturvatestaus ja suorituskykytestaus.

Mitä ikinä automatisoidaankaan, jatkuva analyysi takaa menestyksen

Jokaisen prosessin aikana on elintärkeää arvioida sen onnistumista jatkuvasti: tehdäänkö oikeita asioita, onko oikeat ongelmat saatu ratkaistua ja mikä voisi olla seuraava ratkottava haaste.
Mieti siis jatkuvasti, mitä olet tekemässä ja miksi – vaikka testaus sujuisikin automaattisesti, ei vastuuhenkilö itse voi koskaan pyöriä autopilotilla. Tehtävämme ei olekaan pelkästään ratkaista automaatio-ongelmia, vaan tarkastella asiakkaan liiketoimintaan liittyviä haasteita kokonaisvaltaisesti ja löytää niihin tehokkaita ratkaisuja.

 

Voit lukea lisää palveluistamme täältä. Vastailemme toki myös mielellämme kysymyksiin.