Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure



Samankaltaiset tiedostot
Ohjelmistojen mallintaminen. Luento 11, 7.12.

Advanced Test Automation for Complex Software-Intensive Systems

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

T Testiraportti - järjestelmätestaus

Ohjelmistotestaus -09

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Vakuutusyhtiöiden testausinfo

TIE Ohjelmistojen testaus 2016 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

Testaus ja säästöt: Ajatuksia testauksen selviämisestä lama-aikana

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Onnistunut Vaatimuspohjainen Testaus

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Automaattinen yksikkötestaus

Testi generaattori. Testien ajotyökalu. Kuva 1. Offline mallipohjainen testaus

Sopisiko testiautomaatio yritykseesi juuri nyt? Testiautomaation soveltuvuuden arviointiopas

TESTIRAPORTTI - JÄRJESTELMÄ, ADMIN Virtuaaliyhteisöjen muodostaminen Versio 1.0

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

DOORS 7.1 Test Tracking Toolkit

T Testiraportti - integraatiotestaus

T SEPA päiväkirja

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

Kuopio Testausraportti Asiakkaat-osakokonaisuus

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

COTOOL dokumentaatio Testausdokumentit

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

A-Tiilikate objektikirjasto

L models. Testisuunnitelma. Ryhmä Rajoitteiset

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmistojen testaus ja hallinta. Gradle

TESTIRAPORTTI - JÄRJESTELMÄ, PORTAL Virtuaaliyhteisöjen muodostaminen Versio 1.0

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori

Dynaaminen analyysi II

Hirviö Laadunvarmistussuunnitelma

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy

T Testiraportti - integraatiotestaus

Harjoitustyön testaus. Juha Taina

Sähköinen äänestämisen testaus

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

Built Environment Process Reengineering (PRE)

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

Graafisten käyttöliittymien testaus ja testausviitekehykset

1. Projektin status. 1.1 Tavoitteiden päivitys. 1.2 Tulokset Mallinnus

Tapahtuipa Testaajalle...

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Noin 80 ajatusta testiautomaatiosta

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Onnistunut SAP-projekti laadunvarmistuksen keinoin

HSY:n uusi sekaviemärimalli

Tomi Huttunen Kuava Oy Kuopio

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Ohjelmistotuotantoprojekti

UCOT-Sovellusprojekti. Testausraportti

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille Meeri Nieminen

Simulation and modeling for quality and reliability (valmiin työn esittely) Aleksi Seppänen

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TeliaSonera Identity and Access Management

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

Työkalujen merkitys mittaamisessa

Markus Tuominen GRAAFISTEN KÄYTTÖLIITTYMIEN REGRESSIOTES- TAUKSEN AUTOMATISOINTI

T Projektikatselmus

Testausraportti. Dokumentti: Testausraportti_I2.doc Päiväys: Projekti : AgileElephant

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Kuopio Testausraportti Kalenterimoduulin integraatio

Hirviö Laadunvarmistussuunnitelma

Testaus osana ohjelmistojen elinkaarta II

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Tähtitieteen käytännön menetelmiä Kevät 2009

MAASTOKARTOITUSAINEISTON VISUALISOINTI. Kai Lappalainen, Ramboll Finland Tampere

Convergence of messaging

Sähköpostitilin käyttöönotto

LINUX-HARJOITUS, MYSQL

Testi- ja käytösvetoiset kehitysmenetelmät sovelluskehitysprojekteissa

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Pilotti: Mallipohjainen radanrakentamisen automaatio. Pilottisuunnitelma

Testaaminen ohjelmiston kehitysprosessin aikana

Mallipohjainen testaus

Tilastokeskuksen rajapintapalveluiden käyttöönotto MapInfo - ohjelmistossa Ohjeita laatiessa on käytetty MapInfon versiota 11.5.

MixW ja Dx-vihjeet (ohje) oh3htu

statbeatmobile PROJECT REVIEW iteration 1

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant

Laaturaportti [iteraatio 2] Ryhmä 14

Opiskelija osaa suunnitella ohjelmiston toteuttamisen, toteuttaa, testata ja dokumentoida ohjelmiston.

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli

TESTIRAPORTTI - XMLREADER LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Toimitusketjun hallinnan uudet kehityssuunnat. Mikko Kärkkäinen Tammiseminaari 2015

Verkkolaskun laatutesti. Juha Ikävalko / AgentIT Finland Oy Verkkolaskufoorumin syysseminaari

Dynaaminen analyysi I

AutoFutur/KoneFutur lisäohje

REALTIME CUSTOMER INSIGHT Wellnator Oy

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Kuva liikennemerkistä 1. Aleksanteri Numminen. ITKP101

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Transkriptio:

Automaattinen regressiotestaus ilman testitapauksia Pekka Aho, VTT Matias Suarez, F-Secure

2 Mitä on regressiotestaus ja miksi sitä tehdään? Kun ohjelmistoon tehdään muutoksia kehityksen tai ylläpidon aikana, regressiotestaus pyrkii varmistamaan, että muutokset eivät vahingossa rikkoneet mitään toimivaa -> pyritään havaitsemaan muutokset ohjelmiston käyttäytymisessä Yleensä samojen testitapausten toistoa -> yleensä helppoa ja kannattavaa automatisoida Kun muutoksia tulee, muutettujen osien (automatisoituja) testitapauksia pitää yleensä päivittää -> manuaalista työtä, jota automatisoinnilla pyritään vähentämään

3 Graafisten käyttöliittymien (GUI) automaattinen regressiotestaus historiaa Testien suorittamisen automatisointi Record & replay (Squish, Sikuli, etc) Testitapausten luomisen automatisointi mallipohjainen GUI testaus Mallinnetaan haluttu oikea käyttäytyminen manuaalisesti Generoidaan testitapaukset ja suoritetaan automaattisesti Verrataan havaittua käyttäytymistä mallinnettuun käyttäytymiseen Automaattinen GUI mallinnus ja testaus GUITAR työkalu: Yritetään automaattisesti aukaista kaikki ikkunat Generoidaan malli havaitun perusteella ja testitapauksia mallista Ajetaan testitapaukset automaattisesti ja verrataan käyttäytymistä malliin Havaitaan testitapausten perusteella eroja kahden version välillä

4 Graafisten käyttöliittymien (GUI) automaattinen regressiotestaus nykyaikaa Automaattinen GUI mallinnus ja mallien vertailu Murphy työkalu: https://github.com/f-secure/murphy Yritetään automaattisesti kokeilla kaikkea toiminnallisuutta Käyttäjä määrittelee manuaalisesti ohjeet (2-200 riviä Pythonia) Generoidaan malli havaitun käyttäytymisen perusteella Automaattisesti verrataan edelliseen versioon ja raportoidaan ja visualisoidaan muutokset Käyttäjä päättää onko muutokset haluttuja vai bugeja Ei testitapauksia Yritetään havaita kaikki muutokset Ei päivitettäviä testitapauksia, vain väärien hälytysten läpikäyminen

5 Murphy työkalu prosessi 1. Kirjoitetaan ohjeet Murphylle (Python) Ei OK: Korjataan ohjeita tai speksiä 3. Tarkkaillaan mallintamista tai tarkistetaan visuaalisesti generoitu malli OK 2. Murphy työkalu simuloi kokeilevaa käyttäjää ja mallintaa samalla automaattisesti GUI:n käyttäytymistä 4. Käytetään mallia automaattiseen (regressio) testaukseen Manuaalista työtä Automatisoitu

6 Murphy ohjeet Ohjeet sisältävät: Vähintään komennon mallinnettavan GUI:n käynnistämiseen GUI kohtaisia syötteitä, sääntöjä ja rajoja, joiden mukaan Murphy simuloi käyttäjää Yleensä 2-200 riviä Python koodia Yksinkertainen esimerkki:

7 Murphy käyttäjän simulointi Murphy simuloi käyttäjää ja kokeillee kaikkia GUI:n toimintoja, tarkoituksena: Mallintaa GUI:n toiminnallisuus ja käyttäytyminen mahdollisimman kattavasti, jotta malli olisi mahdollisimman tarkka Virtuaalikoneiden käyttö ulkoisten häiriöiden vähentämiseksi Rajata mallintamiseen tarvittavaa aikaa, jotta mallinnus voidaan tehdä automaattisesti monta kertaa päivässä Ei pyritä kattamaan kaikkia sekvenssejä vaan kaikki GUI:n tilat Olla käytettävä ja käytännöllinen työkalu Työkalussa oma Web GUI Mahdollisimman alustariippumaton

8 Murphy mallin visuaalinen tarkistaminen Jotta mallinnettu toiminnallisuus olisi helppo tarkastaa: Generoitu malli on visualisoitu graafiseksi tilamalliksi Tiloja edustavat kuvankaappaukset oikeasta GUI:sta Malli muistuttaa GUI suunnitelmaa

9 Murphy automaattista GUI:n regressiotestausta ilman testitapauksia 1. Generoidaan malli GUI:n uusimmasta versiosta käyttäen samoja ohjeita (esim. automaattisesti 3 kertaa päivässä) 2. Verrataan automaattisesti mallia edellisen version malliin 3. Lähetetään automaattisesti varoitus (esim. email) havaituista muutoksista 4. Käyttäjä tarkastaa havaitut muutokset Web GUI:n avulla Murphy näyttää muuttuneiden tilojen kuvankaappaukset vanhasta ja uudesta versiosta ja auttaa havaitsemaan muutokset Käyttäjä päättää onko haluttu muutos vai bugi

10 Kokemuksia mallinnuksesta (F-Secure) Murphy työkalua on käytetty useiden GUI ohjelmistojen mallinnukseen (ja testaukseen) tuotekehityksen aikana. Mallintaa monimutkaisenkin GUI:n riittävän tarkasti Ohjeet olivat 2-200 riviä Python koodia Generoiduissa malleissa oli 80-180 GUI:n tilaa Isompia malleja jaettiin pienempiin osiin useammilla ohjeilla, joissa rajoitettiin mallinnuksen alueet Mallinnetut GUI ohjelmistot olivat vuopohjaisia (flow based) Enimmäkseen rajattu määrä mahdollisia syötteitä

11 Kokemuksia testauksesta (F-Secure) Murphy testaa GUI:ta jo mallinnuksen aikana ja ongelmia (bugi/speksi) löytyi mallin visuaalisen tarkastamisen aikana Murphyn avulla: Manuaalisesti ylläpidettävän testikoodin määrä vähentyi Uusien GUI tuotteiden regressiotestauksen aloittaminen nopeampaa ja vaatii vähemmän työtä Uusien ominaisuuksien testaaminen nopeampaa Regressiotestauksen kattavuus parani Vähennettiin myös manuaalisten GUI testien vaatimaa aikaa Käynnistetään Murphyn avulla GUI virtuaalikoneessa tiettyyn tilaan

12 Kiitos! Kysymyksiä? https://github.com/f-secure/murphy