keskiviikko 27. toukokuuta 2015

Olenko hyvä testaaja

Minulle esitettiin hiljattain suora kysymys: oletko hyvä testaaja?

Kysymys on hyvä, mutta siihen on vaikea vastata. Mistä tunnistaa hyvän testaajan? Miten voi arvioida omaa hyvyyttään testaajana, jos ei pääse juurikaan tekemään töitä hyvien testaajien kanssa, joiden tekemisiin voisi omaa puuhasteluaan verrata? Ja toisaalta, hyvätkin testaajat ovat erilaisia. Jos saisin työskennellä gurun kanssa, joka saisi minut tuntemaan itseni jollain testauksen osa-alueella kädettömäksi, silti saattaisi olla jokin toinen osa-alue, jolla hänellä olisi opittavaa minulta.

Kehittäjiltä saatu palaute on tietenkin yksi mittari. Esim. "keksii luovia tapoja rikkoa asioita" on luonnehdinta, jonka otan kehuna. Myös kysymykset kuten "miten tämän sinun mielestäsi pitäisi toimia" ja "tiedätkö, onko tämä android-puhelinten yleinen virhe" luovat vaikutelmaa, että ammattitaitooni luotetaan. Samoin tuoteomistajilta, projektipäälliköiltä ja asiakkailta tuleva palaute kertoo paljon siitä, miten hyvin työssään onnistuu.

Pohjimmiltaan he ovat kuitenkin kaikki ihmisiä, joiden oma osaaminen kohdistuu johonkin muuhun kuin testaamiseen - ehkä he eivät vain tiedä paremmasta?

Ehkä hyvän testaajan on hyväkin olla hieman epävarma omasta ammattitaidostaan. Olemme kaikki vain ihmisiä. Kuka tahansa saattaa tehdä virhearvioita, olla keksimättä jotain oleellista tapaa väärinkäyttää järjestelmää tai jopa olla tunnistamatta jotakin testauksen osa-aluetta, joka olisi juuri käsillä olevan projektin kannalta äärimmäisen tärkeä. Tästä syystä testaaja ei voi eristäytyä yksin omaan kammioonsa, vaan hänen tulee jatkuvasti löytää uusia näkökulmia työhönsä. Tähän tärkeä väline on keskusteleminen muiden projektin osapuolten kanssa. Joskus yksinkertainen kysymys voi olla vaikuttavampi kuin päivän testausrupeama.

Niin kauan kuin on pienikin epäilys oman osaamisen riittämisestä, mieli etsii aukkoja omasta päättelystä. Ilman tätä uusia oivalluksia ei tule. Olisi vaarallista kuvitella osaavansa ja ymmärtävänsä jo kaiken.

Testausta on monenlaista. Kurinalaisuuden ja järjestelmällisyyden yhdistäminen luovuuteen ja jatkuvaan oppimisprosessiin on haasteellinen kokonaisuus, jossa minkä tahansa kulman laiminlyöminen voi johtaa kalliisiin epäonnistumisiin.

Siksi ei ole yhdentekevää, kuka tuotettasi testaa.

tiistai 12. toukokuuta 2015

Ryhmässä on voimaa, myös testauksessa - oppeja tutkivan testauksen työkurssilta vol 2

Minulla oli ilo päästä osallistumaan Maaret Pyhäjärven järjestämälle Tutkivan testauksen työkurssille. Kerään päivästä käteen jääneitä ajatuksia muutamaankin blogipostaukseen, joista tämä on toinen. Tarkoitus ei ole referoida koulutusta vaan jäsentää omia ajatuksia aiheen tiimoilta, eli tekstit ovat pitkälti omaa tulkintaani ja sen ympärille kietoutuvia ajatuksiani.

Paritestaus

Yksi parhaista puolista koulutuksessa oli mahdollisuus päästä kokeilemaan paritestausta. Siinä ideana on, että kaksi testaajaa työskentelee yhdessä samalla tietokoneella yhteisen tehtävän parissa. Paritestausta voidaan tehdä monella tavalla:
  • Toinen testaa vieressä istujan ohjeiden mukaan
  • Toinen testaa ja vieressä istuja esittää kysymyksiä
  • Testausta ohjataan tasa-arvoisella ideoinnilla (tämä vaatii onnistuakseen melko tasavahvan testaaja-parin, mutta voi onnistuessaan olla hyvinkin hauskaa ja hedelmällistä)
  • Yksi vaihtoehto on myös käydä testitapauksia läpi yhdessä mutta käyttäen eri laitteita

Paritestauksen etuja on mm.
  • Mahdollisuus oppia toiselta testaajalta, millaisiin asioihin testauksessa voi kiinnittää huomiota
  • Dialogin myötä testatuksi tulee sellaisiakin alueita, joita kumpikaan ei olisi yksinään keksinyt
  • Testaamisen flowta ei aina tarvitse keskeyttää bugiraportoinnin takia, kun toinen voi jatkaa toiminnon tutkimista toisen tehdessä muistiinpanoja (tätä kautta tilanteessa, joissa bugeja on suhteellisen paljon, paritestaus ei välttämättä edes vie yhtään sen enempää aikaa kuin jos testaajat testaisivat yhtä aikaa eri asioita)
  • Pari auttaa myös muuten keskittymään käsillä olevaan tehtävään (ulkoset ärsykkeet helpompi jättää huomiotta)
  • Hiljaisen tiedon jakaminen niin, että esim. yhden testaajan sairastuessa projektin testaus ei henkilövaihdosten takia hidastu

Kun testaajapareja on useita

Testasimme kolme 25 minuutin sessiota kolmen parin voimin keräten samalla bugihavaintoja. Tuona aikana vain muutamasta kaikkein ilmeisimmästä bugista tuli päällekkäisiä bugiraportteja, yhteensä erilaisia bugeja löytyi kuitenkin kymmeniä. Maaretin mukaan on ihan tyypillistä, että eri parit lähestyvät testattavaa kohdetta niin eri suunnista, ettei päällekkäistä raportointia juurikaan tule. Näin siinäkin tilanteessa, että kaikilla oli yhteinen varsin tarkkaan rajattu testauksen kohde.

Sessioiden päätteeksi käytiin läpi kaikkien havainnot. Tämä tarjosi taas oppimismahdollisuuksia, kun sai kuulla, mitä kaikkea muut parit olivat keksineet kokeilla. Tulosten yhteinen läpikäynti antaa myös mahdollisuuksia saada laajemman joukon näkemyksiä jatkotestauksen suunnitteluun.

Jos havainnot kerätään esim. post-it-lapuille ja ryhmitellään, on tätä kautta helppo kerätä myös tietoa siitä, mistä osa-alueista bugeja löytyy, ja mihin testausta kenties kannattaa keskittää seuraavaksi. Tutkivan testauksen sessiomme tuotti yli 20 erillistä bugihavaintoa, mikä tekee miltei yhden bugin minuutissa, joten ryhmätyö selkeästi toimii, jos halutaan lyhyen ajan sisällä saada paljon informaatiota testauksen kohteen tilasta.

Itselleni jäi vaikutelma, että tällainen useamman parin tekemä tutkiva testaus on hyvinkin tehokas tapa bugien löytämiseen, kun testataan ajallisesti suhteellisen lyhyissä sessioissa. 25 minuuttia oli ehkä vähän liian lyhyt aika, mutta esim. sessiopohjaisen testausmallin mukainen 90 minuuttia voisi tuntua jo turhankin pitkältä tarkoitukseen.


Paritestauksen ja ryhmätestauksen eduista sekä mahdollisuuksista ryhmäsessioiden toteuttamiseen voi lukea lisää esim. Klaus Olsenin Bug Hunt -materiaaleista.

maanantai 11. toukokuuta 2015

Kuinka testaus kannattaa rakentaa - oppeja tutkivan testauksen työkurssilta vol 1

Minulla oli ilo päästä osallistumaan Maaret Pyhäjärven järjestämälle Tutkivan testauksen työkurssille. Kerään päivästä käteen jääneitä ajatuksia muutamaankin blogipostaukseen, joita toivoakseni saan puhtaaksikirjoitettua vielä lähipäivinä. Tarkoitus ei ole referoida koulutusta vaan jäsentää omia ajatuksia aiheen tiimoilta, eli tekstit ovat pitkälti omaa tulkintaani ja sen ympärille kietoutuvia ajatuksiani.

Kurssi oli rytmitetty niin, että lyhyitä teoriasessioita seurasi aina lyhyt paritestaussessio, jonka tulokset purettiin lyhyesti ennen siirtymistä seuraavaan teoriasessioon. Työskentelytapana tämä oli erinomainen, vaihtelu piti hyvin hereillä ja tekeminen konkretisoi läpikäytyjä asioita. Lisäksi paritestaus soi mahdollisuuden oppia parin tapaa testata, mikä toi mainion lisän kurssin antiin. Suosittelenkin lämpimästi kurssia kenelle tahansa testauksesta kiinnostuneelle.

Testasimme FreeMind-sovellusta, joka on ilmainen Java-pohjainen ideakarttatyökalu. Kukaan kurssille osallistunut ei ollut käyttänyt sitä aikaisemmin, mutta osalla oli kokemusta muista vastaavista sovelluksista.

Ad hoc -testaus

Ensimmäinen testisessiomme oli ad hoc -testausta. Saimme 25 minuuttia aikaa tutustua sovellukseen parhaaksi katsomallamme tavalla. Koska käytettävissä olevan ajan puitteissa ei ollut mielekästä lähteä tutustumaan dokumentaatioon, lähdimme yksinkertaisesti kokeilemaan, miten järjestelmä toimii. Tähän on oleellisesti kaksi mahdollista lähestymistapaa.
  • Miettiä, mihin sovellusta on tarkoitus käyttää, ja lähteä kokeilemaan, kuinka hyvin se tämän tarpeen täyttää
  • Katsoa, mitä toimintoja käyttöliittymästä löytyy, ja lähteä kokeilemaan, mitä ne tekevät
Ad hoc -testaus on hyvä tapa lähteä tutustumaan uuteen testauskohteeseen. Kun testaajalla ei ole juurikaan tietoa testattavasta toiminnallisuudesta, hän on vapaampi tekemään havaintoja. Esimerkiksi käytettävyyteen liittyvät omituisuudet jäävät ehkä helpommin kiinni, jos käyttäjän näkökyky ei ole ohjeiden ja määritysten tuomien odotusten rajoittama - useinhan loppukäyttäjäkään ei ole speksiä koskaan nähnyt. (Tämä ei tietenkään varsinaista käytettävyystestausta korvaa, mutta voi silti olla yksi kustannustehokas tapa parantaa käytettävyyttä.) Myös määrityksen lukeminen testausnäkökulmasta on helpompaa, jos on saanut jo hieman pyöritellä testattavaa järjestelmää.

Huono puoli ad hoc -testauksessa on, että kun toimintaa ei fokusoida millään tavalla, ei ole mitään takeita siitä, että sillä saavutettasiin relevantteja havaintoja. Keskeisiä toiminnallisuuksia saattaa jäädä testaamatta kokonaan, jos ne eivät ole käyttöliittymässä riittävän ilmeisesti tyrkyllä, ja testauksesta raportointi (muuten kuin löytyneiden bugien osalta) on vaikeaa. Lisäksi riski sille, että bugiraporttien joukosta löytyy käyttäjän virheestä tai ymmärtämättömyydestä johtuvia ihmeellisyyksiä, on suurimmillaan kun järjestelmää vain käydään summittaisesti läpi.

Myös käyntiin pääseminen uuden järjestelmän kanssa kestää jonkin aikaa, kun testaaja joutuu pohtimaan, mitä sen kanssa voisi yrittää tehdä ja mihin sitä voisi haluta käyttää, mutta tätä pidän itse väistämättömänä osana testausta. Oppiminen on prosessi joka vie aikaa, ja tehdäkseen hyvin testausta on opittava ja havainnoitava testattavaa kokonaisuutta. Ad hoc -testaus on siis parhaimmillaan testaukseen valmistautumista, ensivaikutelman hakemista testauksen kohteeseen, sekä ajatusten keräämistä testauksen suunnittelun tueksi.

Tavoitteellinen tutkiva testaus

Toiseen testisessioomme saimme tehtäväksi tietyn kokonaisuuden testaamisen. Ohjeena oli puolen sivun kuvaus kokonaisuudesta, joka kertoi, miten siihen pääsi käsiksi, mihin tarkoitukseen se oli rakennettu, sekä listasi siihen kuuluvat keskeisimmät toiminnallisuudet.

25 minuuttia kului nopeasti, ja vaikka toiminnallisuus oli meille uusi, pääsimme heti täysipainoisesti käsiksi työhön. Toki ohjelman toimintalogiikka oli tullut jo edellisen testisession yhteydessä hieman tutuksi.

Toiminnallisuus oli sen verran keskeneräinen, että paritestaus sujui varsin jouhevasti toisen testatessa ja toisen kirjoittaessa ylös havaintoja. Bugeja löydettiin lähes kaksinkertainen määrä edelliseen testisessioon verrattuna, ja tuntuma oli että ne myös olivat käytön kannalta relevantimpia.

Tutkivan testauksen etuja on useita. Tekniikkana se minimoi testaussuunnitteludokumentaation tarpeen viemättä kuitenkaan testaukselta suunnitelmallisuutta ja kurinalaisuutta. Näin vähäinen käytettävissä aika saadaan käytettyä mahdollisimman tehokkaasti, painottaen testausta eikä testausta ohjaavan dokumentaation luomista ja ylläpitämistä. Tutkiva testaus on myös hauskaa, se auttaa testaajaa pysymään valppaana ja tekemään siten myös sellaisia huomioita, joita suunnitteluvaiheessa ei ole osattu ennakoida.

Testaus käyttötapauksia (tai testitapauksia) vasten

Kolmanteen testisessioon saimme taas uuden rajatun kokonaisuuden testattavaksi. Tällä kertaa testauksen tueksi annettiin kahden sivun mittainen vaatimusmääritys, joka oli kirjoitettu luettelemalla kokonaisuuden keskeiset toiminnallisuudet sekä kuvaamalla askeleittain niistä jokaisen käyttö.

Kuten odottaa saattoi, mitä orjallisemmin testaajat seurasivat määritystä, sitä vähemmän bugeja löytyi. Määrityksessä kuvatut toiminnot pystyi kaikki viemään läpi virheittä. Kuitenkin niiden ympärille oli rakennettu käyttöliittymään yhtä jos toista, jonka käyttötarkoitus ei ollut käyttäjän näkökulmasta ollenkaan itsestäänselvä, eikä niiden kokeileminen vakuuttanut siitä että toiminnot olisivat valmiita. Kaiken lisäksi listan loppupäässä kuvattiin toiminnallisuuksia, joiden käyttäminen teki testimateriaalista oleellisesti monimutkaisempaa, ja täten tiettyjä listassa aikaisemmin kuvattuja toimintoja olisi syytä testata uudelleen listan läpikäymisen jälkeen. Tähän ei kuitenkaan testisession antaman ajan puitteissa ollut mahdollisuutta. Kenties testaus olisikin kannattanut tehdä takaperoisessa järjestyksessä.

Todettiin, että tällaista dokumettia voi käyttää testauksessa hyödyksi muutamallakin tavalla
  • Dokumentti kuvasi keskeisten toimintojen käytön, joten se toimi tapana perehdyttää testaaja testattavaan kokonaisuuteen.
  • Tällaista dokumenttia voisi jopa käyttää rajaamaan testauksesta pois dokumentin kuvaamat toiminnot. Työnsä vakavasti ottava kehittäjä on todennäköisesti testannut ne jo. (Pidemmän määrityksen kanssa näin ei luonnollisestikaan voida toimia. Tässä tapauksessa dokumentti näytti siltä kuin se olisi kirjoitettu pintapuolisen testauksen ohessa ikään kuin käyttöohjeeksi toiminnoille.)
  • Mikäli dokumentti kuvasi korkeimman prioriteetin toiminnallisuudet, sitä voisi käyttää eräänlaisena muistilistana, johon palata myöhemmässä testauksen vaiheessa sen tarkistamiseksi, onko oleellisimmat toiminnallisuudet testattu riittävän perusteellisesti ja riittävän myöhäisessä vaiheessa. Esim. regressiotestauksen suunnitteluun se voisi olla toimiva työkalu.
Samat hyödyt voitaisiin kuitenkin saavuttaa muillakin tavoin. Esimerkiksi demosessiossa, jossa kehittäjä esittelee testaajalle rakentamansa toiminnallisuuden, testaaja saa sekä perehdytyksen toiminnallisuuteen että käsityksen siitä, mitä toimintoja kehittäjä on testannut. Tällaisen istunnon lisäetuna olisi testaajan mahdollisuus esittää kysymyksiä, jotka voisivat johtaa joko testaajan entistä parempaan testaukseen, tai siihen että kehittäjä löytäisi toteutuksestaan korjattavaa jo ennen varsinaisen testauksen alkua.

Mitä jäi käteen

Sekä päivän aikana käyty keskustelu että käytännön harjoitukset tukivat käsitystäni, että tehokkain tapa löytää bugeja on nimenomaan tavoitteellinen tutkiva testaus. Tämä ei kuitenkaan tarkoita, että tutkiva testaus olisi ainoa tekniikka, jota kannattaa käyttää. Ad hoc -testauksella on myös oma arvonsa haluttaessa löytää järjestelmään uusia näkökulmia. Lisäksi määritettyjen toiminnallisuuksien läpikahlaamiseen sekä työn priorisointiin myös rakenteeltaan melko perinteinen testaussuunnittelu puolustaa paikkaansa, kunhan suunnittelu tehdään järkevästi, riittävän karkealla tasolla. Yksityiskohtaiset ohjeet kun toimivat kuin laput silmillä, vaikeuttaen muiden asioiden huomioimista.

Myös paritestaus sekä testauksen jakaminen eri teeman ympärillä pyöriviin sessioihin vaikuttivat toimivilta tavoilta hakea tehoja testaukseen.

Myös testauksen automatisoinnista keskusteltiin lyhyesti. Erityisesti yksikkötestipuolella automatisointi on erinomainen väline, mutta järjestelmätestauspuolella sen käyttö on jossain määrin kyseenalaista. Automaation rakentaminen vie moninkertaisen ajan verrattuna manuaaliseen testaukseen, ja automaattitestien ylläpitäminen järjestelmän muuttuessa on työlästä. Tämä ei kuitenkaan tarkoita, etteikö automaattitesteilläkin voisi olla paikkansa myös järjestelmätestausvaiheessa. Kaikkea ei aina ole edes mahdollista testata käsin käyttöliittymästä, ja lisäksi joskus testiautomaatiota on mahdollista pienin variaatioin monistaa tavalla, joka parantaa testikattavuutta tai helpottaa testimateriaalin luomista niin, että testien kirjoittamiseen käytetty aika saadaan ainakin osin kompensoitua niiden ajamisen nopeudella. Lisäksi suhteellisen muuttumattomien kokonaisuuksien testauksen automatisointi voi tuoda regressiotestaukseen merkittävän avun. Oleellista automatisoinnissa onkin analysoida, missä siitä saavutetaan suurin hyöty, sekä tietenkin ymmärtää, ettei se yksin riitä testattaessa järjestelmiä, joita ihmisten on tarkoitus käyttää.

Mustalaatikkotestaus ja testauksen kattavuus

Testaukseen on monenlaisia tekniikoita. Yksi tapa jaotella testaustekniikoita on jako ns. mustalaatikkotekniikoihin ja lasilaatikkotekniikoihin sen mukaan, onko testaajalla pääsy testattavaan koodiin vai ei.

Silloin tällöin vastaan tulee käsityksiä, joiden mukaan mustalaatikkotekniikat olisivat huonompia, ja esimerkiksi listattessa mittareita testauksen kattavuudelle usein luetellaan asioita, jotka liittyvät nimenomaan lasilaatikkotestaukseen.

Itse näen vastakkainasettelun mielettömänä. Molempia tarvitaan.

Niin hienoa kuin testaajana olisikin helpottaa kehittäjien työmäärää, loistavakaan mustalaatikkotestaaja ei poista tarvetta kehittäjän tekemälle testaukselle. Samalla loistavakaan kehittäjä ei poista tarvetta käyttäjänäkökulmasta tehdylle järjestelmätestaukselle. On vaarallista olettaa, että toinen korvaa toisen. Jos on järjestelmä, jota elolliset olennot tavalla tai toisella käyttävät, on sitä koekäytettävä mahdollisimman realistisissa olosuhteissa, jotta voidaan varmistua, että se toimii myös tuotantokäytössä, eikä tämän koekäyttämisen kannalta ole oleellista nähdä koodia. Samalla kuitenkin koodi voi sisältää virheitä, jotka jäävät helposti kiinni vaikkapa koodikatselmoinnissa, mutta mustalaatikkotestaaja tarvitsee satumaisen tuurin osatakseen valita testaukseen juuri ne arvot, joilla virhe ilmenee.

Mitä muita tapoja siis on arvioida testauksen kattavuutta kuin koodikattavuus? Mustalaatikkotestauksen kattavuutta voidaan lähestyä esim. seuraavanlaisista näkökulmista:
  • Vaatimuskattavuus. Onko kaikki sovitut ominaisuudet toteutettu, ja toimivatko ne siinä käyttötarkoituksessa johon niitä tarvitaan? Hyvän kehittäjän mind set on yksinkertaistava, ja joskus tulee yksinkertaistettua liikaa, jolloin toteutettu kokonaisuus ei enää vastaakaan siihen tarpeeseen, johon se tilattiin. Joskus joku kokonaisuus voi myös yksinkertaisesti unohtua. Vaikka testaisit koodin kuinka perusteellisesti, tämäntyyppiset virheet voivat jäädä huomaamatta.
  • Prosessikattavuus. Menevätkö kaikki prosessit läpi alusta loppuun todellisilla käyttäjärooleilla? Pääsevätkö käyttäjät käsiksi tarvitsemiinsa tietoihin ja toimintoihin, tai näkevätkö he sellaisia tietoja tai toimintoja joihin heillä ei pitäisi olla oikeuksia?
  • Tilasiirtymäkattavuus. Etenevätkö prosessit tilasta toiseen ja työlistalta toiselle kuten pitääkin? Toimivatko tilasiirtymät myös muihin suuntiin kuin suoraviivaisesti eteenpäin, esim. asian palauttaminen käsittelyn edelliseen vaiheeseen? Onko prosessin etenemiseen vaikuttavia raja-arvoja, kuten kurssipaikkojen täyttyminen ja siirtyminen varasijojen täyttämiseen, tai tietyn summan tai painorajan jälkeen muuttuvat postituskulut?
  • Toiminnallisuuskattavuus. Toimivatko kaikki käyttöliittymästä löytyvät toiminnallisuudet niin kuin pitääkin? Esimerkiksi erilaisten listanäkymien sivutukset, suodatukset ja järjestämiset sekä hakutoiminnot ovat esimerkkejä toiminnallisuuksista, joista löytyy paljon testattavaa, mutta joista ei välttämättä määritysvaiheessa sovita yhtään mitään.
  • Selain- tai laitekattavuus. Web-sovellusta tehtäessä kehittäjä ehkä testaa kaiken vain Chromella. Testaajalle jää selvittää, että myös muut vaaditut selaimet ja myös mobiililaitteet toimivat. 
Testausta ei myöskään tarvitse ajatella vain teknisenä asiana. Järjestelmiä käyttävät ihmiset, joista monet ovat kaikkea muuta kuin teknisiä. Siksi testaukseen voi - ja on syytäkin - hakea ideoita myös muualta.

Muita ajatuksia testauksen kattavuuden arvioimiseen voi löytää esim. seuraavista linkeistä:

sunnuntai 3. toukokuuta 2015

Hakutoiminnon testaus

Hakutoimintoja on erilaisia, ja siksi niiden testauskin on tilannesidonnaista. Tässä kuitenkin listaus asioista, jotka voivat olla relevantteja hakutoimintoa testattaessa.

Haun testaamista hankaloittaa mustalaatikkotestaajan näkökulmasta se, että hakutulokset riippuvat siitä joukosta, johon haku kohdistuu. Testaajan voi olla vaikea saada riittävästi tietoa tuosta joukosta sen arvioimiseksi, löytääkö haku varmasti kaikki tulokset joita sen pitäisi löytää. Usein kuitenkin on mahdollista kokeilemalla ja tuloksia tarkastelemalla saada hyvä käsitys haun toimivuudesta. Asioita, jotka eivät näy helposti hakutuloksista, mutta joita kuitenkin on mahdollista arvioida, on esim. löytääkö haku tuloksia kaikista sivuston sivuhaaroista.

  • Antaako haku tuloksia? Ovatko hakutulokset uskottavia?
  • Vaikuttaako hakutermien vaihtaminen tuloksiin?
  • Sisältävätkö tulokset käytettyjä hakutermejä niissä kentissä, mihin haku kohdistuu? Ovatko kenttien painoarvot oikein, esim. tyypillisesti sivun nimessä oleva sana saa isomman painoarvon kuin leipätekstistä löytyvä. Kohdistuuko haku kaikkiin kenttiin joihin sen pitäisi?
  • Kohdistuuko haku useampiin sisältötyyppeihin (esim. sisältösivut + liitetiedostot)? Jos näin, löytääkö se tuloksia kaikista sisältötyypeistä?
  • Mitä tietoa hakutuloksista näytetään hakutuloslistauksessa? Onko se relevanttia käyttäjälle? 
  • Näytetäänkö hakutuloksista tietoja, joihin käyttäjällä ei pitäisi olla oikeuksia?
  • Näytetäänkö hakutuloksina kohteita, joihin käyttäjällä ei ole oikeuksia?
  • Onko käyttäjän mahdollista vaikuttaa hakutuloksista näytettäviin tietoihin tai järjestää hakutuloksia? Toimivatko nämä toiminnot?
  • Tulosten sivuttuminen ja sivutuksen selaaminen? Pysyykö hakutulosten järjestys? Saako kaikki tulokset myös samalle sivulle, tai voiko yhdellä sivulla näytettävien tulosten määrää vaihtaa?
  • Voiko hakutuloksia edelleen suodattaa? Toimiiko se?
  • AND OR NOT haut ja näiden yhdistelmät? Asteriskin käyttö? Pitääkö haun löytää myös esim. hakusanojen taivutusmuotoja?
  • Erikoismerkkien käyttö?
  • Onko hakutoiminnossa alasvetovalikoita, checkboxeja tms? Ovatko kielitermit paikoillaan, toimivatko eri hakukriteerit ja niiden yhdistelmät? Jos hakutoiminto sisältää päivämäärähaun, käyttääkö se oikeaa formaattia ajasta?
  • Voiko hakukriteerit tyhjentää? Voiko sen jälkeen tehdä uuden haun?
  • Löytääkö haku uusia tai hiljattain muuttuneita hakukohteita?
  • Mitä tapahtuu, jos haku ei palauta tuloksia?
  • Näytetäänkö hakutulosten lukumäärä? Onko se riittävän oikea?
  • Pääseekö samaan hakuun useammasta paikasta? Antavatko samat hakutermit eri paikoista käytettynä samat tulokset?
  • Saako hakutuloksen avattua? Pitäisikö siitä voida palata hakutulokseen?


lauantai 2. toukokuuta 2015

Layoutin testaus

Nettisivuston ulkoasu on osa brändin rakentamista. Siksi myös ulkoasun virheettömyys on tärkeää. Oman haasteensa testaukseen tuo se, mobiililaitteiden merkitys netinkäytössä kasvaa koko ajan, ja mobiililaitteiden kirjo on valtava. Ulkoasu ei myöskään aina tarkoita vain sitä, näyttääkö jokin näkymä kivalta, vaan joskus ulkoasuvirheet voivat myös piilottaa informaatiota tai toiminnallisuuksia.

Ulkoasun oikeellisuus on helpointa verifioida luomalla testisivuja täsmälleen visuaalisen suunnitelman mukaisilla sisällöillä. Tällöin virheet väreissä, fonteissa, kuvapaikkojen ja ikonien koossa, elementtien keskinäisessä sijoittelussa, marginaaleissa jne. on suhteellisen helppo huomata yksinkertaisesti vertaamalla visuaaliseen suunnitelmaan. Kuvasta kannattaa etsiä linjoja, joiden avulla voit tarkistaa eri elementtien keskinäisen asemoinnin, esim. vierekkäisten palstojen otsikkopalkkien ylä- ja alareunat, tai näyttääkö teksti tai kuva keskitetyltä pysty- tai vaakasuunnassa. Tarkista myös, onko käyttöliittymän eri osien välillä esim. vaaka- tai pystyviivoja erottamassa elementtejä toisistaan, ja jos näillä elementeillä on esimerkiksi keskenään erilaiset taustavärit, vaihtuuko taustaväri täsmälleen tuon erottavan viivan kohdalla vai ei. Jos tekstien eteen tulee jossain checkboxeja tms. listamerkkejä, tarkista niiden asemoituminen suhteessa ko. rivin tekstiin. Muista myös hover-efektit, aktiiviset linkit ja käydyt linkit, sekä milloin hiiren kursori indikoi alla olevan linkin.

Lisäksi on tärkeää luoda testisivuja, joiden sisällöt eivät ole ihan niin nättejä.

Tyypillisiä esimerkkejä tilanteista, jotka luovat ulkoasuongelmia, ovat

  • tavanomaista pidemmät sanat
  • rivittyvät kuvatekstit
  • rivittyvät linkin nimet
  • bannerien määrän muuttuminen
  • eri määrä sisältöä vierekkäisissä listaelementeissä
  • kuvattoman uutisen julkaisu listalla, joka näyttää uutisista ingressikuvia
  • kuvagallerian kuvien rivittyminen niin että viimeinen rivi ei ole täynnä kuvia
  • bulletpoint-listat rivittyvillä tekstinpätkillä

Lisäksi huomio kannattaa kiinnittää myös seuraaviin

  • Onko käytössä eri tyyppisiä mutta keskenään saman näköisiä listaelementtejä (esim. blogilista, uutislista, tapahtumalista)? Jos niitä näytetään samalla sivulla, ovatko marginaalit yms. oikeasti samanlaiset?
  • Kieliversiot ja niihin liittyvien merkistöjen näkyminen. Nappien tekstien mahtuminen nappeihinsa.
  • Sivujen leveydet. Onko esim. jollain sivulla "turha" vierityspalkki kertomassa, että sivu onkin leveämpi kuin sen pitäisi
  • Sivukarttasivu, hakutulossivu, palautelomakesivu yms. Näistä ei aina ole visuaalista suunnitelmaa olemassa, mutta yhtä kaikki niidenkin tulisi näyttää hyvältä.
  • Elementtien kulmien pyöristykset, liukuvärit
  • Murupolku

Responsiivista sivustoa testattaessa tarkista myös mm.

  • Pysyykö kuvien kuvasuhde vakiona eri selaimen leveyksillä? Venyvät kuvat eivät ole hyvää brändin rakentamista
  • Navigaation saavutettavuus

Mitä muuta testaisit?

perjantai 1. toukokuuta 2015

Lomaketestaus

Alla muistilistaa asioista, jotka voivat olla relevantteja testattaessa täytettäviä www-lomakkeita mutta myös muita toiminnallisesti vastaavia kohteita kuten erilaisia tietokortteja. Lista ei ole täydellinen, se ei esim. ota kantaa tietoturvaan liittyviin asioihin kuten sql-injektioihin tai captcha-toiminnon testaamiseen. Toisaalta se on myös ehkä jo turhankin pitkä testisession tueksi. Millaista listaa itse käyttäisit?

  • Löytyvätkö vaaditut kentät? Onko ne nimetty oikein? Onko ylimääräisiä kenttiä?
  • Onko pakollisia kenttiä? Onko ne merkitty asteriskein? Voiko lomakkeen merkitä valmiiksi täyttämättä pakollisia kenttiä? Onko ehdollisia tai vaihtoehtoisia vaatimuksia, ja toimivatko ne oikein kaikissa tilanteissa?
  • Validoidaanko syötteiden sisältöjä, esim. sähköpostiosoitteen muoto? Toimivatko validoinnit? Esim. puhelinnumeron voi syöttää monella tavalla, välilyönneillä, väliviivoilla, maakoodilla,..
  • Onko päivämäärä/kellonaika-kenttiä? Missä formaatissa aika syötetään niihin ja validoidaanko syötteitä?
  • Onko rajoitteita käytettävistä merkeistä, ja miten se toimii?
  • Kuinka monta merkkiä kenttään voi syöttää? Kulkeeko maksimimerkkimäärä myös rajapinnan yli ja tallentuuko se tietokantaan oikein?
  • Checkboxit, radiobuttonit
  • Voiko käyttöliittymässä lisätä kenttiä? Voiko niitä poistaa, järjestää tai vaihtaa toisenlaisiin? Hajoaako käyttöliittymä tätä kokeiltaessa? Poistuvatko oikeat kentät, tulevatko lisättävät kentät oikeaan paikkaan?
  • Voiko käyttäjä lisätä kuvia tai liitetiedostoja? Sallitut tiedostotyypit? Tiedostojen sallitut koot? Voiko dokumentteja liittää useita? Voiko liitettyjä dokumentteja poistaa? Onko tiedostonlisäyskontrolleja yksi vai useampia? Jos useampia, toimivatko ne toisistaan riippumattomasti? Mitä käyttöliittymälle tapahtuu tiedostoja lisättäessä ja poistettaessa?
  • Onko lomakkeella ohje-toiminnallisuuksia? Ovatko ne siellä missä pitääkin ja toimivatko ne?
  • Onko lomakkeella linkkejä? Vievätkö ne sinne minne pitääkin?
  • Voiko kentästä toiseen liikkua tabulaattorilla? Voiko kaikki kentät täyttää näin? Mitä tapahtuu jos käyttäjä painaa enteriä?
  • Onko sivuja useampia kuin yksi? Voiko eteen ja taakse liikkua menettämättä täytettyjä tietoja?
  • Onko esikatselutoimintoa? Näyttääkö se kaikki tiedot oikein? Voiko siitä palata muokkaamaan tietoja? Jäävätkö muokkaukset voimaan?
  • Onko toimintoa kenttien tyhjentämiseen? Tyhjentääkö se ne kaikki? Ovatko ne tyhjiä myös esikatselussa ja lähetettäessä?
  • Toimiiko lähettäminen? Mitä sen jälkeen tapahtuu, mitä käyttäjälle näytetään? Toimiiko tulostaminen? Tuleeko sähköpostivahvistus ja sisältääkö se tarvittavat tiedot?
  • Onko kieliversioita?
  • Tuetut selaimet ja laitteet?