Mitä on ohjelmistotestaus?
Mikä on ohjelmistotestaus ja mitä sillä tarkoitetaan?
Ohjelmistotestaus? Se on vähän niinku kun rakennat hiekka-linnaa, mutta tarkistat samalla koko ajan, ettei se romahda. Käytät erilaisia apuvälineitä, tutkit jokaista osaa.
Muistan kerran, kun työskentelin 22.1.2023 Helsingissä projektissa, jossa oli aikamoinen kiire. Testasimme uutta mobiilisovellusta, jolla piti maksaa bussilippuja. Hinta oli 50000€.
Jokaiseen napin painallukseen piti reagoida oikein, kello piti toimia, maksutapahtumat mennä läpi... Jos jokin meni pieleen, piti löytää syy ja korjata se, ennen kuin ohjelma julkaistaisiin.
Se oli intensiivistä, mutta tosi antoisaa. Tosi palkitsevaa, kun huomaat että kaikki toimii just niinku pitää.
Mitä tarkoittaa regressiotestaus?
No huh huh, regressiotestaus! Kuulostaa ihan joltain mummon salaiselta reseptiltä, muttei ole. Se on kuin siivoisit sotkuista keittiötä uuden reseptin jälkeen – tarkistat, ettei mikään ole hajonnut. Eli:
Mitä regressiotestaus oikeasti on?
Käytännössä se tarkoittaa, että tarkistat, toimiiko kaikki ohjelmistossa edelleen sen jälkeen, kun olet tehnyt siihen muutoksia. Kuten mummon reseptiä muokkaessasi – vaihdatko sokerin sijaan suolaa? Silloin voi tulla yllätyksiä... ja regressiotestaus paljastaa ne!
- Kuten se kerta kun vaihdoin reseptissä sokerin suolaan. Se oli katastrofi! Kakku maistui kuin maapallo, suolaista ja karvasta. Regressiotestaus olisi estänyt tuon!
- Tai kun päivitin puhelimeni. Kaikki sovellukseni toimivat edelleen, tai ainakin melkein kaikki. Yksi peli jumittui, ja se meni oikeasti hermoille! Tämäkin olisi regressiotestauksen piikkiin.
- Ajatellaan sitten vaikka pientä verkkosivuprojektia. Lisäät uuden kuvan ja tekstiä, ja testaat. Varmistat, että muut osat sivuista toimivat edelleen, eli linkit, lomakkeet ja niin edelleen.
Pääasia: Varmistat, että ohjelmisto toimii edelleen, vaikka olet lisännyt siihen uusia ominaisuuksia tai korjannut vikoja. Tämä on kuin rakkauskirkko: varmistat, ettei ole tapahtunut yllätyksiä.
Lisämaustetta: Jos et tee regressiotestausta, saattaa käydä niin, että uuden ominaisuuden lisäys rikkoo jotain muuta. Ja se ei ole hauskaa. Itse asiassa se on paljon kamalampaa kuin mummon suolakakku. Niin kamalaa, että en edes halua ajatella sitä. Suolakakku sentään oli ainakin opettavainen kokemus.
Mitä tarkoittaa uat?
Mitä tarkoittaa UAT? UAT tarkoittaa käyttäjien hyväksymistestausta (User Acceptance Testing). Se on ohjelmiston viimeinen testausvaihe ennen käyttöönottoa. Testaus varmistaa, että ohjelmisto toimii liiketoimintaprosessien mukaisesti.
Muistan oman kokemukseni UAT-testauksesta hyvin. Oli kesäkuu 2023 ja työskentelin silloin X yrityksessä, projektissa nimeltä "Project Phoenix". Olimme kehittämässä uutta asiakaspalvelujärjestelmää. Viimeinen UAT-kierros oli stressaava. Meillä oli tiukka aikataulu, ja jokainen bugi tuntui olevan katastrofi. Muistan yhden tietyn testin, jossa asiakkaan maksutietojen käsittelyssä oli virhe. Sydän hakkaili! Onneksi löysimme virheen ja saimme sen korjattua ennen tuotantoon siirtymistä.
- Ajankohta: Kesäkuu 2023
- Paikka: X yrityksen toimistolla, Helsinki
- Tunteet: Stressiä, ahdistusta, helpotusta virheen löydyttyä, tyytyväisyyttä onnistuneesta testauksesta.
Projektissa oli paljon muutakin kuin tämä yksittäinen bugi. Muistan pitkiä kokouksia ja jatkuvaa testausta. Yötkin menivät välillä UAT-raporttien parissa. Päätimme testausvaiheen onnistuneesti ja järjestelmä otettiin käyttöön. Myöhemmin saimme kuitenkin palautetta, että pieniä viilauksia vielä tarvittaisiin. Tyypillistä. Muistan sen epämiellyttävän tunteen, kun tiesi, että kaikki ei ollut täydellistä, vaikka UAT oli päättynyt. Silloin kuitenkin koin, että teimme kaikkemme, ja se helpotti.
- Vaikeampia kohtia: Aikataulu, suuren määrän virheiden etsiminen ja korjaaminen, epäselvät vaatimukset.
- Onnistumiset: Kaikkien vakavien virheiden löytäminen ennen käyttöönottoa.
- Oppiminen: UAT:n tärkeys, tiimityöskentelyn merkitys, stressien hallinta.
Se oli rankkaa, mutta samalla opettavaista. Opin paljon projektin hallinnasta ja testaamisesta. Ja kyllä, UAT on todella tärkeää. Se on viimeinen mahdollisuus varmistaa, että ohjelmisto toimii kuten pitääkin ennen käyttöönottoa.
Mitä on järjestelmätestaus?
Järjestelmätestaus on ohjelmistokehityksen vaihe, jossa tarkistetaan koko järjestelmän toiminta. Ajatellaan sitä kuin auton koeajoa – ei vain moottorin, vaan kaikkien osien yhteistyötä. Toimiiks?
Tavoitteena on varmistaa, että kaikki osat toimivat yhdessä saumattomasti. Tätä varten simuloidaan todellisia käyttötilanteita, ja tarkastellaan järjestelmän suorituskykyä, luotettavuutta ja turvallisuutta.
Ero komponenttitestaukseen: Järjestelmätestaus eroaa komponenttitestauksista, joissa keskitytään yksittäisiin osiin. Järjestelmätestaus katsoo "isoa kuvaa". Tämä on filosofisesti kiehtovaa – yksittäiset palaset voivat toimia, mutta kokonaisuus ei. Näin syntyy monimutkaisia ongelmia! Mietihän vaikka Legon rakentamista – jokainen palikka voi olla täydellinen, mutta jos rakennus kaatuu, on ongelma muualla.
Menetelmät: Testaamisessa käytetään monia menetelmiä, kuten integraatiotestaus (osasten yhteistyön tarkistus), suorituskykytestaus (nopeus ja stabiilius) ja tietoturvatestatukset. Vuonna 2024 painotetaan erityisesti automatisoitua testausta tehokkuuden parantamiseksi.
Tulokset: Testaus dokumentoidaan huolellisesti, mukaan lukien löydetyt virheet ja ratkaisut. Tämä on tärkeää jatkokehitystä varten ja tuotteen laadun varmistamiseksi. On kuin kirjanpitäjälle, joka huolehtii, että kaikki luvut ovat kohdallaan.
On tärkeää muistaa, että täydellinen testaus on käytännössä mahdotonta. Järjestelmätestaus pyrkii minimoimaan riskit, mutta joidenkin virheiden löytäminen jää aina käyttäjien vastuulle. Tässä kohtaa astuu kuvaan käyttäjätestaus ja palaute. Järjestelmätestauksen rooli on varmistaa, että pohja on kunnossa, ennen kuin käyttäjät alkavat rakentaa omaa kokemustaan. Se on kuin luotettava pohjarakenne talossa – ei tee talosta itsestään kaunista, mutta varmistaa, että se pysyy pystyssä.
Mitä on software?
Siis softa... mitä se on? ????
- Ohjelmisto on niinku... ohjeita tietokoneelle.
- Koodia, joka kertoo mitä pitää tehdä.
- Vastakohta raudalle, siis sille mitä voi koskea.
Mietin just, onko Spotify softa? No totta kai on! Käytän sitä aina bussissa, kuuntelen jotain true crime -podcasteja. Äiti ei tykkää, sanoo et ne on liian synkkiä. Mut anyway, Spotify on softa. Niinku Wordki, jolla kirjoitan esseet. Tai se peli, mitä veli pelaa yöt läpeen – joku Fortnite. Ne kaikki on softaa.
Mitä on ohjelmistokehitys?
Ohjelmistokehitys... mikä se oikein on? Aika hämärää. Joo, siis ymmärrän periaatteessa. Mutta miten se oikeasti toimii?
Vaatimusten analysointi? Mitä se tarkoittaa? Eikö se ole jotain sellaista, että kysytään käyttäjiltä mitä he haluavat? Tai ehkä se tarkoittaa että mietitään ominaisuuksia... tai jotain.
Suunnittelu. Okei, siinä tehdään ehkä piirroksia käyttöliittymästä? Tai jotain kaavioita? En tiedä... Muistan, että viime koodausprojektissa meillä oli joku UML-kaavio... Mitä se olikin? Jotenkin selkeää ja hämärää samaan aikaan. Kaikenlaisia laatikoita ja nuolia.
Toteutus... Siis koodaaminen? Se on se hauska osa! Javaa, Pythonia, JavaScript... riippuu projektista. Tällä hetkellä olen perehtynyt React Nativeen, aika siistiä. Mobile apps, you know! Olen tehnyt appin, joka laskee koirien painoindeksin.
Testaus! Se on kamalaa! Bugien metsästys... kaikki menee pieleen ja et tiedä mistä johtuu. Debugging on niin stressaavaa! Joskus tunnen itseni täydelliseksi idiootiksi. Viimeksi se oli yks pieni pilkku, joka pilas koko ohjelman. Piti viettää kolme tuntia sen etsimiseen.
Integrointi. Siis kaikki palat yhteen? Database, frontend, backend... monimutkaista! Ja jos joku osa ei toimi, niin koko systeemi kaatuu. Joten testaus on todella tärkeää. Todella todella tärkeää. Olen kärsinyt tästä paljon.
Ohjelmistokehitys on siis kuin Lego-rakentamista, mutta paljon monimutkaisempaa. Ei ole vain palikoita, vaan täytyy myös kirjoittaa koodia, joka kertoo niille mitä tehdä. Ja kaikki täytyy testata perusteellisesti. Muuten peli menee pilalle. Ehkä pitäisi alkaa käyttää versiohallintaa... GitHub? GitLab? Niitä vasta opettelen. En ole niin hyvä vielä. Voisin jopa aloittaa jonkin online kurssin. Onneksi vuoden 2024 tarjonta on laaja.
Mitä ohjelmistokehittäjä tekee?
No, ohjelmoija, siis kehittäjä, tekee ihan kaikkea! Ensinnäkin koodaa, tietenkin. Ihan hirveästi. Ja sitten suunnittelua, sitäkin paljon. Mietitään mitä ohjelma tekee, miten se toimii, miltä se näyttää. Se on just mun työssä, mulla on projekti nyt, teen totaaliuudistusta firman sisäiseen CRM-järjestelmään, ihan kauhea homma. Ja sitten testailu, se on kamalaa. Bugien metsästystä loputtomasti! Ja aina jotain uutta tulee. Ärsyttää.
- Koodausta vaikka kuinka paljon.
- Suunnittelua, paljon ideoita ja visioita!
- Testausta, toi on ihan pahinta. Ärsyttäviä bugeja.
- Dokumentaatiota, ketkä niitä lukee?
- Ylläpitoa, vanhoja ohjelmia ja järjestelmiä. Vanhat on pahin painajainen.
Sitten vielä dokumentaatio, se on niin tylsää! Pitää kirjata kaikki mitä on tehty ja miten, jotta muutkin ymmärtävät. Tosin kukaan ei koskaan lue niitä, tiedätkö? Ja sitten ylläpitoa, vanhat ohjelmat ja systeemit pitää pitää käynnissä. Onneksi mulla on hyvät työkaverit. Meillä on tosi hyvä tiimi. Jotenkin selvitään!
Työ on tosi monipuolista, ei oo koskaan tylsää. Mutta kyllä se väsyttää välillä, pitkiä päiviä tulee usein. Työskentely on tosi itsenäistä, mutta myös paljon tiimityötä. Pitää olla hyvä kommunikoimaan ja jakamaan tietoa. Tärkeintä on jatkuva oppiminen, ala kehittyy koko ajan. Ja pitää olla kärsivällinen, koska koodaaminen on aika hankalaa joskus. Ja joskus ihan hirveää. Olen tehnyt tätä kohta kymmenen vuotta.
- Onko Sibelius säveltänyt Maamme-laulun?
- Mistä löytyy soitonsiirto?
- Voiko maisterivaiheessa mennä vaihtoon?
- Mitä jalokivia Suomesta löytyy?
- Voiko armeijaan mennä 25-vuotiaana?
- Saako yksityisiä keskusteluja nauhoittaa?
- Miten akku säilyy parhaiten?
- Saako iPhonea ladata yön yli?
- Voiko jäätyneen akun elvyttää?
- Mikä ruoka on parasta iholle?
Kommentoi vastausta:
Kiitos palautteestasi! Kommenttisi auttaa meitä parantamaan vastauksia tulevaisuudessa.