Tässä mietteitäni siitä että kuinka lähtisin kehittämään testausautomaatiota?
Vaihe 1, Onko automatisointi mahdollista tässä tapauksessa?
Ensimmäisenä tulisi selvittää että onko halutunkaltaista testausta mahdollista automatisoida käytössä olevien resurssien puitteissa ja verrattuna käsin tehtävään testaukseen. Käytännössä tämä tarkoittaa että pitää ottaa selvää testausrajapinnoista ja jos sellaisia ei ole valmiina niin sitten saada arvio kuinka kauan haluttujen rajapintojen tekeminen kestää. Tähän vaikuttaa tosi paljon tuotteen laatu, käytetty teknologinen alusta, testauksen näkökulma ja henkilöiden kokemukset. Tällaisessa auttaa paljon keskustella osaavan koodarin kanssa. Täytyy muistaa että vaikka kuinka haluaisi automatisoida jotain niin joskus joutuu vaan nostamaan kädet pystyyn ja toteamaan että tämä on järkevämpää testata käsin.
Vaihe 2, Ensimmäisen automatisoidun testin ajaminen
Yleensä sen ensimmäisen automatisoidun testin ajaminen on isoin harppaus. Koska jos yhden testin voi automatisoida niin yleensä se seuraava vähän erilainen onnistuu paljon helpommin. Mutta mielestäni kannattaa aloittaa yhdestä helposta ja lisätä pikkuhiljaa ominaisuuksia jotta testiautomaatioympäristö pysyy kokoajan toimivana. Jos testiautomaation päästää repsahtamaan niin kohta se on ihan mahdoton korjata sillä kaikki sen ympärillä tuppaa muuttumaan niin vaatimukset kuin koodikin. Siksi hyvien ja mahdollisimman pysyvän rajapinnan löytäminen alussa on avain asemassa.
Vaihe 3, Kohti toimivaa ja helposti käytettävää testiautomaatiota
Kun automaatiota laajennetaan niin samalla pitäisi pyrkiä viemään se helposti käytettävälle tasolle. Käytännössä tämä tarkoittaa avainsana tyyppistä lähestymistapaa tai ainakin hyvää kirjastoa jota on ohjelmallisesti helppo käyttää. En näe keyword ja hyvän kirjaston välillä juurikaan eroja ja mielestäni kirjasto on helpompi toteuttaa ja ympäristönä on tuttu ohjelmointiympäristö. Tällainen kirjastorajapinta on testiscriptien kirjoittajalle tuttu ja helppo käyttöliittymä ja siten helpottaa käyttöönottokynnystä ja käytettävyyttä yleensäkkin koska työkalut on tuttuja entuudestaan.
Testien ylläpidettävyyttä voi parantaa esim. Testien kirjoittamisen koodaussäännöillä jotka ovat tarpeen varsinkin jos käytössä on TTCN-3 tyyppinen ratkaisu. Lisäksi testejä voi generoida automaattisesti erillisillä testigeneraattoreilla (Esim. OSMO tai Qtronic) jos on tarvetta laajempaan kattavuuteen. Myös on mahdollista tehdä graafisia käyttöliittymiä vaikka domain-specifin mallinnuksen avulla (Esim. MetaEdit+) joiden avulla on helpompi visualisoida testien tekoa ja ajoa. Visualisoinnin avulla testien tekeminen on yleensä paljon nopeampaa ja lisäksi helpompi omaksua jopa ei teknisten henkilöiden.
Vaihe 4, Automatisoi loppuun asti
Jos testien suorisut on 20 kohdan tee-näin-lista niin voit olla varma että se tulee tehtyä vain äärimmäisessä hädässä tai pakosta. Tee mieluummin bat tai sh tiedosto jolla koko ketju on automatisointu. Ja esim regressiotestit pitäs pyörähtää joka yö ilman että kenenkään tarvii käsin koskea mihinkään. Samoin smoke testit pitäs pyörähtää joka kommintin yhteydessä täysin automaattisesti ja valittaa isoon ääneen jos ei mene läpi.
Vaihe 5, raportoi riittävästi mutta ei liikaa
Kun testien suoritus on automatisoitu raportteja on helppo kirjoittaa ohjelmallisesti. Tässä kannattaa kuitenkin miettiä mitkä luvut ja mittarit on tärkeitä. Tärkeää on kuitenkin että jos on käytössä jokin testauksen suoritustyökalu niin raportti menee suoraan sinne ilman käsin tehtävä copy-pastea. Tällöin raportit on väkisin ajan tasalla. Raportoinnissakaan ei kannata keksiä pyörää uudestaan vaan käyttää kaikkea mahdollista olemassa olevaa apuna. Esim. Hudson build serverin löytyy plugineja jotka auttaa.
Vaihe 6, Kouluta muut
Harvoin kukaan tekee testiautomaatiota pelkästään itseään varten. Siksi on tärkeää kertoa muille mitä on tehnyt ja jos tarvetta niin kouluttaa heitäkin käyttämään sitä. On hyvin harvinaista että yksi ihminen yksi onnistuu tekemään jotain tosi hyvin siksi toisilta kannattaa kysyä kommentteja ja ottaa ne tosissaan.
Lopuksi
Kannattaa muistaa että kaikki on tapauskohtaista ja jokaiseen ylhäällä olevaan kohtaan löytyy kosolti kikkoja. Tuossa on minun näkökulmastani tärkeimpien asioiden lista, joka toivottavasti auttaa asioiden jäsentelyssä. Kerro kommenttiin jos jotain oleellista unohdin.