Mitä hyötyä on ohjelmistokehitys-prosessien automatisoinnista? 

Kehitettävän ohjelmiston suorituskykyä, koodin laatua ja integroinnin toimivuutta mitataan ennen julkaisua testausvaiheessa, joka onkin oleellinen osa laadukkaiden ohjelmistojen toimittamista. 

Kun kehitettävä järjestelmä tai sen osa on valmis ja vaikuttaa toimivan, toimivuus täytyy ensin testata käytännössä, jotta julkaisun jälkeen ei tule vastaan ikäviä yllätyksiä. Ennen tällaiset yllätykset ovat olleet arkipäivää, ja kehitysprosessin virheitä on jouduttu korjaamaan vasta jälkikäteen käytännön testauksen myötä. Ja tämä on luonnollisesti vienyt runsaasti ylimääräistä aikaa ja työtä.

Testaus- ja julkaisuprosesseja voidaan tämän päivän ohjelmistokehityksessä myös automatisoida. Automatisoinnissa valmis ohjelmisto asennetaan ensin testipalvelimelle, ja toimivuuden testauksen jälkeen esimerkiksi kehitetty mobiilisovellus tai sitä päivittävä osa voidaan julkaista tuotantoon. Automatisointi nopeuttaa ja helpottaa testausta ja tunnistaa samalla koodissa olevat virheet jo etukäteen. Näin voidaan varmistua, ettei koodiin ole jäänyt sinne kuulumattomia osia tai vaikkapa vääriä asetuksia ennen julkaisua. 

Miten kehitysprosessin automatisointi toimii käytännössä?

Kehitysprosessin automatisointi toimii siten, että kun kirjoitettava koodi on valmis, se yhdistetään johonkin järjestelmän pääkehityshaaraan eli osaksi laajempaa kokonaisuutta. Yhdistämishetkellä automatiikkaan ohjelmoitu liipaisin käynnistää serverillä automaattisen testauksen, eli koodin toimivuus testataan välittömästi sen valmistuessa. 

Automatisointiprosessi on siis käytännössä testausvaiheaskelia sisältävä putki, jonka päässä häämöttää ohjelmiston siirtyminen kehitysvaiheesta tuotantoon. Kun kaikki testattavan järjestelmän osat on todettu toimiviksi testipalvelimella, putkessa voi olla toinen liipaisin repositoryn eli suomeksi pakettivaraston päähaaraan. Uuden liipaisimen kautta sama prosessi tapahtuu uudestaan – tosin sillä erotuksella, että nyt valmis ohjelmisto asennetaan tuotantoon. Ainoa tapa julkaista sovellus on siis sen kulku tämän automaattisesti suorittuvan testauspolun läpi, ja jokaisen askeleen täytyy osua kohdilleen ennen lopullista julkaisua.

  • Järjestelmää voidaan testata testipalvelimella ennen sen päästämistä tuotantoon
  • Ohjelmoidun ominaisuuden testaaminen tapahtuu automattisesti liipaisimella, kun koodi liitetään pääkehityshaaraan
  • Automatisoidussa kehitysprosessissa koodin täytyy läpäistä automaatiolla toimiva testausputki ennen julkaisuun päätymistä

Mitä hyötyä automatisoinnista on?

Automaattisen testausprosessin kattavuuden ansiosta sovellusta julkaistaessa voidaan olla melko varmoja, että kun uusi ominaisuus yhdistetään järjestelmään ja testit menevät läpi, järjestelmä on kunnossa ja uudet ominaisuudet toimivat odotetulla tavalla. Tämän lisäksi automatiikka säästää ohjelmistokehittäjiltä aikaa ja vaivaa, kun sen ansiosta voidaan välttää perinteinen manuaalitestaus. 

Automatisoinnin myötä ohjelmistojen uusia ominaisuuksia pystytään myös toimittamaan reaaliaikaisemmin, eli sovellusten uusien versioiden julkaisusyklit nopeutuvat. Prosessin myötä ei siis enää tarvitse sopia julkaisupäiviä uusille ohjelmistoversioille ja testata ominaisuuksia julkaisun jälkeen käsin, vaan kaikki päivitettävät osat voidaan testata etukäteen, ja ominaisuudet menevät julkaisuun heti niiden valmistuttua. Tätä menetelmää kutsutaan nimityksillä jatkuva integraatio (continuous integration) ja jatkuva toimitus (continuous delivery)Loppukäyttäjä voi myös käyttää ohjelmistoa sitä päivitettäessä, eikä perinteisiä käyttökatkoja siis tarvita. 

Automaattisen julkaisuputken kehittäjällekään ei jää painiskelua potentiaalisten inhimillisten virheiden kanssa. Prosessin avulla vältytään siltä, että käyttäjän alkaessa esimerkiksi kääntämään sovellusta siinä sattuukin olemaan jokin väärä asetus päällä, ja vaikkapa palvelinsovelluksen versio päädytään asentamaan tuotantoon väärällä asetuksella – järjestelmä pysyy automatisaation myötä todennäköisemmin ehjänä.

Ajatus onkin juuri se, että testaus- ja julkaisuprosessi tapahtuu joka kerralla samalla tavalla, eli automatisointi yksinkertaisesti rajaa pois mahdolliset kehitysprosessin erheet.

  • Automaattisen testauksen myötä varmistutaan järjestelmän toimivuudesta
  • Sovellusten ja päivitysten julkaisusykli nopeutuu, kun osat voidaan testata etukäteen
  • Kehittäjät säästyvät mahdollisten virheiden paineilta, sillä virheitä tai epätoivottuja asetuksia sisältävän ohjelmiston julkaisu on mahdotonta 

Automaattinen julkaisu ja testaus levinnee tulevaisuudessa

Kehitysprosessin automatisointia on käytetty jo jonkin aikaa, eli ilmiö ei ole aivan uusi. Automatisointia myös käytetään suhteellisen paljon, eli kyseessä alkaa olla vallalla oleva käytäntö.

Kysymyksiä herättävä puoli testaus- ja julkaisuprosessin automatisoinnissa on, haluavatko kaikki, että tuotanto päivittyy reaaliaikaisesti päivitetyn sovellusversion valmistuessa. Joissain yrityksissä järjestelmille halutaan jonkinlainen hyväksyntä ennen tuotantoon päätymistä. Joidenkin palveluntarjoajien käytäntöihin kuuluu, että aina kun jotain uutta halutaan julkaista, päivitetyt versiot yhdistyvät laajempaan järjestelmään suoraan; toiset taas haluavat tarkastaa version ennen julkaisua, eli aina uuden osan valmistuttua se asentuu ensin pelkästään testipalvelimelle, ja itse tuotantoon päätyminen vaatii manuaalisen hyväksynnän ennen virallista julkaisua. 

Yksi syy automatisoinnin yleistymiselle on, että kun softia pyöritetään esimerkiksi Googlen ja Amazonin kaltaisten palveluntarjoajien julkisissa pilvipalveluissa, niiden kautta ohjelmistoja julkaisevat yritykset saavat usein työkaluja julkaisuprosessia varten. On todettu, että automatiikkaa on helppo rakentaa, kun siihen on olemassa niin hyvät työkalut – manuaalinen testaaminen ja julkaiseminen ei siis enää ole niin kannattavaa. 

Ohjelmoinnissa aletaan todennäköisesti uskaltaa mennä enemmän ja enemmän automatiikan puolelle tulevaisuudessa: automaattinen testaus on kehittynyt vuosien aikana niin paljon, että kunhan testit vain menevät läpi, järjestelmien voidaan luottaa toimivan kuten pitääkin. 

  • Suuret palveluntarjoajat mahdollistavat tänä päivänä automatisoidun julkaisuprosessin työkalujen avulla
  • Ohjelmistoa tarjoavan yrityksen kannattaa pohtia, halutaanko ohjelmiston osia tuotantoon automaattisesti vai manuaalisen hyväksynnän kautta
  • Automaattisen testauksen kehityksen ansiosta automatiikka lienee tulevaisuutta, sillä se varmistaa kehitettävän järjestelmän toimivuuden ja julkaisun nopeasti ja vaivattomasti