lauantai 13. lokakuuta 2012

Särähdyksiä ja testattavia oletuksia

Kuuntelin eilen ihmisiä Tampere Goes Agile -tapahtumassa ja mietin. Useammassakin kohdassa testaajan korvaani särehteli se mitä luulin kuulevani: pohdintaa siitä miten "perinteisistä testaajista" saataisiin tehtyä testauksen automatisoijia, vaikka sellaisia jotka osaa "copypasteta keywordeja"; miten näistä saataisiin tehtyä määrittelijöitä - yleensäkin jotain mitä he eivät nyt ole.

Toinen särähtelevä viesti oli ajatus siitä että jos testaajat olisivat mukana tekemässä määrittelyä esimerkein, he pystyisivät ennakkoon kertomaan kaikki ne asiat jotka kertoisivat havaintoina testatessaan. Kuunnellessani tämän suunnan viestejä muistin, miksi ensi kertaa koin kykeneväni itse hyväksymään tätä kehitysmallia paremmin kun se sai Gojko Adjicin tekstien lueskelun myötä oikean nimensä: määrittely esimerkein. Ei tämä mitään hyväksymistestiohjattua kehitystä ole, korkeintaan esimerkkiohjattua. Ja esimerkit eivät ole kaikki mitä hyväksyntään vaaditaan. Tämä usko esimerkkien täydellisyyteen henki jotenkin monen toteuttajataustaisen agilistin viesteissä ja onhan se kivan vapauttava ajatus että toteutetaan mitä on määritelty ja muu jää muualle.

Juttelin pitkään erään arvostamani kolleegaan kanssa. Keskustelu muistutti, että osana kokeilujani tehdäksemme hyvää määrittelyä esimerkein, minulla on hypoteesi testattavana. Minä uskon, että ohjelmisto puhuu minulle testaajana, olen oppinut kuuntelemaan sitä tavoilla joita on välillä vaikea eritelläkin. Se vihjaa mihin kiinnittää huomiota, antaa vinkkejä siitä kuinka moneen kertaan asiaa kannattaa eri silmälasein tarkastella. Esitän sille kysymyksiä ja se vastaa. Vastausten perusteella opin jotain mitä en tiennyt ennestään, ja käytän oppimaani rajallisen ajan suuntaamiseen sellaisiin asioihin joilla on merkitystä.

Puhun toki myös ihmisille, ja hekin vastaavat minulle sillä suoralla vastauksella, mutta olen aina testaajana kuunnellut myös vastauksen sivuviestejä: epävarmuuksia, selittämisen vaikeutta, välttelyä, hienojakoisia eroja toisten sanomisiin. Näistäkin opin, ja tarkastelen mitä ne käytännössä tarkoittavat keskustellen jälleen sen ohjelmistoversion kanssa.

Esimerkein määrittelyssä uskon, että inkrementin pienuus auttaa monessa asiassa. Minulla on edelleen se tuotekonteksti, tämänhetkinen ohjelmistoversio. Puhumme esimerkein siitä, mitä siihen lisätään. Mutta oletan, ja tätä aion myös osaltani testata, että avainesimerkit vangitsevat joitain juttuja jotka nostaisin esiin normaalisti testatessani mutta jättävät osan vangitsematta. Määrittely ja mielikuvitus ilman konkreettista herätettä testattavasta ongelmasta ei vain ole yhtä monipuolinen lähde testaajan osaamisten pohjaksi. Uskon toki että se on riittävä. Mutta, korvaani tulee vielä pitkään särähtämään, kun tutkivan testauksen roolia kuviossa ei ymmärretä. Mikään ei estä meitä varaamasta aikaa tutkivalle testaukselle, oppimisille ja reagoinnille - paitsi me itse ja uskomuksemme siitä mitä sprinteissä pitää tapahtua.

Olin muutaman vuoden poissa agilekentältä, kun minusta aiheesta puhujan tulee harjoittaa jotain puhumisensa suuntaista: Ilmarinen ei juurikaan harjoittanut ja käsiteltäväksi jäi lähinnä perinteiseen paluun aikaansaamat opit. Eilinen muistutti, että testausmielessä tällä kentällä on ammattikuntani kannalta tärkeää työtä tehtävänä. On se sääli jos testaajien osaamista ei nimikkeen ja ymmärryksen puutteiden vuoksi osata hyödyntää ja ketterän kentän tarvitsee kantapään kautta oppia monimuotoisen palautteen tekokkaan tuottamisen asiat. Automaatio on osa, mutta se ei ole näin iso fokus. Ja tietystihän on helppoa sanoa että se tuoteomistaja tekee tän tyyppiset jutut, ja harjoittelee ne taidot joita testausihmiset ovat nk. perinteisessä maailmassa hioneet.

Ja muuten, testauskentällä on testaajia, jotka suorittavat muiden suunnittelemia testejä rutiininomaisesti tarkistellen "automaation korvikkeita". Niitä jotka uskovat että vastaukset tulevat spekseistä, ajattelematta, itse oppimatta ja yhdistelemättä. Laitan sen luokan työn samaan laariin sen avainsanojen leikkaa-liimaa -ajatuksen kanssa. Kummastakin voisi kokonaan luopua.

tiistai 9. lokakuuta 2012

Määrittely esimerkein, ensiaskeleita


Olen pöytälaatikkoprojektinani - muun ollessa vielä korkeampaa prioriteettiä - tutustunut aktiivisesti määrittelyyn esimerkein, SBE - Specification by Example, ja siinä erityisesti Cucumber/Gherkin -tyyliseen määrittelemiseen. Elävän dokumentaation - määrittelyn ja testiautomaation - yhdistämisen konsepti on varsin houkutteleva nykyiseen projektien kuukausirytmiin.

Minulla on tähän tutustumiseen oikeastaan kaksi motivaatiotekijää. Toinen lähtee siitä, että tiimini kehittäjät voivottelevat aika usein tehtävänantojensa epämääräisyyttä, ja tämä voisi olla tapa määrittää tarkemmin mitä muutosta esimerkein tavoiteltiinkaan. Toinen lähtee siitä, että kuukausisyklissä sekoaa, jos ei jotenkin saa sitä testiautomaatiota kuvioon ja mikään "erillinen projekti" ei vielä tälläkään kertaa tule kestämään elossa tiimini kanssa. Niinpä siis mietin aktiivisesti määrittelyn ja testiautomaation yhdistämistä.

Kirjoitin ihan lähiaikoina ensimmäisen kokonaisen esimerkkini ominaisuudesta ja laadin yleensäkin listan ominaisuuksista joita kyseiseen alueeseen voisi liittyä. Ajatukseni on, että sen sijaan että vielä koittaisimme tuotepäälliköiden kanssa alkaa tehdä määrittelyä esimerkein kaikelle uudelle, luotaisiin ensin vähän keskustelun pohjaa nykyisestä toiminnallisuudesta.

Ensiesimerkkini osui ominaisuuteen, jota juuri opiskelin testatessani sitä. Tutkin ja selvittelin miten se käyttäytyy, ja selvitellessäni kyselin toteuttajalta tarkoituksesta. Ja kirjasin esimerkiksi sen mitä opin. Testausheuristiikkoja vasten - yhdenmukaisuus - ominaisuus toimii ilman logiikkaa. Kyseisessä ominaisuudessa seurataan muutoksia kokonaisuuteen, ja nykytoiminnallisuuden mukaan kokonaisuuden muuttamista seurataan, mutta osan muuttaminen ei ole kokonaisuuden muuttamista. Ja muuttaminen muuttamalla on eri asia kuin muuttaminen poistamalla.

Näytin esimerkkiä projektipäällikkö / tuotepäällikkötasolla. Ensireaktio oli kysymys siitä kenen tälläisiä pitäisi laatia ja ajatus siitä, että ei näin tarkkaan tarvitse ainakaan kertoa ominaisuuksista tuotepäälliköiden toimesta. Mutta, mahtaa olla tuskaista jos ei kerrota, ja sitten lopulta minä testatessani speksaan kaikenlaista, mitä speksissä olisi alkujaan pitänyt / voinut ottaa huomioon.Tuotepäälliköt luottavat tiimiin toteutuksen yksityiskohdissa, koska yksityiskohtainen keskustelu vaatisi aikaa jota ei ehkä olekaan varattuna. Joskus luottamus palkitaan hyvällä toteutuksella. Ja joskus saa jotain vähän sinne päin. Mutta onneksi kaikkea voi vähitellen sitten muuttaa ja korjata.

Toisaalta oma ensireaktioni oli, että nämä asiat itse pienemmällä työmäärällä nostaisin bugiraportteina siitä että mitä erilaisia heuristiikkoja sitten emme noudattaneet tai millä tapaa toiminnallisuus vaan on käyttäjän perspektiivistä käsittämätön. Toisaalta pelkään, että en olisi tarpeeksi hyvä osatakseni myöskään ajatella noita asioita ilman toteutettua tuoteversiota, joka inspiroi minua testaamaan ja tutkimaan käyttötilanteen kannalta.

Meitä on kehitystiimissä vähän ja edestakaisin kirnuaminen syö motivaatiota sekä vähäisiä voimavarojamme. Jatkan siis hetken pöytälaatikkoprojektina ja esimerkein selvittelyä sen osalta miten tätä meillä saadaan oikeasti käyttöön.

Lupaan julkaista lähiaikoina speksit "nykytoiminnallisuudesta" ja "tavoitellusta toiminnallisuudesta". Ja muutenkin pitäisi kirjoittaa enemmän siitä, mitä olen jo tähänkin mennessä oppinut siitä kuinka tälläisiä speksejä yleensäkään kirjoittaisi.

Lukijat

Osallistujat