Showing posts with label laatu. Show all posts
Showing posts with label laatu. Show all posts

Tuesday, 21 June 2011

Testaajat ovat rokkitähtiä!

Teemu Vesala kirjoitti STC:n blogissa testauksesta verraten sitä runoiluun. Se polkaisi käyntiin ajatuslennon, jossa huomasin vertaavani testausta (substantiivina) klassiseen musiikkiin. "Testaustyö on kuin klassisen musiikin säveltämistä kaikkine nyansseineen" oli hyvin pitkälti oman kommenttini sanoma ko. blogissa. Tästä alkoi kuitenkin twittaus, joka meni näin:

Teemu Vesala:
Poem writing and #testing has plenty of common. See my blog entry @ #stc http://ning.it/jF60aR

Pekka Marjamäki:
@teemuvesala #Testing is more like composing classical #music: even the tiniest sounds change the feel to it. And testing tells a story.

Teemu Vesala:
@pekkamarjamaki Acctually #testing is much like any art. No matter if it's poetry, music or painting. All have same properties.I love'em all
Testaus on verrattavissa taiteeseen, kyllä, johtuen kaikista nyansseista mitä testaus sisältää. Vaan mikä ei olisi verrattavissa taiteeseen? Mitä taide on?

Wikipedia (ah! tuo tiedon ehtymätön lähde!) sanoo taiteesta näin:

Taide on yksi kulttuurin peruskäsitteistä. Se koostuu erilaisten elementtien tarkoituksellisen järjestelyn tuloksista ja prosesseista, joilla pyritään vaikuttamaan tunteisiin tai ajatteluun subjektiivisella tasolla. Taide on ilmaisun, viestinnän, kannanoton ja mielihyvän tuottamisen väline.
Voiko testaus olla kulttuuria? Hyvä kysymys. Voiko testaus olla olematta osa projektikontekstuaalista (onkohan tuo edes sana?) kulttuuria? Testaus on se elementti, millä tarjotaan tietoa asioista, sillä testausta ilmenee niin monella tasolla tiedostamattomasta kyseenalaistamisesta systemaattiseen järjestelmien kokonaisuuden koestamiseen dynaamisesti ja staattisesti. Eli kyllä, testaus on osa kulttuuria (kontekstia) jossa testausta tehdään.

Testaus, kuten taidekin, on erilaisten osasten (tekniikoiden, lähestymistapojen, työvälineiden, strategioiden) tarkoituksellisen järjestelyn tulosta. Kuten sanottu, testausta voidaan suorittaa adhoc, mutta kuten taide, se ei aina vastaa niitä tarkoitusperiä, mitä sillä haetaan. Prosessi (ajattelu- tai kehitys-), johon testaus pyrkii vaikuttamaan, voi hyvinkin olla ainakin osittain subjektiivinen, koska se on mielipide ja tulkinta. Poistamalla subjektiivisuuden taiteesta saadaan aikaan pakotettuja kauneusihanteita, ei-älykkäitä tulkintoja asioita. Subjektiivisuus on taiteessa voima, joka tekee taiteesta taiteen. Testauksessa subjektiivisuus on testauksen itsensä kannalta ehdottomasti voimavara, sillä erilaiset ihmiset tulkitsevat erilaisia asioita eri tavalla. Me voimme aina sanoa että "joku asia on X. Piste!", mutta se ei välttämättä ole oikein jossakin kontekstissa. Subjektiivisuus tulee siis kontekstien myötä tärkeäksi.

Tunteisiin vaikuttamisesta olen jo aiemmin muutaman sanan ylös kirjannut. Ei siis voida vähätellä sitä merkitystä, mikä tunteilla on testaukseen ja testauksella tunteisiin. Molemmat näistä ovat toisiaan ohjaavia tekijöitä. Taiteessa säveltäjän, maalarin, koreografin, kuvanveistäjän tunteet ovat eteenpäinvieviä voimia, jotka saavat taiteen aikaan. Toki on olemassa tunteetontakin taidetta, mutta onko se taidetta? Lisäksi on olemassa taidetta, joka ei vaikuta tunteisiin (tietyssä kontekstissa ja subjektiivisesti). Onko kaikki oleva jollakin tasolla taidetta? Taide pyrkii siis olemaan kaksisuuntainen tunteiden kanssa. Testaus myös: tuntemukset (käsitys riskeistä, priorisointi, jne) ohjaavat testausta ja testauksen herättämät tunteet ohjaavat päätöksentekoa.

Taide on ilmaisua, viestintää, kannanottoa ja mielihyvän/-pahan tuottamista. Tämä pätee testaukseen sanasta sanaan! Testaus on ilmaisua: me ilmaisemme järjestelmän sen hetkistä laatua testaamalla. Testaus on viestintää. Mitään muuta keinoa osoittaa ja viestiä laatua ei ole. Onko? Voidaanko koodaamalla ilmaista laatua? Ei koodaamalla luodaan se laatu, joka testaamalla ilmaistaan. Testaus ei tee laatua. Lisäksi kun puhutaan puhtaasti viestinnästä, testaus on sosiaalinen laji, jossa viestintä on tärkeä! Miten me voimme ilmaista laatua, jos emme viesti sitä viestikanavia pitkin sidosryhmille? Ja testaus ottaa kantaa! Michael Bolton sanoi hyvin: "Testin is defending the quality of the product." Testaus ottaa kantaa laatuun, testaus puolustaa tuotteen laatua. Jos testaus ei ota kantaa laatuun, kuka ottaa?

Mitä mielihyvään tulee, niin minulle jokainen testauspäivä tuottaa suurta mielihyvää (testaajani ovat sen varmaankin panneet merkille). Jokainen päivä, jona voin edistää testauksen voittokulkua sekä organisaatiossa että genrenä yleensä tuottaa mielihyvää. Jokainen päivä, jona opin lisää testauksesta, tuottaa mielihyvää. Joka kerta, kun löydän uuden vian järjestelmästä, se tuottaa mielihyvää (vaan mielipahaa projektipäällikölle ;) ).

Summa summarum: Testaus on taidetta. Testausta tulee arvostaa taiteena. Muistaakseni on olemassa matemaatikkoja, jotka ylistävät matematiikkaa suurimpana taiteena (fibonaccin lukuihin perustuvat graafit, kaaosteoreettiset kuvaajat ja fraktaalitaide). Testaajat ovat siis taiteilijoita. Me itseämme kunnioittavat, taitavat testaajat voimme pitää itseämme IT-maailman rocktähtinä (tai Leonardo da Vinceina). Me tuomme iloja ja suruja, viestimme tunteita, jopa kauneutta. Minulle, testaus on se suurin taide.

Tuesday, 12 April 2011

Murdering your darlings

eli "kullanmurujen murhaaminen"

Olen innokas miniatyyrifiguuri- ja peliharrastaja. Luen mielelläni alan julkaisuja. Tilaan White Dwarf -nimistä miniatyyrilehteä, jossa eräs tuon alan konkari kirjoittaa artikkeleita milloin mistäkin aiheesta. Tuon artikkelisarjan nimi on "Standard bearer" ja sitä kirjoittaa Jervis Johnson, kymmeniä vuosia miniatyyripelien maailmaa luonut ja tutkinut veteraani. Hän kirjoitti huhtikuun artikkelissaan (White Dwarf 376, April 2011) mantroista, joita hän viljelee töissä ja työn ulkopuolella. Eräs mantra oli "Murdering your darlings" eli "kullanmurujen murhaaminen".

"Murdering your darlings" tarkoittaa käytännössä sitä, että jos teet jotakin, josta olet erityisen ylpeä ja pidät sitä nokkelana tai nerokkaana; yliviivaa se ja tee se uudelleen. Suurin osa asioista, joista olemme erityisen ylpeitä eivät todellisuudessa ole muuta kuin oman itsetuntomme kohottamista eikä tuo tekele vie sitä todellista asiaa eteenpäin. Jervis kirjoittaa (vapaasti käänneetynä):
"jos kirjoitat huikein sanankääntein nokkelan lausahduksen, se todennäköisesti on olemassa vain sen takia että tuntisit itsesi nokkelaksi".
Sillä ei pyritä muokkaamaan asioita muokkamisen tähden vaan pyritää luomaan yksinkertaisin mahdollinen tuote, jolla asiaa voidaan viedä eteenpäin. Kun huomaat tehneesi jotakin, josta olet äärimmäisen ylpeä, sinun tulee miettiä kyseinen asia uudelleen ja tarkastella, viekö tuo tekele kohti sitä päämäärää johon olet pyrkimässä. Jos ei, niin "kullanmuru hengiltä".

Tämä teksti on tuon murhaamisen tulos. Jotta pystyn kirjoittamaan hyvän testin, minun täytyy päättää mistä kirjoitan ja miksi kirjoitan. Päämääränä on luoda laatua parantava ajatusmalli. Mistä pitää lähteä liikkeelle?

Lähtökohta on se, että itseään ylentävästi kirjoitettu tekninen teksti ei palvele ketään eikä se vie tavoitteeseen. Tämä laadunparantaminen ei kuitenkaan koske pelkästään teknistä kirjoittamista vaan kaikkea julkaistavaa asiaa. Se pätee sekä ohjelmistokoodiin, testitapauksiin, raportteihin, itse sovellukseen, järjestelmiin, patsaisiin, taloihin, yms. Käytännössä "kullanmurujen murhaaminen" pätee kaikkeen mitä voi tehdä. Lähtökohdan ja tavoitteen välillä tulee olla suora viiva ja kaikki tuon viivan ulkopuolella oleva turhaa informaatiota. Jokainen palanen tulee siis arvioida, jotta voidaan tietää palveleeko tuo kyseinen asia lopputulemaa. Jos näin ei ole, se heikentää laatua.
Onko kyseinen asia välttämätön lopputuleman kannalta? Mitkä ovat kaikessa yksinkertaisuudessaan ne asiat, jotka tarvitsee tietää, tehdä, ratkaista, jne, jotta päästään päämäärään? Kuinka voidaan tehdä mahdollisimman tehokasta työtä, jotta voidaan saavuttaa parasta mahdollista laatua.

Kun nämä vähimmäisvaatimukset on löydetty, tulee jokaiseen vaatimukseen luoda sisältö, joka palvelee ainoastaan tuota tarkoitusta. Jos se täyttää tuon määrityksen, se vie kohti päämäärää. Jos tuo sisältö on lisäksi jotain muuta kuin pelkkää eteenpäinvievää informaatiota tms., se tulee muokata sellaiseksi, että se ei sisällä muuta. Eli otetaan punakynä käteen ja vedetään yli ne asiat jotka eivät täysin ja kokonaisuudessaan vie kohti lopputulemaa. Kun päämäärä on kaikkien näiden kullanmurujen murhaamisen jälkeen saavutettu, lopputulema on laadukkain ja tehokkain, mitä voi olla. Kaiken sisällön tulee palvella lopputulemaa ja tehokkaimmalla mahdollisella tavalla. Näin päästään korkeimpaan mahdolliseen laatuun.

Tämä on siis mahdollista kysymällä kaikessa tekemisessä "Mitä haluan saavuttaa?" ja "Viekö tämä tuotos minua lähemmäs valittua päämäärää?". Tämä pätee myös testaamiseen.

Testaus on kustannustehokkuusmielessä äärimmäisen huonoa - testaus ei tuota mitään, mistä voisi saada rahaa. Sen tähden testauksen tehokkuus on äärimmäisen tärkeää, jotta se asia, mitä testauksella pyritään saavuttamaan, saataisiin mahdollisimman kustannustehokkaasti saavutettua ja työn laatu olisi korkeinta mahdollista. Tämä ei tarkoita ylilaatua, koska se jos jokin on rahan hukkaan heittämistä. Työn tarkoituksen tulee palvella tarvetta niin, että voidaan saavuttaa haluttu tulos niin tehokkaasti kuin mahdollista.

Kun otetaan "kullanmurujen murhaaminen" käytäntöön vaikka testitapauksia luodessa, pystytään luomaan tehokkaasti selkeitä ja laadukkaita testitapauksia, jotka palvelevat tarkoitusta. Niiden tarkoitus ei ole kasvattaa testitapauksen kirjoittajan egoa tai statusta tiimissään. Paras testitapaus on sellainen, että päämäärään päästään suorinta reittiä tehokkaasti ja laadukkaasti.

Eli nyt jokainen tulostaa itselleen A4-kokoisen muistilapun "TODO: Murder your darlings!" ja odota, että joku tulee ihmettelemään, että oletko ajatellut käydä työterveydessä kertomassa näistä murha-aikestasi... ;)