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-linuxkoneet/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 viikkoharjoituksissa 16.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 Pythontulkissa 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