tie-21201 ohjelmistojen testaus 2016 harjoitustyö vaihe...
TRANSCRIPT
TIE-21201 Ohjelmistojen testaus 2016
Harjoitustyö
Vaihe 3
Antti Jääskeläinen
Matti Vuori
Rakenne ja aikataulu
• Kolme vaihetta:
1. Tutkivan järjestelmätestauksen suunnittelu
2. Tutkivan järjestelmätestauksen suoritus ja raportointi
3. Mallipohjainen testaus
• Karkea aikataulu (tarkat ajat harjoitustyösivuilla):
Viikko 38 – Vaiheiden 1 ja 2 ohjausluento
Viikko 41 – Vaiheen 1 deadline
Viikko 43 – Vaiheen 1 palaute
Viikko 46 – Vaiheen 3 ohjausluento
Viikko 46 – Vaiheen 2 deadline
Viikko 48 – Vaiheen 2 palaute
Viikko 49 – Vaiheen 3 deadline
Viikko 51 – Vaiheen 3 palaute
16.11.2016 2
Järjestelyt
• Valmistautuminen
– Lue harjoitustyön nettisivut
– Lue kolmannen vaiheen ohjeistus
– Perehdy fMBT-työkalun käyttöön liittyviin viikkoharjoituksiin
• Palautukset tehdään sähköpostitse kuten aiemminkin
• Kolmannesta vaiheesta on saatavilla 6 pistettä
16.11.2016 3
Yleistä 1/2
• Testikohde: laskin galculator,
versio 4.1CE
– CE tarkoittaa kurssin omaa
versiota (course edition),
johon on kylvetty bugeja
jonkin version 4.1 päälle
– Testataan vain
peruslaskutoimituksia
laskimen Basic-moodissa
16.11.2016 4
Yleistä 2/2
• Testaustapa: mallipohjainen funktionaalinen GUI-testaus
– Testejä generoidaan ohjelman toiminnallisuutta kuvaavasta mallista
– Testit suoritetaan automaattisesti ohjelman käyttöliittymän läpi
– Mustalaatikkotestausta, lähdekoodia ei tarkastella
• Testiympäristö: TTY:n Linux-etätyöpöytäympäristö
– Työasemia luokassa TC217, ohjeita etäkäyttöön Tutkassa
https://www.tut.fi/tutka/it/tietokoneluokat/yhteiskayttoiset-linux-
koneet/index.htm
– Mallinnusta voi tehdä muuallakin
– Lisätietoja vaiheen 3 tarkassa ohjeistuksessa
• Työkalu: fMBT
– Asennettu valmiiksi ympäristöön
– Työkalu ja dokumentaatiota saatavilla kotisivuilta https://01.org/fmbt/
– Käytännön ohjeistusta saatavilla viikkoharjoituksissa16.11.2016 5
Palautettavat asiat
• Testimalli
– Mukaan lukien aputiedostot kuten testikohteen hallinnassa käytetyt
bittikarttakuvat
• Virheraportit
• Varmista, että palautuspakettisi on oikeellinen, jotta sen
automaattinen käsittely onnistuu
– Ohjeet palautuspaketin toimivuuden tarkastamiseen palautusohjeiden
yhteydessä
16.11.2016 6
Testimalli
• Testimalli kuvaa testikohteen käyttäytymistä tarpeellisilta osin
• Mallin tietojen perusteella testikohteelle voidaan generoida erilaisia
testejä
• Tämän työn malli kirjoitetaan fMBT:n AAL/Python-kielellä
• Malli rakennetaan tukemaan online-testausta, jossa testejä
suoritetaan samalla kun niitä generoidaan
16.11.2016 7
Mallinnettavat asiat
• Peruslaskutoimitukset (yhteen, vähennys, kerto ja jako) ja niiden
muodostamat lausekkeet
– Huomaa mm. laskujärjestyssäännöt
• Kokonais- ja desimaaliluvut
– Valmis mallipohja sisältää funktion satunnaisten lukujen generointiin
• Tulosten ja välitulosten tarkastaminen
– Ideaalisesti laskimen näytöllä näkyvä luku tarkastetaan aina jokaisessa
mallin tilassa
– Jos tuloksen desimaaliesitys ei mahdu laskimen näytölle, ei sitä tarvitse
tarkastaa ja laskimen voi resetoida
16.11.2016 8
Ei tarvitse mallintaa
• Laskimen käynnistämistä ja
sammuttamista
• Valikoiden sisältöä
• Muita kuin Basic-moodia
• Basic-moodin toiminnoista
– Sulkeita sisältäviä lausekkeita
– Muistin käyttöä
– Syötteen kumoamista (Clear ja
Backspace)
– Neliöjuuri- ja potenssioperaatioita
• Eri tapoja antaa syötteitä
• Apinatestauksen tyylisiä järjettömiä
syötesarjoja
16.11.2016 9
Testikohteen hallinta
• Käytetään fMBT:n tarjoamaa fmbtx11-rajapintaa, joka tarttuu X11-
ikkunointijärjestelmään
• Rajapinnasta on jonkin verran dokumentaatiota fMBT:n kotisivuilla,
mutta käytännössä sen ominaisuuksia on paras tutkia Python-
tulkissa dir- ja help-komennoilla
• Testikohdetta käsitellään erillisellä näytöllä, käynnistyskomennot
ovat valmiina mallipohjassa
• Tuloksia tarkastetaan tekstintunnistuksen (OCR) avulla
– OCR toimii pääosin hyvin testikohteen kanssa, mutta ei jostain syystä
tunnista luotettavasti kahdeksikoista koostuvia lukuja (8, 8.88, -88, …)
– Tärkeimmät erikoistapaukset voi tarkastaa bittikarttoina, muut sivuuttaa
16.11.2016 10
Vinkkejä mallinnukseen 1/2
• Aloita yksinkertaisista asioista ja etene sitten monimutkaisempiin
– Hyvä lähtökohta: yhteenlasku kokonaisluvuilla
– Esim. ensin yhteen- ja kertolasku vain erillisissä lausekkeissa,
laskujärjestyksen toteutus vasta myöhemmin
• Sivuuta ongelmallisia tilanteita tarpeen mukaan
– Jätä yksittäinen ongelmallinen tulos tarkastamatta
– Havaitessasi tilanteen, josta mallisi ei selviä eteenpäin, resetoi testiajo
ja peruuta malli vastaavaan tilaan
– Älä anna testiajon kaatua, ellei kyseessä ole todellinen virhetilanne!
• Vaikka malli olisi kattavuuden puolesta pahasti puutteellinen, voi se
silti osoittaa että testikohteen hallinta on osattu tehdä hyvin
16.11.2016 11
Vinkkejä mallinnukseen 2/2
• Mieti, kuinka paljon toiminnallisuutta sisällytät yksittäiseen aktioon;
liian pienet aktiot tekevät mallin logiikan seuraamisesta vaikeaa,
liian suuret rajoittavat erilaisten testien generointia
• Huolehdi, että malli on vahvasti kytketty, ts. jokaisesta
saavutettavasta tilasta pääsee takaisin alkutilaan
• Siivoa tilamuuttujista vanhat turhat arvot pois
– Esim. jos muuttujan x ollessa arvossa 1 on muuttujan y arvo
merkityksetön, sijoita siihen None tms., jotta tilat eivät monistu
• Huolehdi mallin selkeydestä
– Nimeä aktiot, muuttujat yms. kuvaavasti
– Kommentoi mallikoodia, jos se ei muuten ole riittävän helposti
ymmärrettävää
16.11.2016 12
Testikonfiguraatio
• Kertoo fMBT:lle millainen testi halutaan generoida
• Mallipohjan mukana on kaksi testikonfiguraatiota
– Savutesti, joka suorittaa kaikki mallin aktiot kertaalleen
– Laajempi testi, joka yrittää suorittaa kaikki erilaiset neljän aktion sarjat
• Muita konfiguraatioita voi rakentaa, jos kokee tarpeelliseksi
– Esim. painotettu konfiguraatio, joka testaa enimmäkseen tietynlaisia
operaatioita
– Ohjeistusta fMBT:n dokumentaatiossa
https://github.com/01org/fMBT/blob/devel/doc/configuration.txt
16.11.2016 13
Testiajot ja virhelokit
• fMBT tuottaa testiä ajaessaan lokin, joka kertoo suoritetut
tapahtumat
– Tulostuu oletusarvona komentoriville, voi ohjata tiedostoon
parametreilla
• Lokin avulla virheeseen johtanut testiajo voidaan toistaa ja löydetty
virhe jäljittää
– Epädeterministisellä mallilla tosin mahdollisesti hankalaa
• Käytännön debuggauksessa hyödyllisiä ovat fMBT:n tuottamat
näyttökaappaukset
16.11.2016 14
Virheraportit
• Virheet raportoidaan kuten tutkivan testauksen yhteydessäkin
• Varsinaista testausraporttia ei tarvita, vain virheraportit ja kansilehti
• Mallin rakennetta, testatessa tehtyjä havaintoja tms. voi silti
dokumentoida
16.11.2016 15