Joskus keskikesällä kyllästyin odottelemaan kauan kaivattua kurssia tai
työpajaa modernin ohjelmistotuotannon perustaidoista ja päätin ryhtyä vetämään
moista sitten itse. Ohjelma sopii kaiken tasosille ohjelmoijille ja sisältö
sovitetaan joka maanantai läsnäolevalle yleisölle.
Versiohallinta ja automaattinen testaus eri tasoilla on sen sortin hienouksia,
joiden avulla ohjelmiin voi tehdä muutoksia hallitusti. Testauksen avulla
tiedetään toimiiko se (no, melkein ainakin) ja versiohallinta auttaa löytämään
bugin alkulähteille.
Muutenkin versiohallinta on hieno juttu, projektiryhmän joka koodarilla voi
kaikessa rauhassa olla samat koodit auki omilla koneillaan ja muutokset saadaan
kasattua yhteen yleensä automaattisesti tai ainakin kohtuullisella vaivalla.
Tarkemmin asioista puhuttaessa törmätään tosi nopeesti asioiden erisnimiin.
Versiohallinnan puolesta keskitytään yleisimpään yhdistelmään: Git ja Github.
Näissä työkaluissa on vähän hankalahko kynnys yksin alottaa oppimista, joten
yhteinen oppiminen ja keskinäinen opettaminen on paras tapa päästä alkuun.
Vertaillaan myös eri workfloweja ja puhutaan projektien teknisestä hallinnasta
ja branchien filosofiasta.
Miten sitten testaaminen? Testaaminen jakautuu yksittäisiä ohjelman osia
testaavaan unit testingiin ja kokonaisia ohjelmia ja laajempia kokonaisuuksia
testaavaan integraatio/hyväksyttämis testaukseen. Jälkimmäinen jakaantuu vielä…
Testauksen suhteen nyt keskitytään enimmäkseen unit testaukseen ja sivutaan
aiheena muita testauksen menetelmiä. Unit testaus on ohjelmoijan ikioma nakki
ja apuväline, jolla varmistetaan, että tehdyn muutoksen jälkeenkin
ohjelma toimii ainakin niin hyvin kuin se osataan testata. Nää testit tehään
samalla kielellä kun ohjelmakin.
Tähän liittyen harjotellaan Test Driven Development -prosessia, jossa siis
työtä rytmittää jatkuva testaaminen ja testien kehittäminen samaa tahtia
koodin kanssa. Ihan kaikkeenhan se ei tietenkään sovi, mutta mihin sopii,
sopii sitte sitä paremmin. Joku on luonnehtinu, että tää ois vähän niinku
ohjelmoinnillinen vastine kaksinkertaselle kirjanpidolle.
Laajempia testauksia sivutaan Robot Frameworkilla, jolla voi testata vaikka
nyt sitten oskilloskoopin avulla tuliko ohjelmasta oikean muotoinen ääni, tai
osasko PaaS saada uuden version webisoftasta ajoon tai toimiiko vasta tehty
REST API kunnolla vaiko vaan melkein. Robot on älyttömän laajennettava systeemi,
johon voi kirjotella testejä melkein selväkielisesti ja sitä voi laajentaa
helpoiten Pythonilla.