perjantai 8. tammikuuta 2010

Parasta ennen päivämäärät testeillä

Projektipäällikkö on testauspäällikön ystävä. Onneksi näin välillä, valitettavasti ei vain aina. Aihetta pureskellessani erästä esitystä varten jäin miettimään erilaisia ongelmallisia suhteita projektipäälliköihin testauspäällikkönä toimiessani, ja olemaan hymyillen kiitollinen siitä hyvästä mitä joskus osuu kohdalle.

Ongelmalliset suhteet keskittyivät yleisesti ymmärryksen ja viestinnän ongelmiin. Jos itse on kovasti testaukseen ihastunut ja toisen osapuolen mielestä se on välttämätön paha ja oikeastaan sellaisenakin aika hyödytön, saattaa päätyä painokkaisiinkin sanakäänteisiin.

Eräs kohdalleni osunut varsin yleinen viestinnän ongelma projektipäälliköiden kanssa on koittaa selittää että testin tulokset eivät pysy vakiona. Erityisen tuskaisaksi tämä minulla on muodostunut ympäristöissä joissa on vahvasti mukana kaupallinen testauksen hallinnan työkalu, ja projektipäällikkö on "aseistettu" testauksen mittarein. Voi sitä projektipäällikköparkaa, joka koittaa tulkita edes kevyesti iteratiivisessa projektissa suoraan mittarista että onkos nyt kaikki testit suoritettu kertaalleen, kun minä mokoma omassa roolissani menen ja tyhjennän koko listan säännöllisin väliajoin.

Tästä pohdinnasta mieleeni muistui keskustelu erään kolleegan kanssa muutamia vuosia sitten. Hänellä oli ajatus parasta ennen päivämäärien käytöstä prosessidokumentaatiossa. Idea kaikessa yksinkertaisuudessaan oli että sen sijaan että prosessikuvaukseen pitäisi kirjoittaa päivä jolloin se on luotu, pitäisi viestinnällisistä syistä sanoa että kun se on ollut riittävän kauan olemassa, siihen pitäisi suhtautua vähän samoin kuin vanhentuneeseen maitopurkkiin.

Parasta ennen päivämäärät voisivat toimia testitapauksillakin mainiosti. Olen koittanut peukkulaaturaportoinnin yhteydessä harrastaa kolmatta peukkua kuvaamaan muutoksen määrää, eli tahtia jolla varaan oikeuden muuttaa mieltäni laadusta. Ajatusta vaatii minulta vielä hauduttelua, mutta tuntumaksi ajattelusta jäi että jokusen projektipäällikön kanssa olisi ollut yhteiselo helpompaa jos tälläisen konseptin olisi heti projektin alusta lanseerannut. Testien tulokset happanevat ja se kuinka nopeasti riippuu ympäristötekijöistä. Pitääkö ne sitten korvata tuoreemmilla onkin kokonaan toinen kysymys...

Pohdin projektipäälliköitä, mittareita ja ikuista viestinnän vaikeutta, kun muistiini palautui keskustelu muutaman vuoden takaa erään kolleegan kanssa parasta ennen päivämääristä ohjelmistoprosessidokumentaatiossa.

maanantai 9. marraskuuta 2009

Sanominen, lukeminen ja kuuleminen - viestinnän kaksisuuntaisuus

Kävin keskustelua kursseista, opetustavoista ja opetussisällöistä osana työpajamme jälkipyykkiä. Keskustelu oli varsin lyhyttä ja lähtökohdiltaan varsin erimielistä. Toisaalta tavoitteena tuskin onkaan saavuttaa yhtenäistä näkökulmaa.

Olen kritisoinut taustalla erään kurssitoimittajan ketterän testauksen kurssimateriaalia. Julkaisen lähiaikoina kritiikkini tarkasteltavaksi, ja vastaavasti minulla on käynnissä oma analyysi omien materiaalieni parantamiseksi että saisin pois osan omista vähintään yhtä räikeistä virheistäni.

Voisin varmaan hoitaa palautteen antamisen helpommin omaksuttavassa muodossa, mutta uskon että ihmiset huomaavat johdattelun. Jos on sanottavaa, sen voisi sanoa, ja jos toinen osapuoli on tuttu, asian voisi ottaa asiana eikä henkilökohtaisena.

Olen kiitollinen saamastani lyhyestä palautteesta oman opetustyylini osalta: minulle on jonkin kuulijajoukon osalta muodostunut maine että minulle on olemassa vain yksi tapa tehdä asioita, esim. ketterässä testauksessa.

Jäin miettimään tätä, ja totesin parannettavaa. Minun on entisestään tarpeen korostaa materiaalieni case-pohjaisuutta. En usko prosesseihin ja ohjeisiin, vaan esimerkkeihin ja ristiriitaisuuksiin niissä. Kuvittelen puhuessani sanovani että minun kokemissani tilanteissa näin, ja olen jopa toistuvasti muuttanut materiaaliani ketterän testauksen suhteen erottaakseni "näin sanotaan yleisissä ohjeissa" ja "tälläisessa maailmassa minä olen kokenut tälläista".

Esitystilanteessa sanominen ei ole sama kuin kuuleminen. Tarkoitukset ja merkitykset värittyvät puolin ja toisin aina viestintätilanteessa. Erityisen keskeisten ja vaikeiden asioiden kanssa dialogiin on varattava aikaa ja tukea. Sama pätee lukemisen suhteen: saatan tulkita liikaa esim. siihen että kalvolla otsikolla Scrum kerrotaan olevan kolme backlogia: product, sprint ja test. Ehkä siinä tosiaan tarkoitetaan että jos testaus on erillinen tiimi, heillä voi olla oma sprint backloginsa. Teksti ei kerro.

Kaikenlainen viestintä on kaksisuuntaista, paitsi jos tyydytään siihen että todetaan erimielisyys ilmaistun muodon kanssa. Itse tavoittelen muutosta parempaan, joka viime kädessä vaatii dialogia.

Kun luette kirjoittamaani tai olette eri mieltä sanomani kanssa, antakaa minulle tilaisuus muuttaa mieltäni tai selittää mitä itse asiassa tarkoitan.

Niin tai näin, taustalla tässä pohdinnassa on perusolettama omista kokemuksistani: ketterässä kehityksessä testauksella voidaan saada aikaan jotain hyvää, mutta toisaalta sen perinteisillä muodoilla voidaan syödä merkittävästi hyötyjä kokonaisuudelta.

Ketterän testauksen työpaja, tuoreita ajatuksia

Tänään oli ketterän testauksen työpaja, jossa edustettuna varsin monenlaista ketterän kehityksen, testauksen ja perinteisen testauksen osaamista. Porukassa ei kukaan ollut täydellinen juniori kaikkien suhteen, mutta matkaa yhteiseen ymmärrykseen on aika paljon.

Minulle korostui keskusteluissa että joukosta löytyi kolmenlaista "ketterää kehitystä ja testausta":
- "ketteryys koska niin päätettiin"
- "ketteryys koettuna, mutta puolimatkassa"
- "ketteryys koettuna, aika pitkällä"

Joukostamme löytyi jokunen joka katseli organisaationsa ketterän kehityksen pyrkimyksiä vielä isona kokoelmana haasteita, joka tuntui pitkälti estävältä. Oltiin huolissaan laadusta joka pitää selvittää vasta lopussa (ei kovin ketterää), dokumentoinnin puutteesta tässä tilanteessa, testauksen mukanaolosta ja mahdollisuuksista yleensäkin. Kokonaisuus yksittäisen tiimin ulkopuolelta kuulosti lähinnä vesiputoukselta, jossa jokainen vaihe oli muotoiltu scrum-pakettiin. Yleisesti nämä olivat erilaisia Scrummerfall ja ScrumBut -toteutuksia.

Toinen korostunut joukko oli niitä joilla ei ole laajamittaista automatisoitua testausta eikä varsinkaan hyväksymistestiohjattua kehitystapaa, mutta joiden osalta kuitenkin kokemus oli merkittävän, ja hyödyllisen eron omaaminen perinteiseen kehitykseen ja testaukseen. Laatuvastuu on tiimeillä, ja tiimit ovat ehkä jossain komponenttitiimin ja ominaisuustiimin puolessa välissä.

Kolmas korostunut joukko olivat nk. aidot agilistit. Korostuneesti minulle jäi vaikutelma että tässä porukassa oli varsin vähän pitkään testausta - manuaalista sellaista - tehneitä ihmisiä, joskin kohtuullisen pitkään mukana olleita oli. Tämän porukan testausedustusto oli järjestäin ohjelmointitaitoisia.

Jään hauduttelemaan ajatuksiani, mutta pidin erityisen yllättävänä omaa reaktiotani siihen että testaaja ei olisi sovellusalueen osaaja. Toki, asiakas-toimittaja-tilanteissa tulee vastaan minullekin paljon tilanteita, joissa en tunne sovellusaluetta. Testaajana minulla, ainakin omasta mielestäni, keskeisenä taitona on oppia nopeasti vähän kerrallaan ja sitä kautta vaikka en koskaan varmasti muotoudu esim. asiakashallintasovellusten supersovellusalueosaajaksi, kohtuullinen osaaja ja tehokas testaaja voin olla.

Pitäisi varmaan työstää ajatuksella niitä testauksellisia osaamisia, mitä Microsoft-kirja jota juuri luin kuvasti tittelillä "tester dna".

Ja käytäntöjen osalta, tuo kolmijaottelu voisi olla varsin hyödyllinen pohja koulutusmateriaaleissani. Siinäkin on vielä paljon vaihtelua, mutta voisi edes vähän saada otteen että missä skaalalla oikein mennään.

perjantai 23. lokakuuta 2009

Se pieni ero: testaus ja laatutietoon reagointi

Päivitin ulkoasun ja sisällön osalta websivujani http://www.testauskirja.com/. Laitoin tietoa päivityksistä jonkinlaiselle kohderyhmälle, ja ensimmäisenä päivänä sain postilla viestin:

"Sivuilla eivät ääkköset näy oikein... olisikohan pitänyt testata / testauttaa jossain ennen julkaisemista..."

Testaajana viesti oli minusta äärimmäisen inspiroiva. Olen kuullut vastaavan kommentin lukemattomia kertoja ohjelmistoprojekteissa, ja lähestulkoon aina pitänyt sitä jonkinasteisen testauksen ymmärtämättömyyden osoituksena. Ymmärtämättömyyttä voi kuitenkin aina koittaa korjata.

Itse ajattelen jotakuinkin näin:

Testaus / testaamattomuus on aivan eri asia kuin laatutietoon reagointi
Testauksella löydetään virheitä. Testaamattomuudella voidaan jäädä ilman laatutietoa. Testauksen osalta mikään ei suoraan lupaa, että tietoon virheestä reagoidaan "toivotusti" korjauksella. Tietoon voidaan reagoida myös päättämällä elää virheen kanssa - pidempään tai lyhyemmän aikaa.

Korjauspäätöksissä pitää miettiä kustannusta suhteessa hyötyihin - kokonaisuutena
Testaajana pitäisin kovasti moitteettomasta laadusta, mutta olen oppinut olemaan ylpeä tunnetusta laadusta. Suorien kustannusten lisäksi pitää miettiä vaihtoehtoiskustannukset: mitä muuta, mahdollisesti tärkeämpää, jää saavuttamatta kun aika päätetään kiinnittää tähän. Virheen korjaaminen on aikaa pois joltain muulta. Uuden palvelun lisäarvo alkaa toteutua vasta kun se on käyttäjillä.

Korjauspäätöksien virheet ovat yleisempiä kuin testaamattomuus
Tiesin ennestään että sivujen osalta skandit eivät toimi tietyillä selaimien ja asetusten yhdistelmällä. Voin piiloutua sen taakse että olen itse asiassa laiska ja surkea kehittäjä, jopa websivuille, ja en osannut tehokkaasti arpoa oikeaa merkistökoodia sivuilleni niin että merkit näkyisivät kaikilla oikein. Voin myös piiloutua sen taakse että aivan sama merkistö-ongelma on ollut vuosikausia testausOSY:n sivuilla, koska nekin minä olen laiskana kehittäjänä tehnyt.
Sen sijaan että piiloutuisin, ottaisin mieluummin ajattelutavaksi sen että tein päätöksen korjaamattomuudesta. Päätös voi olla väärä, mutta päätös kuitenkin.
Sen sijaan että pohditaan että olisiko pitänyt testata, voidaan puida teinkö oikean päätöksen asiakkaideni palvelemisen kannalta priorisoidessani korjauksen ulos "julkaisusta".

Laatupalautteeseen reagointi
Laatupalautteen saaminen (virheraportit) on itse asiassa kivaa. Se käynnistää pohdinnan siitä että olisiko jotain opittavaa, ja jos olisi, mitä.
Testausopeista (tai markkinoinnin opeista) voisi kerätä sen että vain joka kymmenes tyytymätön valittaa. Tämäkin tosin taitaa päteä vain sovelluksiin/palveluihin joilla on merkitystä - ja voisin kyseenalaistaa minun websiteni merkityksen käyttäjäkunnalle valituskynnyksen osalta. Voisin myös ajatella, että ongelma ei ole joko yleinen tai niin häiritsevä että olisi muuttanut asioita minun kannaltani, koska mittareita (näen sivuittain osumien määrän) näyttäisi siltä että aika moni on jaksanut ainakin klikkailla useampia sivuja auki. Testaajana kuitenkin ehkä olettaisi, että ihmiset eivät vaan valita...

Aidosti mielenkiintoinen kysymys onkin: vaikuttaako skandien rikkinäisyys / sivujeni rumuus siihen että joku ei enää uskoisi että osaan testata ja opettaa testausta, koska en osaa korjata?

Kuinkas noiden isojen julkisten epäonnistumisten kanssa saisi kirjoittelijat tajuamaan että kysymys ei ole siitä että olisi pitänyt testata / testauttaa, vaan että olisi pitänyt korjata / korjauttaa. Ja sitä ennen, päättää oikein korjaustarpeen tärkeydestä.

sunnuntai 11. lokakuuta 2009

Virheetön järjestelmä tuotannossa

Järjestelen parhaillaan ketterän testauksen työpajaa marraskuun alkuun, ja osallistujia läpi käydessäni koin monta vau-tunnetta katsellessani millaista porukkaa Suomesta löytyykään. Sen sijaan yksi erityinen lause jossain ilmoittautumisien perusteissa pisti silmään: jollakulla oli kokemuksia useista peräkkäisistä järjestelmäversioista jotka olivat virheettömiä tuotannossa.

Olen vuosien varrella ollut jokusessa projektissa mukana vaihtelevissa rooleissa, ja joudun tunnustamaan että minun kohdalleni tuollaista tilannetta ei ole osunut. Varsin vähävirheisiä järjestelmiä tuotantoon on viety, mutta virheetön - ei todellakaan. Ketterien menetelmien mukanaan tuoma stop-and-fix -periaate auttaa todella paljon laadun kanssa, mutta ainakin minun kokemuksissani vielä varsin usein tulee kaksi virheraporttia, joista vain toisen voi korjata kun suurten käyttäjämäärien ja vaihtelevien profiilien kanssa ihmiset eivät vain koe laatua ja virheettömyyttä samalla tapaa.

Asiaa hetken hauduteltuani jään odottamaan innolla määritelmää virheettömyydelle. Mieleeni tuli nimittäin montakin projektia, jossa virhe määritellään varsin suppeasti suhteessa tarkoitettuun toiminnallisuuteen, ja yleensä vielä dokumentaatioon. Sitä ei ketterän projektin osalta määritelmäksi nopeasti leimaisi.

Järjestelmiä, joista ei ole löytynyt yhtään tuotantokorjaustarvetta ennen ympäristön muuttumista on kohdalle kyllä tullut. Nekin tapaukset ovat kyllä kaukana virheettömistä.

lauantai 10. lokakuuta 2009

Miten testaus kehittyy?

Olen viettänyt iltaa lukien arvostamieni testausgurujen blogeja, pyrkien päivittämään tietojani siitä mitä maailmassa oikeastaan tapahtuukaan. Erityisen inspiraation pohdiskelulle löysin jälleen James Bachin blogista.

Olen viime aikoina kokenut jonkinasteista epämukavuutta lukiessani Jamesin kirjoituksia. James on pitkään ollut yksi ehdottomista testausidoleistani, ehdottoman taitava testaaja, joka myös kuvailee tekemisiään ja antaa sitä kautta muille mahdollisuuden ottaa valitsemiaan oppeja. Kokemani epämukavuus johti siihen että lähes raukkamaisesti päätin kirjoittaa suomeksi, kunnes uskallan asetella sanani niin etten päädy väärään keskusteluun.

James Bachin blogin viimeisin kirjoitus käsitteli James Whittakerin uusinta kirjaa, jota jokunen varsin merkittävä testausihminen, James Bach mukaanlukien, on pitänyt jonkinasteisena huijauksena. Varsinaista otsikon perusteella odotettavaa asiaa koettiin jossain arvostelussa olevan sivumäärällisesti liian vähän, ja viittausten puute tutkivan testauksen keskeisiin hahmoihin ei myöskään saanut suitsutusta. Ilmeisesti lisäksi koettiin että koko termiä käytettiin väärin.

Olen viime aikoina lukenut James Whittakerin kirjaa, ja edes luettuani toisten gurujen kommentteja, ei mielipiteeni kirjasta muuttunut. Minua ei haitannut että varsinainen sisältö oli ehkä lyhyessä osassa kirjaa, koska muukin sisältö oli minulle oleellista. Olen kahlannut läpi puolet, ja pitänyt siitä mitä olen lukenut. Olen lukiessa jäsentänyt omia ajatuksiani ja saanut uusia ideoita - myös rivien välistä lukien.

Palatakseni kirjoitukseni otsikkoon: miten testaus kehittyy? Jäin pohtimaan sitä että jos tutkivan testauksen jäsentämiseen liittyy pelko siitä että päätyy melko kovan kritiikin kohteeksi, uskaltaako sitä oikeasti asioita yrittää viedä eteenpäin? Kirjoittelin yhdellä listalla jokunen viikko takaperin tutkivan testauksen hallinnoinnin ajatuskehikostani, jonka huomasin olevan erilainen kuin sessiopohjainen testauksen hallinta, vaikka paljon samaa onkin. En vielä säikähtänyt, mutta muistissa on tuoreesti että kun keskustelun avaa, siinä saa samalla sitoutua mahdollisesti aikamoiseen pyöritykseen ja selittelyyn. Ehkä kyse on osittain siitä että englanti ei ole äidinkieleni, mutta ennen kaikkea kuitenkin kirjallisen viestinnän haastavuudesta.

Jos keskustelu käy liian kuumana ja ilmaisut vahvoina, aika iso osa ihmisistä vieraantuu keskustelusta. Aikaa ei vain ole riittävästi, ja oma luottamus taitoihin ja tietoihin horjuu, kokemuksista huolimatta. Auttaakohan tämä uudenoloinen ilmapiiri testausta kehittymään? Nakuttava tuntuma jossain vihjailee, että kohta on valittava gurunsa että ei saa aikaan keskusteluissa vahvoja torjumisreaktioita puolin ja toisin.

tiistai 29. syyskuuta 2009

Vaatimusten palvonta ja testauksen ohjaus

Olen viettänyt lähiaikoina aikaa perinteisen kehityksen, joskin inkrementaalisuudella maustetun, parissa. Teemat ovat hieman erilaisia kuin ketterän kehityksen ja testauksen osalta, ja ajattelin nyt lyhyesti tarttua yhteen lempiteemoistani: vaatimusten keskeiseen rooliin.

Perinteisissä projekteissa on varsin suuri kunnioitus vaatimuksia ja vaatimusmäärittelyjä kohtaan. Porukoissa nyökytellään, kun asiakas-toimittajasuhteessa toimittajalta tulee kohtuullisen kokoisia hintalappuja muutoksille, maustettuna kommentein "ymmärtämättömyydestä sakotetaan". Odotukset tilaajan taidoille määritellä asiat oikein ovat melkoiset, ja sitä myös muutoshallinnan perusteena on hyvä käyttää.

Vaatimuksia kunnioitetaan jopa siinä määrin että käytän siitä sanaa palvonta. Vaatimusten kanssa vietetään mahdollisesti vuosia ennen kuin mitään toteutetaan. Vaatimusdokumentit muodostuvat argumentoinnin aseiksi, eivätkä työkaluiksi tekemiselle.

Viimeisin inspiraation lähde tälle kirjoitelmalle oli oletus että "vaatimuksia vastenhan niitä testitapauksia on suunniteltava, ei sinne mitään muuta saa lähteä soveltamaan".

Minusta vaatimustenpalvonta on yksi yleisistä tehottoman ja heikkotuloksisen testauksen piirteistä. Vaatimuksia sopii palvoa toteuttajan testeissä, nehän kertovat asiat jotka on tarpeen vahvistaa. Testaajan näkökulmasta isossa osassa on etsiä asioita jotka jäävät vaatimusten väliin, ovat moniselitteisiä mahdollisesta hyvästä yrityksestä huolimatta.

Jos (kun) projektit lähtevät vaatimusten kirjaamiseen "yksiselitteisesti", saadaan aikaan uskomaton dokumentaatiomäärä, johon helposti haudataan merkittävääkin tietoa. Ei tämä silti tarkoita että mitään ei kirjata, mutta palvontaan viittaavat elementit ovat yleensä ikäviä.

Vaatimuksia vasten testisuunnittelu on eri asia kuin vaatimuksia hyödyntävä testisuunnittelu. Näkisin jälkimmäisen toivottuna tilana, jossa kirjatut vaatimukset asettavat rajoja sille mitä kohtuullisesti voidaan pitää "virheenä". Testaus voi ja toivottavasti löytää myös niitä "muutospyyntöjä" joiden puutteen vuoksi järjestelmät eivät käytännössä toimi. Rajaus näiden kahden välillä on varsinaista taiteilua. Viime kädessä kysymys tuntuu kuitenkin olevan rahasta: kenelle, keneltä ja kuinka paljon?

Lukijat

Osallistujat