Näytetään tekstit, joissa on tunniste työn iloa. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste työn iloa. Näytä kaikki tekstit

tiistai 16. kesäkuuta 2015

Kuka vaan osaa testata - tai puhua kiinaa

Testaajana törmää hyvin monenlaisiin käsityksiin omasta ammatistaan. Toki moniin muihinkin ammatteihin yhdistetään eri tavoin hupaisia kuvitelmia siitä, mitä niiden taitajat työkseen tekevät, mutta itse en ole aikaisemmin työskennellyt tehtävässä, jonka sisällön samassa työpaikassa työskentelevät ihmiset näkisivät niin eri tavoin.

Kaikki osaavat testata

Yksi yleinen testaukseen liittyvä ajatus on, että kuka tahansa osaa testata. Tämä pitää ehdottomasti paikkansa, jokainen joka osaa käyttää tietokonetta, osaa myös jossain määrin testata siinä käyttämiään ohjelmia.

Osaamisen tasoissa on kuitenkin eroja. Kuka tahansa ei osaa käydä systemaattisesti läpi ohjelmistoa, keksiä erilaisia tapoja koetella sen tarjoamien toiminnallisuuksien rajoja ja väärinkäyttää sitä. Kuka tahansa ei osaa kertoa kohtaamistaan ongelmista tavalla, joka auttaa kehittäjää virheen löytämisessä. Hyvä testaus vaatii opiskelua, harjoitusta ja ajatustyötä.

Vähän niin kuin melkein kuka tahansa osaa ranskaa, jos kielitaidoksi riittää lukea ääneen ruokalistaa. Kuitenkaan ranskankielisen tekstin analysointi tai luontevan keskustelun käyminen ei luonnistu opettelematta.

Testaajat osaavat mm. suorituskykytestausta, käytettävyystestausta ja tietoturvatestausta

Moni testaaja varmasti hallitsee useampia testaustyyppejä. Niiden oppiminen ei kuitenkaan ole testaajalle sen helpompaa kuin ranskalaiselle on oppia portugalia, kiinaa tai arabiaa. Jos on kiinnostunut kielistä, niitä voi hallita useita. Jos osaa jo jotakin opeteltavan kielen sukulaiskieltä, helpottaa se niin kieliopin kuin sanastojenkin sisäistämistä, mutta silloinkin vaatii paljon harjoitusta ennen kuin voi sanoa olevansa hyvä siinä.

Jos et ole valmis palkkaamaan .NET-kehittäjäksi henkilöä, joka kertoo osaavansa html:ää, miksi luottaisit tietoturvatestauksen sellaisen henkilön käsiin, joka ei ole perehtynyt siihen kunnolla?

Laatuongelmista päästään, jos testaus suunnitellaan tarkemmin, automatisoidaan ja raportoidaan tarkemmin

Testaaja ei valitettavasti voi tehdä ohjelmistosta laadukasta, siihen tarvitaan kehittäjä. Testaajan toimilla toki voi olla paljonkin merkitystä siinä, miten laadukas lopputuloksesta tulee, vähän niin kuin kustannustoimittajan palautteella voi olla paljonkin merkitystä julkaistavan kirjan laadulle. Kirjailija on kuitenkin vastuussa syntyvästä tekstistä, samoin kuin kehittäjä on vastuussa toteutuksensa tuloksesta.

Testauksen suunnittelu on tärkeää testaamisen suuntaamiseksi oikeisiin asioihin, testauksen automatisointi on oiva työkalu joihinkin tilanteisiin, ja laadukas raportointi on korvaamatonta haluttaessa tietoa siitä, onko testaus ollut riittävän kattavaa ja onko järjestelmä riittävän valmis. Nämä ovat kuitenkin kaikki tehtäviä, joihin lisäpanosten laittaminen saattaa nostaa kustannuksia ja laskea laatua.

Testauksen yksityiskohtainen suunnittelu voi sokeuttaa testauskattavuuden puutteille. Jos testaaja keskittyy testitapausten täsmälliseen suorittamiseen, on hänen vaikea huomata niiden ulkopuolelle jääviä asioita. Myös itse suunnittelu saattaa kohdistua kapeammalle alueelle, jos sitä tehdessä keskitytään yksityiskohtiin eikä karkeamman tason näkökulmien etsimiseen.

Automatisointi on korvaamaton apu tilanteissa, joissa testataan asioita joita ei ole mielekästä tai mahdollista käsin testata, tai haluttaessa välttyä toistamasta käsin joitakin muuttumattomia tapahtumakulkuja. Sen rakentaminen ja ylläpitäminen vie kuitenkin paljon aikaa. Tämä voi tarkoittaa joko merkittävää kustannusten nousua tai merkittävää testauskattavuuden pienenemistä. Automatisointi voi myös johtaa prosessien läpiviemiseen aina keskenään identtisillä testisyötteillä. Ne, jotka saavat henkilökohtaista tyydytystä testien täydellisestä toistettavuudesta, voivat kokea tämän hyvänä tilanteena. Me, joille kokemus on osoittanut mitä ihmeellisimpien bugien nousevan esiin sattumanvaraisella testisyötteiden varioinnilla, pidämme tätä testauksen luotettavuutta heikentävänä tekijänä.

Mitä testauksen raportointiin tulee, siihen on pääpiirteissään kolme vaihtoehtoa.

Ajankäytöllisesti yksinkertaisin tapa raportoida on tarjota tilastoja bugeista ja testitapausten läpäisyprosenteista. Voidaan tarjota myös testitapauslista PASS/FAIL-tiedoin. Jos testitapaukset ovat kovin yksityiskohtaisia, niitä on todennäköisesti melko paljon, jolloin tällaisen listan informatiivisuus on hyvin kyseenalaista.

Toiseksi kevyin tapa raportointiin on sopia muutamia seurattavia asioita, joista tiimi saa antaa fiilispohjaisia arvioitaan, kuinka vakuuttavalla tolalla asiat ovat.

Jos raportilta halutaan jotain enemmän, täytyy huolella miettiä, mitä tietoa siitä olisi tarkoitus saada ulos. On myös hyväksyttävä se, että yksityiskohtaisen, eksaktin, luettavan ja relevantteja asioita esiin nostavan raportin koostamiseen saa helposti päivänkin aikaa kulumaan. Tämä aika on lisäkustannus, ja usein myös pois jostakin muusta.

lauantai 19. lokakuuta 2013

Kehittäjät Marsista, testaajat Venuksesta

Pari vuotta sitten osallistuin testaajana poikkeuksellisen haasteelliseen projektiin, jossa bugipingiksen pahimpina aikoina projektia tekevät koodarit eivät voineet irvistelemättä tulla kanssani samaan hissiin. Kun projektin tilanne rauhoittui, minut kutsuttiin kakulle, varoittaen toki että tarjolla olevat herkut saattavat olla myrkytettyjä.

Tapaus tuli taas mieleen, kun osallistuin keskusteluun, jossa kehittäjät kertoivat käsityksensä luomustensa sisäisestä kauneudesta ja testaajien pinnallisesta tavasta löytää aina jotain valittamista.

Optimistina uskon että nämä jutut esitettiin kaikki vähän pilke silmäkulmassa (ja niitä voi joskus jopa ottaa jonkinlaisena kehuna) mutta jotain ne kuitenkin kertovat testaajan ja kehittäjän välisen suhteen kompleksisuudesta.

Kehittäjä on se joka luo, ja sitten tulee testaaja ja lyttää lopputuloksen maanrakoon (ehkä jopa nauraa sille hieman, anteeksi vaan). Ymmärrettävästi kehittäjän voi joskus olla vaikeaa suhtautua asiaan niin, että me teemme tässä yhteistyötä, kun oma osa on se tekeminen ja toisen osa on pelkkä virheistä nipottaminen. Sitä kuvittelee saaneensa jotain valmiiksi, kunnes seuraavana päivänä edessä on kymmenien kohtien lista ongelmista, joiden syyt pitäisi etsiä ja korjata.

Ehkä jollain tavalla tilanne tuo mieleen 80-luvun stereotyyppiset parisuhdesketsit, joissa mies on se eteenpäinvievä järjen ääni, kun taas nainen esittää kohtuuttomia vaatimuksia eikä ole ikinä tyytyväinen.

Vertauksen tekee entistäkin herkullisemmaksi se, että siinä missä kehittäjistä valitettavan harvat ovat naisia, testaajien joukossa taas miehet ovat yllättävän harvinaisia.

Testaajan ammattitaidon keskeisimpiä puolia onkin palautteen antaminen kehittäjille tavalla, joka kannustaa yhteistyön ilmapiiriä. Täysin asiallinenkin palaute saatetaan ottaa henkilökohtaisesti (vaikka kuinka ollaan rationaalisia miehiä!) jos se esitetään väärin. Riippuu myös henkilöstä, voiko tunnelmaa esimerkiksi keventää vai kiristää huumorilla tai kehumalla onnistumisia ("hei, kolme bugia oli sentään ihan oikeasti korjaantunut!"), tai vaikuttaako puhtaan asiallinen palaute tylyltä. Toiset arvostavat mahdollisimman rautalangasta väännettyjä bugikuvauksia ja korjausehdotuksia, toiset haluavat pitää asioiden selvittelyt ja suunnittelut enemmän omana reviirinään.

Siksi testaajalle on tärkeää saada tavata kasvokkain niitä ihmisiä, joiden kanssa tekee töitä. Se ei yleensä ole välttämätöntä projekteihin liittyvän informaation välittämisen kannalta (vaikka usein auttaakin myös siinä), mutta se auttaa ymmärtämään niin kehittäjien kuin projektipäälliköidenkin persoonallisuuksia, sekä antamaan myös näille kuvaa testaajasta ihmisenä eikä pelkkänä bugiraportoijana. Tämä helpottaa yhteistyön sujumista suuresti.

Isossa yrityksessä näiden tapaamismahdollisuuksien järjestäminen voi olla haasteellista. Eri toimipisteissä työskentelevät ihmiset eivät kenties koskaan pääse työnsä puitteissa tapaamaan toisiaan, ja jos toimipiste on kovin iso, sen sisälläkin tapaaminen voi olla yllättävän harvinaista. Silloin on tärkeää, että edes joskus järjestetään koulutus-, kehitys- ja virkistyspäiviä, joiden lomaan voi ujuttaa aikaa siihen, että käy tutustumassa ihmisiin, joiden kanssa tekee töitä. Erilaiset projektien aloitus- ja lopetustapahtumat voivat nekin tarjota tärkeitä tutustumismahdollisuuksia.

Lisäksi sähköinenkin kommunikaatio muuttuu yllättävän paljon inhimillisemmäksi, kun siihen käytetyt sovellukset osaavat näyttää toisen osapuolen valokuvan.

keskiviikko 18. syyskuuta 2013

Hupaisia bugeja

Testaajana saa välillä käyttää luovuutta etsiessään mielekkyyttä omasta työstään. On hirveän masentavaa etsiä virheitä muiden luomuksista, vääntää kättä siitä että nämä ongelmat ovat ihan oikeasti ongelmia, ja esiintyä pessimistinä kun arvioidaan projektin mahdollisuuksia päästä maaliin sovitussa aikataulussa.

Työssään voi kokea aidosti onnistuvansa, kun löytää aikaisessa vaiheessa vakavia virheitä, joiden korjaamiseksi palaveerataan, järjestellään töitä, huokaillaan raskaasti ja tehdään pitkää päivää. Silloin voi riemuita siitä, että mitä varhaisemmassa vaiheessa virhe löytyy, sitä pienempi sen vaikutus on työmäärään ja projektin aikatauluun, jos se vain osataan käsitellä tilanteen vaatimalla tavalla. Ja jos projektin aikataulu viivästyykin, niin sen kanssa on kuitenkin sitä helpompi elää, mitä aikaisemmin tieto asiasta saadaan.

Bugit kun eivät häviä silmät ummistamalla. Tuotantoympäristössä sama virhe voisi aiheuttaa pr-katastrofin niin järjestelmän tilanneelle asiakkaalle kuin sen toteuttaneelle ohjelmistotalollekin.

Toisaalta on kuitenkin hirveän hyvä asia, että tällaisia isoja show stoppereita ei tule ihan joka projektissa vastaan ollenkaan. Silloin voi iloita siitä, että määrityksessä ja suunnittelussa on onnistuttu riittävän hyvin, ja koodarit ovat saaneet keskittyä työhönsä. Testaajan rooliksi jää motkottaa pikkuasioista. Vaikka käyttäjän kannalta monet niistäkin ovat oikeastaan melko isoja asioita.

Joskus ohjelmistovirheistä on helppo löytää myös oma huumoriarvonsa. Usein nämä liittyvät bugeihin, jotka eivät varsinaisesti häritse itse prosessin läpi viemistä, mutta tarkkasilmäinen huomaa että jotain tapahtuu toisin kuin pitäisi. Nauraminen on tietysti sitä helpompaa, mitä kauempana tulevaisuudessa julkaisuajankohta siintää, mutta toisaalta epätoivon hetkilläkin nauraminen saattaa tehdä hyvää.

Kieliversiot ovat perinteisesti asia, jossa jotain pientä unohtuu, ja lopputulos voi näyttääkin sitten yllättävän hassulta. Myös esimerkiksi aikaleimat ja muut automaattisesti luotavat tiedot saattavat elää aivan omaa elämäänsä, samoin kuin vaikkapa tilaisuuksiin liittyvät kellonajat tilaisuuksia siirreltäessä ja kopioitaessa. Joskus kaikkien kenttien sisällöt eivät tallennu oikein, tai tekstissä olevat skandit hajoavat yllättäen.

Yksi hupaisimmista koskaan kuulemistani bugeista oli tapaus, jossa rajapintahaku tyhjensi tietokannan joka yö, mutta haki uudet tiedot vain arkipäiviksi. (Tosin tämän bugin löytyminen tai syyn jäljittäminen tuskin oli hupaisaa kenestäkään prosessiin osallistuneesta.) Myös testattavan ohjelmiston hitaus ja sitkeät sovellusvirheet herättävät joskus ajatuksen, että pitäisikö brändätä slow-food-henkinen ajatus hitaista ohjelmistoista, jotka kannustavat ihmisiä irrottautumaan tietokoneistaan ja kännyköistään, nauttimaan rauhassa aamukahvit, käymään lenkillä ja kohtaamaan toisensa kasvokkain. Parantaisiko se meidän elämänlaatuamme enemmän kuin jatkuva toiminnan tehostaminen?