Testauspäivät @ TUT

Olen Tampereella siis testauspäivien vuoksi. Tein päivän aikana muistiinpanoja ainoastaan kännykkääni ja ajatuksenani oli kirjoittaa myöhemmin illalla puhtaaksi ne muistiinpanot. No, ajattelin, että sama kai ne on kirjoittaa tähän blogiinkin. Jos joku haluaa vaikka lukea. Testauspäivät jatkuvat TTY:llä vielä huomennakin.

Ohjelmistojen testauksesta ja vähän muustakin meille oli puhumassa tällä hetkellä F-Securella työskentelevä Maaret Pyhäjärvi ja entinen Nokialainen, nykyinen Tietoenatorin työntekijä, Erkki Pöyhönen.

Testaus

Aluksi Pyhäjärvi puhui ketterästä testaamisesta. Siinä sovelletaan samoja asioita kuin ketterässä sovelluskehityksessä, mutta ketterä testaaminen ei välttämättä tarvitse ketterää sovelluskehittämistä ympärilleen toimiakseen. F-Secure on nyt toiminut hieman alle vuoden ketterässä ohjelmistokehityksessä, jota edelsi 18 kuukauden pilotointi. Myös testaus on siis ketteröitetty. Mitä tämä hieno, ehkä jopa hypetetty, termi siis tarkoittaa käytännössä? Monia asioita. Kaikki viestintä toimii vaivattomammin.

Perinteisesti on tiimejä, jotka kehittävät softaa ja kun on valmista, niin työ viedään toiseen kerrokseen tai taloon, jossa testaajat iskevät sovellukseen kiinni. Ketterässä testauksessa on muutamia avainkohtia, jotka eroattavat sen perinteisestä toiminnasta. Ensiksikin, ohjelmistokehittäjille viedään paljon testauspaineita. Se vastuunsiirto ei ole nopea, vaan se yksinkertaisesti pikkuhiljaa juontuu siitä keskustelusta, jota testaajat ja kehittäjät käyvät (vähintään kerran pari viikossa). Testaajat kertovat mitä aikovat testata, millaisia tyyppivikoja sen kaltaisissa jutuissa on ollut jne. Kehittäjä voi suoraan tiedostaa potentiaaliset ongelmat ja kirjoittaa koodin periaatteessa testiä vastaan. Ketterien menetelmien kirjallisuudessa kehoitetaankin luomaan testitapaukset ja varsinaiset testit (konkreettiset testit) ennen kuin tehdään yhtään koodausta. Se on ehkä mahdottumuus monissa tapauksissa, tai ainakin muutokseen menee aikaa. Tähän on F-Securella päädytty.

Toisekseen ketterä testaus eroaa perinteisestä siinä, että testaus työntää lonkeroitaan kehittäviin tiimeihin. Joko tiimeissä on ihan joku testaaja-nimikkeellä toimiva henkilö tai sitten siellä on puoliagentti, joka käy ohjelmistokehityspalavereiden lisäksi myös testaajien keskinäisissä palavereissa. Näin kulkee informaatio paremmin siitä, mitä aiottuja muutoksia mahdollisesti tullaan implementoimaan ja jos jotain aiotaan muuttaa radikaalisti. En tarkoita tietenkään sitä, että jos näitä agentteja ei olisi, niin testaajat saisivat aina vaan mustan laatikon eteensä, mutta edellä mainitulla tavalla viestintää parannetaan. Viestintä on hyvin oleelinen osa ketteriä menetelmiä.

Tutkiva testaus (exploration). Tutkiva testaus ei varsinaisesti ole ketterän testauksen ominaispiirre, mutta siinä on monia ketterien menetelmien piirteitä, kuten formaaliuden puute (informaalius? :D). Tarkkojen testirajausten tekoa vältetään ja tutkitaan asioita testaajien kokemuksen ja paranoian ajamana. F-Secure luo kahdenlaisia testiä tukevia tietoja, käyttötapauksia (hyvin tarkkoja ja formaaleita) ja testiosa-alueita. Testin osa-alue voi olla esimerkiksi asennus. Tutkiva testaus mahdollistaa paremmin keskittymisen olennaiseen. Jos regressiotestausta saadaan vielä automatisoitua, kuten ilmeisesti F-Securella on tehty hyvin pitkälle, testaus on myös tehokasta. Tutkiva testaus ei ole mikään uusi hömpötys, vaan sillä on historiaa ainakin yli 20 vuotta.

Maaret antoi myös hyvän esimerkin käyttöliittymätestauksesta. Testaajan on osattava pysähtyä erilaisiin kysymysbokseihin ja valintatilanteisiin ja koitettava hahmottaa se tilanne, minkä hän olettaa seuraavan siitä, kun painetaan ok-näppäintä. Tätä demonstroidakseen hän kävi läpi Microsoft Powerpointista muutamia, jos ei bugeja niin epäloogisuuksia, jotka hyvin havainnollistivat sitä, mistä hän puhui.

Testauksen automatisointi

Ajatelkaapa kuinka kivaa olisi, kun kenenkään ei tarvitsisi testata ohjelmistoja. Koodarit koodaisivat ja tarkistusohjelma tarkistaisi ohjelmistot kaikkien mahdollisten virheiden varalta. Ei enää bugeja tuotteissa ja kuinka nopeaa se olisikaan! Pahaksi onneksi se on kuvitelmaa, fiktiota. Automatisoitua regressiotestausta voidaan nykyään tehdä kohtuullisen hyvin ja luotettavasti. Erilaisia API-rajapintoja voidaan testata automaattisesti. Mutta on paljon asioita, joita ei voida testata automaattisesti tai siinä ei ole järkeä. Automatisoitujen testausohjelmien toimittajat ovat kyllä eri mieltä. No, huomenna tästä aiheesta jatkaa ainakin pari luennoijaa, joten tästä varmaan lisää vielä huomenna.

Kylmiä faktoja ovat kuitenkin seuraavat: Kun testausohjelman käyttöönotosta on kulunut 3 vuotta, se on edelleen käytössä ainoastaan muutamassa prosentissa tapauksia (lähde: jokin tutkimuskeskus, kuten Gartner tai IDC). Toinen tärkeä fakta on, että kolmessa vuodessa testaustyökalujen kokonaishinnasta 75% koostuu ylläpidosta.

F-Securen ketterät menetelmät

Olin jokseenkin yllättynyt, kun Maaret kertoi, että F-Secure käyttää Scrum -menetelmää ketterässä kehityksessään. Se on tunnettu menetelmä ja sen ei olisi pitänyt olla yllätys, mutta mielestäni menetelmä on sen verran rohkea, että en olisi uskonut.. Mutta niin vain on. Maaret itsekin oli ollut itse Scrum-guru Ken Schwaberin opissa, joka oli kuulemma kehottanut hänen pomoaan antamaan hänelle kenkää. No kenkää ei tullut, vaan Certified Scrum Master -plakaati.

F-Secure tosiaan pyörii kuten oppikirjoissa sanotaan. Päivittäin pidetään kehittäjäpalaveri (testauspuolella ilmeisesti 2 kertaa viikossa, näin käsitin), jossa kerrotaan mitä kukin on tehnyt, tekee seuraavaksi ja jos on ongelmia tai mielipiteitä. Projektipäälliköt ovat muuttuneet enemmän projektisihteereiksi – henkilöiksi jotka vastaavat tiimin tarpeista, mutta eivät niinkään siitä, mitä tehdään. Suunnittelijoilla ja ohjelmoijilla (joka on lopulta todennäköisesti sama asia) on enemmän valtaa ja vapautta kuin koskaan, mutta samalla myös enemmän vastuuta (samalla palkalla) kuin koskaan. Kysyinkin Maaretilta, ovatko työntekijät tyytyväisiä. Hän vastasi että suurin osa, varsinkin kehittäjistä, on erittäin tyytyväinen uuteen menetelmään, joka antaa heidän toteuttaa itseään paremmin. Toisaalta kaikille ketterät menetelmät eivät vaan toimi, esimerkiksi voimakkaan kommunikoinnin korostamisen vuoksi, mutta heitä on selkeä vähemmistö. Testaus on F-Securella noussut arvostetuksi asiaksi yrityksen keskuudessa (se ei todella ole itsestään selvää) ja osittain sen takia testaajatkin ovat pääasiallisesti tyytyväisiä ketterään menetelmään, vaikka muissa yrityksissä juuri testaajat voivat kaikkein huonoimmin. F-Secure on parantanut tulostaan ketterien menetelmien käyttöönoton jälkeen, mutta menetelmät ovat olleet vasta niin vähän aikaa käytössä, että selkeiden implikaatioiden muodostaminen on ehkä turhan aikaista.

F-Securella oli ketterien menetelmien pilotointivaiheessa ja sen jälkeenkin ongelmia, jotka johtuivat uuden menetelmän käyttöönotosta ja ilmeisesti myös ihmisistä. Suuri osa ongelmista on kuitenkin saatu ratkaistua, mutta niitä kuitenkin edelleenkin on. Kuitenkin vaellus kohti ketteriä menetelmiä on vääjäämätöntä. Ketterät menetelmät eivät ole vallankumous. Ne ovat ohjelmistokehityksen evoluution tulos, kehitystä vanhoihin työtapoihin. Yrityksissä on huomattu, että nykyisillä työkaluilla on mahdollista saada ohjelmistoversio ulos esimerkiksi joka 2. kuukausi. Sitä myös halutaan, koska siten ohjelmistokehitykseen panostetut rahat saadaan nopeammin takaisin. Paluuta vanhaan ei monella tapaa ole. Täytyy kuitenkin muistaa, että ketterät menetelmät perustuvat vanhoihin periaatteisiin, joita on vain hiottu. Mitään pelättävää ei siis pitäisi kenelläkään olla.

Sekalaista

Liekö PimpMyLaptopin ja SchizoBlogin yhteisen taipaleen aloittajaisbileet menneet niin överiksi, että serveritkin ovat kaatuneet?

Tampereella on kyllä avuttoman hitaat MacDonaldsit. Sen huomasi taas tänään. Olin menossa junalle, varasin 10 minuuttia aikaa, että käyn hakemassa mätöt matkalle mäkistä. No, mäkissä on kaksi kassaa töissä, joista ainakin toinen joku uusi ja homma meni hitaaaaaasti. En saanut kymmenessä minuutissa ruokaa ja homma meni kellon vilkuiluksi. Viimein, kun pääsin tilaamaan, oli pakko ottaa sitä, mitä oli jo valmiina, jotta kerkisin junaan. Näin on käynyt myös aikaisemmin Tampereella mäkissä. Mutta eihän mäkki itseään pikaruokaravintolana taida mainostaakaan.

YO-juhlat on sitten taas tältä vuodelta juhlittu. Onnea vielä Katjalle. Olin siis Tampereella kyseisissä kemuissa. Sää ei aivan suosinut, mutta oli hauskaa ja tutustuin uusiin ihmisiin ja löysin jälleen uuden idolin. Ja edellisestä vierailusta olikin jo vierähtänyt tovi.

Nyt kauppaan. Sunnuntaiaukiolot on mielestäni parasta, mitä koskaan on keksitty. Varsinkaan kesälomalainen ei tiedä, eikä välitä tietää, mikä viikonpäivä on – siksi onkin kivaa, että kauppa on aina auki. Toisaalta, tänä kesänä en olekaan kesälomalainen, mutta se auttaa vain sen verran, että tiedän onko arki vai viikonloppu.

EDIT: Ja paskat. Tänään on sitten ihmisten iloksi päräytetty joku hieno juhlapäivä, eli Helluntai. Heilojen päivä. Tai jotain. No kaupat on sitten kiinni. Miksei Nokian S60 kalenterissa näytetä oikeita tietoja kalenterista, esimerkiksi nimipäiviä ja JUHLAPÄIVIÄ?

Näin muuten Tampereella moniakin ihmisiä jotka harrastivat Kispen kehittämää kotiajan optimointia. Olisi naurattanut, jos en olisi pelännyt itse myöhästyväni.

Se, että baarissa soi Ian Van Dahl, Tiësto, Kai Tracid, Caater jne antoi taas lupaavan kuvan Tampereesta. Juuri sellaista musiikkia, joka on niin pop, että se uppoaa suureen massaan, mutta joka on kuitenkin sellaista, mikä toimii pienessä pöhnässä harrastajaankin. Huhujen mukaan illan mittaan (itse feidasin paikalta) kuultiin mm. Imatran omaa Cosmicmania.. Oikeaa kiksua siis. Tosin soittaja oli Spinnin jäsen, joku Pekka. Propsit hälle.

Sekalaista

Tietääkö kukaan lähdettä sille väitteelle, joka ainakin meillä jollain kurssilla (ehdotettu on johdatus tietojen käsittelyyn -kurssia ja algoritmien suunnittelua, käpistelyn prujusta en sitä ainakaan löytäny), että tietokone ei voi oppia koodaamaan itseään. Tai siis ei pysty koodaamaan automaattisesti. Että ohjelmistotuotantoa ei voida automatisoida. Minusta kun joku aika vahva lause tuota vastaan on ollut jollain luennolla, prujussa tai jossain, mutta kun en millään löydä. Tarvitsisin sen lähteen.

Irc-galleriassa on ilmeisesti yritetty jotain kopiosuojausta laatia noille kuville. Tällä hetkellä Firefox ja Opera 8.54 ei voi tallentaa galleriasta kuvia käyttäjän kiintolevylle. IE ja Opera 9 suoriutuvat tehtävästä moitteetta.

Vähiin käy ennen kuin loppuu

Juuri tässä olen koululla kevään viimeistä harkkatyötä väsäämässä. Tuli sopiva tauko työskentelyyn, kun en oikein tiedä miten edetä ja kysyin assarilta neuvoa :) Anyways, maanantaina olisi sitten samasta aiheesta (käyttöliittymät) tentti ja sitten alkaa kesäloma. Tosin kandityö vähän venähti ja sitä pitää viimeistellä, mutta..

Kunnes 15.5. palaan ruotuun ja työn teko alkaa. Lomaa on siis.. hmm. Monta päivää.

Wipellys

Oltiin eilinen ilta wipeltämässä. Kierrettiin terassilta toiselle ja baarista toiseen alkaen kello 17. Loppupiste oli Doris. Hyvä ilma ja hyvä seura – hauskaa oli. Eikä lähdetty mitään suorittamaan, Rennosti vaan.

Jännä juttu, miten nuo Doriksen loppubileet on poikkeuksetta samanlaisia. Tylsiä. Tuota baarista toiseen kiertämistä olisi voinut jatkaa pitempäänkin. Tunnelma vähän latistui siinä vaiheessa, kun saavuttiin Dorikseen.

Kesätyöt

Koska monia lukijoita ja tuttavia, jotka blogianikin lukevat, kiinnostaa kesätyötilanteeni, niin ajattelin ihan näin kootusti sen kertoa.

Eli olen koululla kesätöissä tutkimusapulaisena tietotekniikan laitoksella alkaen 15.5.

Lisäkseni titelle otettiin 5 tai 6 muuta kesäharjoittelijaa, joiden tehtävänimikkeet voivat vaihdella.

Ohjelmistojen muutosten hallinnasta

Kukaan ei nauti siitä, että ohjelmistojen vaatimukset muuttuvat toteutuksen aikana. Kukaan ei nauti siitä, että työt joudutaan keskeyttämään tutkinnan ajaksi ja kertaalleen toteutettuun koodiin joudutaan palaamaan. Suurin osa ihmisistä ajattelee työtä palasina. Ensin teen tuon, sitten tuon jne. Kun vanhoja juttuja joudutaan kaivamaan auki, tuntuu ikävältä.

Perinteiset vesiputousmalliset kehitystyylit kärsivät juuri tästä. Vaikka työtä tehdään iteratiivisesti (suunnitellaan, toteutetaan, suunnitellaan, toteutetaan…), joudutaan silti palaamaan askelia taaksepäin, kun vaatimukset yhtäkkiä muuttuvat. Vaatimukset muuttuvat aina, se ei ole asiakkaan tai ohjelmistotalon vika. Ohjelmistoilla vaan on sellainen luontainen taipumus, että ne muuttuvat koko toteusprojektin ajan.

Uusissa ketterissä menetelmissä (Agile Software Development) lähestytään muutosta eri tavalla. Perinteisen lineaarisen etenemisen vaikeudet on havaittu ja niitä yritetään nyt parantaa. Perinteisesti koko toteutettava tuote suunnitellaan etukäteen. Valmiiden suunnitelmien mukaan lähdetään toteuttamaan.

Näin ei ole pakko olla. Ketteristä menetelmistä esimerkiksi Scrum tarjoaa erilaista lähestymistapaa. Yhtenä suurena erona on se, että asiakas on koko ajan mukana kehittämässä tuotetta. Tätä kautta asiakkaalla on koko ajan käsitys siitä, missä mennään. Toinen merkittävä ero on kehittäminen inkrementaaleissa.

Scrumin tapauksessa inkrementaalinen kehittäminen tarkoittaa kahta listaa. Listaa tuotteen ominaisuuksista ja listaa inkrementaalin ominaisuuksista. Kun tuotetta aletaan suunnittelemaan, asiakas alkaa listaamaan ominaisuuksia, joita ohjelma tarvitsee. Kun ominaisuuslista alkaa näyttämään melko valmiilta, aletaan suunnittelemaan toteutusta. Asiakas ja kehittäjät valitsevat ominaisuuksista sopivan määrän, jotka siirretään inkrementaalilistalle. Kun inkrementaalilista on lyöty lukkoon, niin sitä ei enää muuteta. Listalle laitetaan ominaisuuksia siten, että niiden toteuttamiseen menee noin 30 päivää.

Samaan aikaan kun ohjelmoijat alkavat suunnittelemaan ja toteuttamaan listaa voi asiakkaalle tulla uusia haluja. Uusia ominaisuuksia ja muutoksia lisätään tuotteen ominaisuuslistaan. Tämä lista elää koko toteutuksen ajan.

30 päivän päästä asiakkaalle esitellään tulos, mitä on saatu aikaan. Asiakas ehdottaa muutoksia ja lisäominaisuuksia, nämäkin kirjataan tuotteen ominaisuuslistaan.

Sitten keräännytään taas asiakkaan kanssa yhteen. Päätetään mitä asioita ominaisuuslistalta (johon on lisätty kaikenlaista) jäädytetään nyt inkrementaalilistaan. Ja taas mennään.

Inkrementaalit pyörivät niin kauan, kunnes tuotteen ominaisuuslista jäätyy. Se siis johtuu pääosin asiakkaasta. Sen jälkeen ohjelmisto viimeistellään (poistetaan esim debugit jne) ja luovutetaan.

Scrumin kaltaiset menetelmät vaativat myös asiakkaalta melko paljon. Mutta toisaalta ne tuovat myös asiakkaan suuntaan sellaista joustavuutta, ketteryyttä, jota peräänkuulutetaan.

Pohdiskelu peräytyy kandidaatintyöhöni, jossa tutkin nykyaikaisia ohjelmistotuotannon menetelmiä.