Netflixin kehittämä Simian Army, johon kuuluu muun muassa tunnettu Chaos Monkey, on esimerkki siitä, miten haasteet ja virheet voidaan sisällyttää kehitysprosessiin. Chaos Monkey on työkalu, joka satunnaisesti kaataa yksittäisiä palvelimia tuotantoympäristössä, jolloin kehittäjät ja operaattorit voivat testata järjestelmän vikasietoisuutta ja nopeaa reagointikykyä. Tämä lähestymistapa on noussut esiin esimerkkinä siitä, miten yritys voi edistää ohjelmiston luotettavuutta ja laatua altistamalla sen suunniteltuja vikoja varten. Netflix on luonut ympäristön, jossa kehittäjät voivat jatkuvasti testata koodia epäluotettavissa olosuhteissa. Tämä ei ainoastaan paranna ohjelmiston luotettavuutta, mutta myös kannustaa kehittäjiä luomaan koodia, joka on vikasietoista ja skaalautuvaa.

Simian Armyn työkalut toimivat Netflixin tuotantoympäristössä virka-aikaan, jolloin kehittäjät ja johtajat voivat puuttua mahdollisiin ongelmiin välittömästi. Tämä rutiininomainen häiriöiden tuottaminen pakottaa ohjelmistokehittäjät suunnittelemaan järjestelmiä, jotka kestävät vikatilanteita. Tämän prosessin tärkeä osatekijä on myös se, että se ei ole satunnainen kokeilu, vaan osa hallittua toimintakulttuuria, jossa vastuu ja vapaus kulkevat käsi kädessä. Vaarana ei ole se, että palvelut kaatuvat, vaan se, että niihin ei pystytä reagoimaan tarpeeksi nopeasti. Tämä ajattelutapa tuo esiin, kuinka DevOps-käytännöt voivat auttaa luomaan ohjelmiston, joka ei vain toimi oikein, vaan myös kestää ennalta arvaamattomia olosuhteita.

Tämä filosofia ei ole rajoittunut vain suuriin toimijoihin kuten Netflix. Esimerkiksi PagerDuty, pilvipohjainen hälytyspalvelu, on omaksunut "Failure Friday" -käytännön, jossa he tarkoituksellisesti luovat virheitä ja häiriöitä järjestelmissään. Tämä auttaa paitsi testamaan ohjelmiston vikasietoisuutta, mutta myös arvioimaan, kuinka hyvin järjestelmän valvonta, lokitus ja prosessit toimivat ongelmatilanteissa. Vaikka yksittäiset yritykset eivät pysty toistamaan Netflixin mittakaavassa tapahtuvaa virheiden tuottamista, tämä lähestymistapa on levinnyt myös pienempiin ja keskikokoisiin organisaatioihin. Tärkeää on se, että virheiden tuottaminen ei ole itsestäänselvyys, vaan osa tarkkaan mietittyä ja hallittua prosessia, jonka avulla organisaatiot voivat varmistaa, että niiden ohjelmistot kestävät todellisia vikatilanteita.

King, suosittu peliyhtiö, joka tunnetaan Candy Crush -pelistä, on käyttänyt tekoälyä testiautomaation parantamiseen. Pelin tasot eivät ole vain satunnaisia, vaan niiden vaikeustaso määritetään analysoimalla pelaajien suoriutumista. Tämä antaa kehittäjille tarkempaa tietoa pelin tasoista ja niiden sopivasta vaikeusasteesta. Perinteisesti peliä testattiin manuaalisesti, mutta King on kehittänyt tekoälypohjaisen botin, joka pystyy pelaamaan peliä samalla tavalla kuin ihminen, ja keräämään tietoa pelin eri tasoista. Tämä botti, joka käyttää neuroverkkojen kehittynyttä algoritmia, pystyy simuloimaan pelaajan toimintaa, analysoimaan ja antamaan palautetta pelin vaikeudesta ja suoriutumisesta. Tämä tekoälybotti ei ainoastaan vahvista uusien tasojen toimivuutta, vaan myös parantaa olemassa olevien tasojen tasapainoa, jolloin palautesykli lyhenee merkittävästi.

Tekoälyn hyödyntäminen ei rajoitu vain peliteollisuuteen, vaan se on myös yleistynyt monilla muilla teollisuudenaloilla. Kingin tapaus osoittaa, kuinka tärkeää on kehittää työkaluja, jotka eivät ainoastaan testaa tuotetta, mutta myös auttavat parantamaan itse testausprosessia. On tärkeää huomioida, että tämä ei ole pelkkä tekninen innovaation, vaan kulttuurinen muutos. Kehittäjät eivät enää ole pelkästään virheiden korjaajia, vaan heidät on vapautettu suunnittelemaan ja kehittämään järjestelmiä, jotka voivat sietää epävarmuutta ja haasteita. Tämä lähestymistapa on esimerkki siitä, kuinka teknologia voi tukea ketterää ja dynaamista ohjelmistokehitystä.

Kehittäjäkulttuuri, joka hyväksyy virheet ja oppii niistä, on olennainen osa nykyaikaista DevOps-ajattelutapaa. On tärkeää, että organisaatiot eivät pelkää virheitä, vaan näkevät ne mahdollisuutena parantaa ja kehittää omaa infrastruktuuriaan. Virheiden ja häiriöiden tuottaminen ei ole vain tekninen strategia, vaan myös ajattelutapa, joka edistää jatkuvaa parantamista ja oppimista. Tällainen kulttuuri ei vain tuota luotettavampia ja vikasietoisempia järjestelmiä, vaan myös lisää ohjelmistokehittäjien ja muiden tiimin jäsenten valmiuksia käsitellä epävarmuutta ja ongelmatilanteita.

Miksi testaus tuotannossa on olennainen osa modernia julkaisuputkea?

Testaus tuotannossa on noussut tärkeäksi osaksi ohjelmistokehityksen jatkuvaa kehitystä, erityisesti silloin, kun pyritään parantamaan julkaisujen luotettavuutta ja nopeutta. Nykyään yhä useampi organisaatio siirtyy perinteisestä testausmallista, jossa kaikki testit suoritetaan ennen julkaisua, testaukseen, joka keskittyy tuotantoympäristössä suoritettaviin kokeisiin ja tarkistuksiin. Tämä lähestymistapa heijastaa ajatusta, että kehittäjien itse asiassa tulisi saada luottamus siihen, että heidän koodinsa toimii tuotannossa, eikä pelkästään siihen, että testitilanteet ovat onnistuneet puhtaan ja mahdollisesti epäedustavan ympäristön puitteissa.

The Guardian on yksi esimerkki organisaatiosta, joka on kyseenalaistanut perinteisen testiautomaatioiden tarpeen ennen julkaisua. Heidän lähestymistapansa on suorastaan radikaali, sillä heidän testausputkensa on rakennettu siten, että se keskittyy tuotantoon tehtävään testaamiseen. Käyttäen sisäistä työkalua nimeltään Prout, Guardian kehittäjät voivat varmistaa, että heidän muutoksensa toimivat tuotannossa muutamissa minuutteissa sen jälkeen, kun ne on yhdistetty päähaaraan. Tämä tyyli keskittyy siihen, että testaus on nopeaa ja saadaan välitöntä palautetta oikeasta ympäristöstä – tuotannosta itsestään.

Prodmon, toinen The Guardianin kehittämistä työkaluista, vie tuotannossa tapahtuvan testauksen seuraavalle tasolle. Prodmon yhdistää testauksen ja monitoroinnin, jolloin testejä suoritetaan jatkuvasti, 24 tuntia vuorokaudessa, 7 päivää viikossa tuotantoympäristössä. Se ei vain ilmoita virheistä tavanomaisilla raportteilla, vaan herättää hälytyksiä, kuten muutkin seurantajärjestelmät, ja näin tiimi saa välittömästi tiedon mahdollisista ongelmista. Tämä lähestymistapa tarkoittaa, että ohjelmointi- ja testausprosessit ovat jatkuvassa vuorovaikutuksessa todellisten olosuhteiden kanssa, eikä vain simuloinnin tai ennakoimisen varassa.

Yksi tärkeä osa tätä lähestymistapaa on se, että ongelmat, jotka ilmenevät vain pitkän ajan kuluttua julkaisusta tai ovat epäsäännöllisiä, voidaan havaita mahdollisimman nopeasti. Perinteisesti tällaiset ongelmat eivät paljastu heti, kun uusi versio on otettu käyttöön, vaan ne saattavat ilmestyä vasta tietyn ajan kuluttua. Testauksen ja monitoroinnin yhdistäminen antaa kehittäjille mahdollisuuden reagoida nopeasti tällaisiin ongelmiin ja korjata ne ennen kuin ne ehtivät vaikuttaa käyttäjäkokemukseen.

Tällaiset mallit eivät kuitenkaan sovi kaikille organisaatioille. Eri toimialojen ja liiketoimintamallien mukaan testaus tuotannossa voi olla joko äärimmäisen hyödyllistä tai jopa haitallista. Esimerkiksi Bank of New Zealandin tapaus on erinomainen esimerkki siitä, kuinka A/B-testausta voidaan hyödyntää tuotantoympäristössä. Heidän esimerkissään käytettiin neljää erilaista versiota tekstistä, joka houkutteli asiakkaita soittamaan takaisin pankkiin ja neuvottelemaan asuntolainan uusimisesta. Testauksen avulla pystyttiin mittaamaan, mikä vaihtoehdoista toi parhaan asiakasreaktion. A/B-testit tuottivat yllättäviä tuloksia ja antoivat tärkeää tietoa siitä, miten pienet muutokset voivat vaikuttaa asiakaskokemukseen ja käytettävyyteen.

Etsy, maailmanlaajuisesti tunnettu markkinapaikka, on myös käyttänyt tuotannossa tapahtuvaa testausta, mutta heidän lähestymistapansa on hieman erilainen. Etsy julkaisee useita päivityksiä päivittäin ja käyttää testauksessa muun muassa monitorointia ja analytiikkaa selvittääkseen, kuinka uusi toiminnallisuus vaikuttaa asiakaskäyttäytymiseen. Heidän testauksensa ei perustu pelkästään siihen, että testit suoritetaankin tuotannossa, vaan siihen, että testaus on osa jatkuvaa kehityksellistä prosessia, jossa uusien toiminnallisuuksien vaikutus arvioidaan käytännön tasolla heti niiden julkaisun jälkeen.

Tämä uusi paradigma testauksessa tuotannossa tuo mukanaan useita tärkeitä oppitunteja. Ensinnäkin, vaikka perinteinen testausmalli on edelleen hyödyllinen tietyissä konteksteissa, tuotannossa tapahtuva testaus voi tarjota paremman kuvan siitä, miten ohjelmisto käyttäytyy oikeassa ympäristössä. Kehittäjät ja tiimit voivat luottaa siihen, että heidän tekemänsä muutokset eivät vain toimi testissä, vaan myös todellisessa käytössä. Toiseksi, tuotannossa tapahtuva jatkuva testaus mahdollistaa nopean reagoinnin ja korjaukset ennen kuin ongelmat ehtivät vaikuttaa käyttäjäkokemukseen merkittävästi. Kolmanneksi, tällainen lähestymistapa saattaa johtaa siihen, että perinteisiä testausmenetelmiä ei enää tarvita niin laajasti, ja tiimit voivat keskittyä enemmän tuotannon todellisiin olosuhteisiin.

Kuitenkin on tärkeää muistaa, että testaus tuotannossa ei ole ongelmaton ja että se vaatii huolellista suunnittelua ja resursseja. Testauksen automatisointi tuotannossa ei ole itsestäänselvyys, vaan se vaatii jatkuvaa ylläpitoa ja seurantaa. Tällaiselle lähestymistavalle on myös löydettävä oikea tasapaino testauksen syvyyden ja tuottavuuden välillä, jotta se ei johda liialliseen kuormitukseen eikä heikennä sovelluksen suorituskykyä.