Testiautomaatio robottiautoon – sulautetun järjestelmän testaus

sulautetun järjestelmän testaus

Useimmiten meillä Qubileassa räätälöidään testiautomaatio selainpohjaisille ratkaisuille, mutta ohjelmistotestaajamme voivat pitää taitojaan yllä ja kehittää niitä myös muunlaisissa haasteissa! Testiautomaatioasiantuntijamme Petri Sadinmäki värkkäsi jokin aika sitten sivuprojektinaan hieman erilaista testiautomaatiota – sulautetun järjestelmän testausta Raspberry Pi-pohjaiseen robottiautoon.

Aivonystyrät käyttöön oman työn kehittämiseksi

Petrillä jäi hetki ylimääräistä aikaa ennen seuraavan asiakasprojektin alkua, joten toimitusjohtajamme Janne antoi hänelle tehtäväksi suunnitella ja toteuttaa testiautomaatioratkaisu pienelle robottiautolle. Tarkoituksena oli haastaa omia aivonystyröitä ja oppia uutta. Projektin jälkeen Petri sanookin, että luottamus siihen, että kaikkiin asiakkaidenkin antamiin toimeksiantoihin löydetään ratkaisu, vaikka taustoja pitäisi kaivella hieman enemmän.

Testausautomaation rakentaminen laitteeseen, jonka toiminta ei perustu käyttöliittymään, oli hyvin erilaista kuin tyypilliset projektimme. Petrin mukaan tässä projektissa sukellettiin varsin tekniselle tasolla myös laite-ja sensoriteknologian syövereihin. Työ vaati paljon eri asioiden yhteensovittamista. Käydään läpi tarkemmin, miten tavallisuudesta poikkeava projekti toteutettiin.

Sulautetun järjestelmän testaus – työkaluna Robot Framework

Kyseisenlaista Freenove 4WD Smart Car-robottiautoa ohjaa Python -pohjainen ohjelmisto Linux -järjestelmässä, johon nyt tavoitteena oli rakentaa testiautomaatio, jolla voidaan testata auton jokaisen erillisen toiminnon toimivuus. Petri kertookin, että tämä projekti toi mukavaa haastetta tutkivalle insinöörille.

Alussa meni paljon aikaa sen selvittelyyn, miten auto yleensäkin toimii. Petri sai jonkin verran apua mm. Python-kirjastoihin, joita hän tarvitsi päästäkseen ohjelmallisesti käsiksi piirikortin eri liitäntöihin. Tiedonhaku järjestelmätoteutuksen eri osa-alueista osoittautui ajoittain jopa haastavaksi.


Auton sydän oli Raspberry Pi -tietokone, johon oli konfiguroitu robottiauton oma järjestelmä. Autoon Petri muodosti etäyhteyden omalta kannettavaltaan, joka antoi komennot robotissa olevalle testiohjelmalle, joka puolestaan antoi komennot autolle. Hän teki myös pahvista testialustan, jossa oli mustia viivoja, joita auton anturit pysyivät lukemaan. Tässä siis projekti yleiskielellä ja yksinkertaistettuna, seuraavassa hieman teknisempi kuvaus käytännön toteutuksesta.

Testiautomaatioon Petri käytti Robot Frameworkia, joka soveltuu mainiosti sulautetun järjestelmän testaukseen. Testit ajettiin Petrin työkoneelta SSH-yhteyden yli, johon hyödynnettiin Robot Frameworkin SSHLibrarya. Autoon oli asennettuna omat testikirjastot, joita kutsuttiin em. SSHLibraryn välityksellä.

Autossa olleessa testikirjastossa käytin RobotRemoteServeriä, joka mahdollistaa testien ajamisen etänä, sekä mm. RPi.GPIO-kirjastoa, jolla pääsee käsiksi Raspberryn GPIO:on. General Purpose I/O (lyhenteeltään GPIO) on yleiskäyttöinen pinni mikrokontrollereissa ja mikroprosessoreissa. GPIO voidaan ohjelmoida joko signaalin vastaanottajaksi tai lähettäjäksi.

Tällaisessa sulautetun järjestelmän testauksessa testit toimivat niin, että kun testit(t) käynnistetään, niin aluksi otetaan yhteys robottiin, josta löytyvästä testikirjastosta luodaan instanssi ja siitä sitten suoritetaan haluttuja metodeja. Metodeille pystyi antamaan parametreja. Metodit myös palauttivat isäntäkoneella pyörivälle testille arvoja ja ruutukaappauksia.

Robottiautolle tehdyt testit

Autossa oli monta erillistä toimintoa, joita kaikkia piti testata erikseen. Sillä oli liikkuva pää, silmät eli kamerat, etäisyysmittari, erilaisia antureita ja renkaat, joita sai liikuteltua kutakin erikseen omilla moottoreillaan. Lisäksi autossa oli summeri sekä ohjelmoitavia led-valoja, jotka voi laittaa palamaan eri väreissä. Petri pyrki tekemään testejä kaikille robottiauton toiminnoille, niissä myös onnistuen.

Osa testeistä oli hyvin yksinkertaisia kuten antaako auto äänimerkin, ottaako kamera kuvan, palavatko ledit tietyillä väreillä, palauttaako ultraäänisensori tietyn etäisyyden jne. Monimutkaisimpia olivat yhdistelmätestit, kuten kunkin renkaan pyörittäminen erikseen kumpaankin suuntaan. Yhdessä testissä auto lähti peruuttamaan ja samalla “skannasi” pöydällä testialustaan piirrettyjä mustia raitoja. Kun auto oli löytänyt niitä tietyn määrän, se pysähtyi.

Kaiken kaikkiaan harjoitus opetti paljon uutta sulautettuun järjestelmään suunniteltavasta testiautomaatioratkaisusta, ja lisäsi tietoutta Robot Frameworkin mahdollisuuksista.

Meillä Qubileassa tuotetaan räätälöityjä testiautomaatioita suoraan asiakkaiden tarpeisiin.

Lue lisää palveluistamme ja ota yhteyttä!