Esitelmän kulku: 1. Pikaperehdytys koneoppimiseen. 2. Koneoppiminen ohjelmistotestauksessa. 3. Demonstraatio. 9/6/2017 Knowit

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

Harjoitustyön testaus. Juha Taina

Ohjelmistotestaus -09

Tekoäly ja sen soveltaminen yrityksissä. Mika Rantonen

Onnistunut Vaatimuspohjainen Testaus

LAATURAPORTTI Iteraatio 1

Edistyksen päivät, Helsinki. Voiko tutkija muuttaa maailmaa? Humanistista meta-analyysiä merkitysneuvottelevien koneiden avulla.

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

SEPA diary. Dokumentti: SEPA_diary_PK_RI.doc Päiväys: Projekti : AgileElephant Versio: V0.2

Tekoäly muuttaa arvoketjuja

L models. Testisuunnitelma. Ryhmä Rajoitteiset

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

Yhdeksän mittaria ohjelmistotuotannon. seuraamiseen. tsoft. Vesa Tenhunen Joensuun yliopisto, TKT:n laitos

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2016

Uudelleenkäytön jako kahteen

WEBINAARIN ISÄNNÄT. Jarno Wuorisalo Cuutio.fi. Petri Mertanen Superanalytics.fi. Tomi Grönfors Brandfors.com

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

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

SEPA: Staattiset menetelmät Timo Sallinen, 51134F & Risto Kunnas, 50498T. Sisällysluettelo. 1 Johdanto. 2 SEPA harjoittelu käytännössä.

Ohjelmiston testaus ja laatu. Testaustasot

Testaaminen ohjelmiston kehitysprosessin aikana

WEBINAARI Mitä Tag Management on käytännössä ja miten se vaikuttaa analytiikkaan?

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Software engineering

Avoin data liiketoiminnassa. EnviroCase Oy

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Advanced Test Automation for Complex Software-Intensive Systems

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Automaattinen yksikkötestaus

Työkalujen merkitys mittaamisessa

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Project group Tete Work-time Attendance Software. Henkilökohtainen SE harjoitus: loppuraportti

Tutkittua tietoa. Tutkittua tietoa 1

Lajittelumenetelmät ilmakehän kaukokartoituksen laadun tarkkailussa (valmiin työn esittely)

T Projektikatselmus

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

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

58160 Ohjelmoinnin harjoitustyö

TESTIRAPORTTI - XMLREADER LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0

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

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

SEPA päiväkirja. Aihe: Staattiset menetelmät Tekijät: Mikko Halttunen 58198B, Mikko Närjänen 58122B Ryhmä: Neptune T Ohjelmistoprojekti I

Jatkuvat satunnaismuuttujat

Mittaamisen maailmasta muutamia asioita. Heli Valkeinen, erikoistutkija, TtT TOIMIA-verkoston koordinaattori

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

UCOT-Sovellusprojekti. Testausraportti

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Turvakriittisen projektin menetelmät ja työkalut

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

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

Systemaattinen apina ja miten se tehdään fmbt:llä

TESTIRAPORTTI - XMLREADER-LUOKKA Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 2)

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat

811312A Tietorakenteet ja algoritmit I Johdanto

Testataanko huomenna?

Laaturaportti [iteraatio 2] Ryhmä 14

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

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

Suomi.fi - Tietoturvallisuus sovelluskehityksessä. VAHTI sähköisen asioinnin tietoturvaseminaari

Harjoitus 3 (viikko 39)

Tekoäly terveydessä ja taloudessa Nykytila, haasteet ja mahdollisuudet. Elina Jeskanen Petrus Metsälä

Dynaamiset regressiomallit

Millainen on menestyvä digitaalinen palvelu?

MS-A0107 Differentiaali- ja integraalilaskenta 1 (CHEM)

Koneoppimisen hyödyt arvopohjaisessa terveydenhuollossa. Kaiku Health

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

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

Kontrollipolkujen määrä

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

Johdantoluento. Ohjelmien ylläpito

Vastausehdotukset analyysin sivuainekurssin syksyn välikokeeseen

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

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

Alkukartoitus Opiskeluvalmiudet

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Testauspäivä Hannu-Matti Järvinen

Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto

Ennustava analytiikka B2B- myynnissä. Miten hyötyä säännönmukaisuuksista markkinoinnissa ja myynnissä

Kon Simuloinnin Rakentaminen Janne Ojala

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

Ohjelmistojen virheistä

TESTIRAPORTTI - VYM JA KANTA Virtuaaliyhteisöjen muodostaminen Versio 1.0

Järvitesti Ympäristöteknologia T571SA

Estimointityökalut. Pekka Forselius, Senior Advisor Finnish Software Measurement Association FiSMA ry

Projektin tavoitteet

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

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen Kevät 2015

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Ilkka Mellin Todennäköisyyslaskenta. Osa 2: Satunnaismuuttujat ja todennäköisyysjakaumat. Kertymäfunktio. TKK (c) Ilkka Mellin (2007) 1

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Ohjelmoinnin perusteet, syksy 2006

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

Harjoitus 5 (viikko 41)

Robotit kuntien päätöksenteon tukena

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Transkriptio:

1

Esitelmän kulku: 1. Pikaperehdytys koneoppimiseen. 2. Koneoppiminen ohjelmistotestauksessa. 3. Demonstraatio. 2

Knowit luo digitaalisia mahdollisuuksia hyödyntämällä: 1. Teknologista osaamista (Solutions) 2. Luovuutta (Experience) 3. Strategista osaamista (Insight)

6.9.2017 Knowit PAGE 5

Malleja kaikkialla. Datan määrä kasvaa räjähdysmäisesti. Manuaalinen data-analytiikka on hidasta, kallista ja hankalaa Kiinnostus analytiikan ja mallinnuksen automatisointiin kasvaa. Analytiikka-algoritmien kehitys kiihtyy. Automaattisesti dataa tiedoksi prosessoivat algoritmit pystyvät tuottamaan dataa ja parempia malleja itsenäisesti. Kuva: Datan määrä maailmassa Helsingin sanomat, 2.9.2017. 6

Alati kasvava sovellusten kirjo Markkinointi Asiakkaiden luokittelu Signaalinkäsittely Rahoitus, ilmastotutkimus Kuvankäsittely Konenäkö / kasvontunnistus Puheen- ja tekstintunnistus Konekääntäjät Kemia Toksikologia, materiaalitekniikka Data-analytiikka Monimutkaisen datan mallintaminen 1997 2011 2016 2017 7

Koneoppimisen tarve kasvaa, kun työtä on hankala analysoida tai siihen liittyy suurta vaihtelua. Vaihtelevuus Tutkimus Tekstintunnistus Vaihtelevuus: suuri Analysoitavuus: helppo Analysoinnin hankaluus Ohjelmistosuunnittelu Liukuhihnatyö Rakennustyö Kuva: Calligraphy: the letter J www.pinterest.com/mccorvallis/calligraphy-the-letter-j/ 8

Koneoppimismenetelmät Valvottu oppiminen Syötteet ja oikeat tulosteet tiedetään. Tavoitteena löytää malli, joka ennustaa uusien syötteiden tulosteet. Kannustava oppiminen Syötteet tiedetään, mutta oikeita tulosteita ei osata kuvailla tarkasti. Hyvältä vaikuttavia ratkaisuja kannustetaan jalostumaan. Valvomaton oppiminen Syötteet tiedetään, mutta haluttuja tulosteita ei. Vastaa tehtävänantoa: Etsi jotain mielenkiintoista. AI-kirjallisuusanalyysi[1] 1 Reagan, A., et al., The emotional arcs of stories are dominated by six basic shapes, EPJ Data Science (2016). 9

Vaatimukset Hyväksymistestaus Määrittelykuvaukset Järjestelmätestaus Staattiset menetelmät. Katselmoinnit. Suunnittelukuvaukset Integraatiotestaus Dynaamiset menetelmät. Testiajot. Koodi Yksikkötestaus 10

Staattisen testaamisen puolella lukuisia koneoppimismenetelmiä voidaan hyödyntää koodin laadun mittaamiseen.[1] NASA:n koodikatselmointi. Dynaamisen testaamisen puolella mallipohjaisia regressiotestejä voidaan korvata algoritmeilla, jotka generoivat testikulkuja on-the-fly - tyyppisesti.[2] Netflixin Kaaosapina. Ylläpitotestauksessa koneoppimisella voidaan suunnitella realistisempia kuormitustestejä muodostamalla tilastollisia malleja sovelluksen todellisista käyttötavoista. Kuva: Kunniamitalilla palkittu Margaret Hamilton Apollo sukkulan ohjausjärjestelmän lähdekoodin vieressä. www.nasa.gov/ 1 Lessman, S. et al., ieee Transactions on software engineering (2008) 32, 4, 485. 2 Raffelt, H., Merten, M., Steffen, B. International Journal on Software Tools for Technology Transfer (2009) 11, 307. 11

Koodin laadun mittaamiseen on olemassa lukuisia metriikoita, joiden mittaaminen voidaan automatisoida. Suosituimmat kehitetty 1970-luvulla.[1,2] Ajatuksena on, että defektien todennäköisyys olisi verrannollinen johonkin helposti mitattavaan suureeseen (rivien lukumäärä, kommenttien lukumäärä, operaattoreiden lukumäärä jne.). Tavoitteena: Antaa kehittäjille palautetta koodin laadusta. Antaa testaajille palautetta tarvittavasta testauksen kattavuudesta. Priorisoida testien ajojärjestystä, jotta virheet huomataan nopeammin. 1 T.J. McCabe, A Complexity Measure, IEEE Transactions on Software Engineering (1976) SE-2, 4, 308. 2 M.H. Halstead, Elements of Software Science, Elsevier (1977). 12

Defektien hajonta NASA:n CM1 projektissa Vaikka perinteisiä metriikoita käytetään aktiivisesti, on niiden hyödyllisyyttä myös kyseenalaistettu.[1] Oikeassa maailmassa esimerkiksi koodirivien lukumäärä ei ole kovin hyvä indikaattori moduulin hyvyydestä. Rivien lkm. 450 400 350 300 250 200 150 100 50 0 0 20 40 60 80 100 120 OK Defected Syklomaattinen monimutkaisuus Kuva: NASA Metrics Data Program, CM1 Project[2] Virheettömät ja virheelliset moduulit eivät erotu rivien lukumäärän tai syklomaattisen monimutkaisuuden perusteella. 1 N.E. Fenton, S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, International Thompson Press (1997). 2 S.J. Sayyad, T.J. Menzies, The PROMISE Repository of Software Engineering Databases (2005). 13

Tästä demonstraatiota varten kehitettiin tukivektorikonetyyppinen algoritmi. Ongelmaa voidaan lähestyä valvotulla koneoppimismenetelmällä, koska syötteet (laatumetriikat) ja oikeat tulosteet (defektit) tiedetään. Tavoitteena on löytää sellainen hypertaso moniulotteisessa data-avaruudessa, joka erottaa virheelliset moduulit virheettömistä. Matemaattisesti ongelma voidaan kuvata algoritmina: Minimoi 1 2 w + C ξ Laatumittari 2 Laatumittari 1 Ehdolla 1-y w, f(x ) + b ξ kaikilla i:n arvoilla. 14

Jos olet nörtti, tee se itse! Tarvitset vain perustiedot kernelimenetelmistä, konveksioptimoinnista, radiaalikantafunktioverkoista Tai käytä esimerkiksi Pythonin scikit-learn kirjastoa: 15

Valitettavasti tekoälylle täytyy antaa myös muita ohjeistuksia. Funktiota AI(data) ei vielä ole olemassa. Menetelmien käyttö ilman ymmärrystä johtaa hyvin todennäköisesti harhaan. Esimerkki I: Merkitse kaikki defektit voi johtaa siihen, että tekoäly merkitsee kaikki moduulit viallisiksi. Tällöin kaikki defektit on merkitty. Esimerkki II: Älä tee virheitä voi johtaa siihen ettei tekoäly tee mitään. Helpoin tapa välttää virheitä on olla yrittämättä. Kuva: Linnunradan käsikirja liftareille (2005). 16

Tässä demonstraatiossa algoritmia pyydettiin maksimoimaan mallin F-pisteet, joka ottaa huomioon mallin tarkkuuden (sisäisen) ja saannon. Oikeasti virheelliset Väärät negatiiviset Oikeat negatiiviset tarkkuus = oikein virheelliseksi merkityt kaikki virheelliseksi merkityt Minimoi väärät hälytykset Oikeat positiiviset Väärät negatiiviset saanto = oikein virheelliseksi merkityt kaikki oikeasti virheelliset Merkitse niin monta defektiä kuin mahdollista. F = 2 tarkkuus saanto tarkkuus + saanto Virheelliseksi merkityt 17

Tekoälyavusteinen lähestymistapa antaa paljon parempia arvioita koodin laadusta kuin yksittäiset laatumetriikat. F 0,8 0,6 0,4 Testattu todellisella datalla NASA:n CM1 ohjelmistomoduuleja vastaan[1] Harjoitusnäytteitä: 1595 Testausnäytteitä: 400 F = 2 tarkkuus saanto tarkkuus + saanto 0,2 0,0 18

Paremman suorituskyvyn lisäksi algoritmi antaa intuitiivisempaa palautetta kuin tavalliset metriikat. Alla on verrattu uuden moduulin katselmointia perinteisellä menetelmällä (vasen) ja tekoälyavusteisesti (oikea). 450 Perusmetriikat 100 Tekoälyn arvio virhealttiudesta Rivien lkm. 400 350 300 250 200 150 100 50 0 Olet täällä OK Defected 0 20 40 60 80 100 120 Syklomaattinen monimutkaisuus vastaan Virheen todennäköisyys (%) 50 0 OK Defected Olet täällä 0 100 200 300 400 Moduuli 19

Kehitä moduulia Tekoälyavusteinenkatselmointi Parempaa palautetta kehittäjille ja testaajille. OK? Ei Kyllä Järjestä ja aja testit arvioidun virhealttiuden mukaan Faster failing. No OK? Yes Julkaise Parempi laatu. 20

Koneoppiminen ohjelmistotestauksessa on (melko) uusi ja lupaava alue. Koneoppimisella testausta voidaan kohdentaa korkean riskin alueille. Koneoppimisella voidaan ohjata dynaamista testausta, jolloin testien kattavuutta ja automaatiota voidaan parantaa. 21

22