9. Olio-ohjelmien testaaminen

Koko: px
Aloita esitys sivulta:

Download "9. Olio-ohjelmien testaaminen"

Transkriptio

1 9. Olio-ohjelmien testaaminen Nykyään suurin osa ohjelmistoista suunnitellaan ja toteutetaan käyttäen oliotekniikoita. Miten oliojärjestelmien testaus eroaa perinteisistä proseduraalisista ohjelmista? Mika Katara: Ohjelmistojen testaus, Mukailtu lähteestä [Pezzè&Young 07] Pohjimmiltaan tekniikat proseduraalisten ohjelmien testaukseen toimivat myös olio-ohjelmien tapauksessa Olioiden erityispiirteistä johtuen joitain tärkeitä kohtia saattaa kuitenkin jäädä testaamatta Tästä syystä on kehitetty joukko oliospesifisiä tekniikoita, joilla nämä muuten katveeseen jäävät alueet saadaan testattua Vaikuttavat testaukseen lähinnä yksikkö- ja integrointitasoilla Mika Katara: Ohjelmistojen testaus,

2 Oliojärjestelmien hyviä puolia testaajan näkökulmasta Olio-ohjelmoinnin myötä on alettu kiinnittää enemmän huomiota ohjelman suunnitteluun (suunnittelumallit yms.) toisaalta, sama ongelma voidaan ratkaista hyvin eri tavoilla Metodit ovat yleensä lyhyempiä kuin vastaavat proseduurit yleensä metodin lyhyys tarkoittaa helpompaa yksikkötestausta toisaalta niitä voi olla enemmän Testitapaukset ovat potentiaalisesti uudelleenkäytettäviä siinä missä koodikin Mika Katara: Ohjelmistojen testaus, Suurin olio-ohjelmien erityispiirre testauksen näkökulmasta on se, että oliolla on tila Järjestelmän käyttäytyminen tietyllä hetkellä riippuu siitä, mitkä ovat sen olioiden sisäiset tilat sillä hetkellä Tekniikat, jotka eivät ota huomioon olioiden tilaa, eivät yksinään välttämättä riitä oliojärjestelmien testaamiseen Olion elinkaari rakentamisesta purkamiseen Mika Katara: Ohjelmistojen testaus,

3 Toinen tärkeä erityispiirre on tiedon kätkentä Osa olion muuttujista, jotka määrittelevät sen tilan, on kätketty ulkopuolisilta Tiedon kätkentä voi parantaa koodin laatua ja sitä kautta vähentää testauksen tarvetta Täytyy kuitenkin huolehtia siitä, että myös kätkettyjen muuttujien arvot tulevat tarkastettua kun tutkitaan miten järjestelmä käyttäytyy Mika Katara: Ohjelmistojen testaus, Perintä Voidaanko lapsiluokka jättää testaamatta sillä perusteella, että kantaluokka on jo testattu? Testaajien täytyy päättää tarvitseeko lapsiluokan metodeja varten kehittää uusia testitapauksia tarvitseeko kantaluokan testitapauksia ajaa uudelleen lapsiluokalle mitä lapsiluokan metodeja ei tarvitse testata Mika Katara: Ohjelmistojen testaus,

4 Polymorfismi ja dynaaminen sitominen Muuttujan edustaman olion luokka ei ole selvillä käännösaikana, joten siihen tehtävän metodikutsun todellinen kohde päätetään vasta ajoaikana järjestelmän tilan perusteella tämä hankaloittaa suunnittelun ja koodin ymmärtämistä Perinteiset tekniikat, jotka olettavat sitomisen olevan staattista, eivät kata kaikkia mahdollisia sitomisia (käyttäytymisiä) Eri sidontamahdollisuudet tulee siis testata voitaisiinko soveltaa päätöskattavuutta? Useamman kutsun tapauksessa myös niiden mahdolliset sitomiskombinaatiot tulisi testata Mika Katara: Ohjelmistojen testaus, Abstraktit luokat Abstraktit luokat voivat olla tärkeitä osasia kirjastojen tai komponenttien rajapinnoissa, mutta niitä ei voida sinänsä instantioida tai testata Joskus voi olla mahdotonta tietää kuinka ko. luokkia tullaan todellisuudessa käyttämään Testaajien täytyy yrittää tehdä valistuneita arvauksia tärkeistä käyttötavoista ja testata sen mukaisesti Mika Katara: Ohjelmistojen testaus,

5 Poikkeukset Oliokielten poikkeusmekanismeja hyödynnetään yleisesti Poikkeus voidaan heittää aivan toisaalla lähdekoodissa kuin missä se käsitellään Dynaaminen sitominen tuo mukanaan oman monimutkaisuutensa Poikkeustapausten testaamiseen on syytä kiinnittää erityistä huomiota Mika Katara: Ohjelmistojen testaus, Rinnakkaisuus Oliokielissä säikeiden käyttöön kannustetaan tai sitä jopa vaaditaan esim. Javan käyttöliittymäkirjastot Valitettavasti rinnakkaisuus on testauksen kannalta varsinainen viidakko yleensä tapahtuma A tapahtuu ennen tapahtumaa B, mutta pitääkö tämä aina paikkansa vai riippuuko se vuorontajasta? toimiiko keskinäinen poissulkeminen kaikissa tilanteessa? Mika Katara: Ohjelmistojen testaus,

6 Oliot vaikuttavat testaukseen V-mallin alimmilla tasoilla Lähinnä yksikkö- ja integrointitestauksessa Muissa vaiheissa perinteiset menetelmät purevat hyvin Nyrkkisääntönä voidaan sanoa, että kukin edellä mainittu erityispiirre pitäisi testata erikseen Poikkeuksen muodostavat piirteet, jotka interferoivat keskenään kuten perintä ja tilasta riippuva käyttäytyminen Mika Katara: Ohjelmistojen testaus, Yksikkötestaus Metodeita ei yleensä kannata ajatella testattavina yksikköinä, koska niiden käyttäytyminen riippuu usein ympäröivän olion tilasta Luokka tuntuu sopivammalta testattavalta yksiköltä priorisointi kannattaa muistaa; kaikki luokat eivät ole yhtä tärkeitä luokkaa ei voi testata testaamatta sen metodeita Mika Katara: Ohjelmistojen testaus,

7 Luokan yksikkötestaus Jos luokka on abstrakti, instantioidaan sen lapsiluokista olioita joiden avulla luokka testataan mikäli lapsiluokkia ei ole, niitä pitää määritellä pelkästään testausta varten Suunnittele testitapaukset, jotka testaavat perittyjen ja ylimääriteltyjen metodien kutsumista arvioi, mitkä perityistä metodeista pitää testata uudelleen arvioi, voidaanko kantaluokan testitapauksia uudelleenkäyttää älä unohda rakentajia ja purkajia (resurssien vapauttaminen) Mika Katara: Ohjelmistojen testaus, Harmaalaatikkotestaus: mikäli luokan käyttäytyminen on spesifioitu tilakoneen avulla, suunnittele joukko testitapauksia ko. spesifikaation avulla mikäli tilakonespesifikaatiota ei ole, sellainen ehkä kannattaa tehdä testauksen helpottamiseksi Lasilaatikkotestaus: täydennä testitapausten joukkoa käyttäen apuna koodia ja sen rakennetta Suunnittele testitapauksia, jotka testaavat poikkeustenkäsittelyä poikkeukset, joita tämän luokan metodit voivat heittää, ottaa kiinni ja käsitellä Mika Katara: Ohjelmistojen testaus,

8 Täydennä testitapausten joukkoa testeillä, jotka testaavat tämän luokan metodeihin kohdistuvia polymorfia metodikutsuja Kannattaa kiinnittää huomiota myös luokan sisällä tapahtuvaan vuorovaikutukseen metodit voivat käyttää samoja muuttujia metodit voivat kutsua toisia, saman luokan metodeita Mika Katara: Ohjelmistojen testaus, Luokkien integrointitestaus Vertaa kokoava inkrementaalinen integrointistrategia Aloitetaan pienistä luokkien muodostamista klustereista, joiden kokoa kasvatetaan vähitellen Ensin pitää kuitenkin selvittää luokkien väliset riippuvuudet luokka A riippuu B:stä mikäli A:n instanssit kutsuvat B:n instanssien metodeja A:n instanssit sisältävät viitteitä B:n instansseihin perintäsuhteet ja abstraktit luokat voidaan jättää huomioimatta huom! call-back tyyppisten kutsujen tapauksessa (esim. käyttöliittymäkirjastot) sovellus riippuu aina kirjastosta eikä päinvastoin Mika Katara: Ohjelmistojen testaus,

9 Hyvin suunnitelluissa ohjelmistoissa riippuvuudet eivät yleensä muodosta silmukoita, jolloin klusterin luokat ja niiden väliset riippuvuudet muodostavat puumaisen rakenteen mikäli silmukoita löytyy, ne tulee purkaa korvaamalla jokin luokka tyngällä Aloitetaan testaus klusterin lehtiluokista, jotka eivät riipu muista luokista Liitetään mukaan lehtiluokkien kantaluokkia jne. edeten kohti puun juurta Mika Katara: Ohjelmistojen testaus, Jokaisessa vaiheessa suunnitellaan/ajetaan klusterille sen toiminnallisuutta testaavia mustalaatikkotestejä Tarvittaessa suunnitellaan/ajetaan lisäksi lasilaatikkotestejä esim. kunnes tavoitteeksi asetettu kattavuus on saavutettu Testitapauksien pitäisi testata erityisesti myös sellaisia poikkeuksia, jotka heitetään eri luokassa kuin missä ne käsitellään (klusterin sisällä) klusterin luokkien välillä tapahtuvia polymorfisia metodikutsuja Mika Katara: Ohjelmistojen testaus,

10 Oliotestauksen skaalaaminen riskien suhteen Pöyhösen ja Stenbergin (NRC) mukaan ( Pieni riski: 100% metodikattavuus ekvivalenssiluokkien käyttö (lailliset ekvivalenssiluokat) raja-arvoanalyysin käyttö (laillisten ekvivalenssiluokkien rajaarvot) keskeisten perintäsuhteiden testaus dynaaminen sitominen testataan perinnän yhteydessä muistinhallinnan testauksessa testataan tärkeimmät rakentajat sekä kaikki purkajat joitakin osia koodista tarkastetaan käytetään koodin staattista analysointia olio-mallit tarkastetaan epämuodollisesti Mika Katara: Ohjelmistojen testaus, Keskisuuren riskin tapauksessa edellisten lisäksi: 100% metodikattavuus ekvivalenssiluokkien käyttö (lailliset + laittomat ekvivalenssiluokat) enemmän perintäsuhteita poikkeuksien testaus dynaaminen sidonta testataan erikseen ei kuitenkaan kaikkia kombinaatioita kaikki rakentajat testataan olio-mallit tarkastetaan Mika Katara: Ohjelmistojen testaus,

11 Suuren riskin tapauksessa edellisten lisäksi: 100% metodikattavuus raja-arvoanalyysin käyttö (laillisten + laittomien ekvivalenssiluokkien raja-arvot ) kaikki perintäsuhteet testataan dynaamisen sidonnan kaikki kombinaatiot testataan järjestelmälliset tarkastukset koodille Mika Katara: Ohjelmistojen testaus, Mock-oliot Olioiden yksikkötestauksessa havaittuja käytännön ongelmia: Riippuvuuksien korvaaminen tyngillä voi olla työlästä (tietokannat, protokollapinot, käyttöliittymät) testattavan yksikön koko kasvaa Testien toistettavuus usein heikko ad-hoc tyyppistä käsityötä Järjestelmää ei ole suunniteltu testattavaksi Mackinnon, Freeman, Craig: Endo-testing: Unit testing with Mock Objects, XP2000 Mock-olioita voidaan ajatella älykkäinä tynkinä Mika Katara: Ohjelmistojen testaus,

12 Strukturoidumpi tapa luoda ja ohjata alkuperäisiä palveluita korvaavaa testikoodia Vaatii sovelluskohteelta hyvien tapojen mukaista oliosuunnittelua Mock-olioiden käyttö voi vaatia refaktorointia Mock-olioiden edut Halutun tilan asettaminen helppoa Toiminnallisuuksien muuttaminen helppoa Tilan tarkastaminen helppoa Mika Katara: Ohjelmistojen testaus, Esimerkki: testataan yksinkertaista valuuttamuunninta: public class Converter_math { public static void Eur2fim(String euroja_str, PrintStream out){ double markkoja_d = 0.0; try { markkoja_d = Double.parseDouble(euroja_str)* ; out.println("tulos: " + euroja_str + " euroa vastaa " + markkoja_d + " markkaa."); } catch (NumberFormatException e) { out.println("virheellinen euromäärä: " + euroja_str); }}} Mika Katara: Ohjelmistojen testaus,

13 Pääohjelma: public class Converter_main { public static void main(string[] args) { if(args.length >= 1) { if(args[0].equals("testaus")) { test_converter_math(); } else { Converter_math.Eur2fim(args[0], System.out); }} else { System.err.println("Käyttö: Anna konvertoitava " + "euromäärä parametrina");}}} Mika Katara: Ohjelmistojen testaus, Testaus hyödyntäen mock objecteja: public static void test_converter_math() { MockPrintStream mock = new MockPrintStream(System.out); // Testitapaus 1 mock.setexpectedprintlncalls(1); mock.setexpectedstringsegment("virheellinen euromäärä: " + "virhetilanne"); Converter_math.Eur2fim("virhetilanne", mock); mock.verify(); // Testitapaus 2 mock.setexpectedprintlncalls(1); mock.setexpectedstringsegment("tulos: 100 euroa vastaa " + "markkaa"); Converter_math.Eur2fim("100", mock); mock.verify(); } Mika Katara: Ohjelmistojen testaus,

14 Sovelluskehyksiä/kirjastoja, jotka tarjoavat erilaisia tapoja ja ympäristöjä käyttää mock-olioita: POCMock/NMock (.NET) Mockrunner (J2EE) EasyMock DynaMock Mika Katara: Ohjelmistojen testaus, Kehittäjällä vastuu testattavuuden rakentamisesta Suunnittelumallit auttavat Vastuuta ei voi siirtää työkaluille tai menetelmille Yksikkötestaus vaatii hikeä/asennemuutosta, varsinkin alussa kun testiympäristö täytyy pystyttää Mock-olioiden käytöstä voi seurata se, että testattava yksikkö suunnitellaan paremmin Mika Katara: Ohjelmistojen testaus,

15 Testauspatternit Viimevuosina on tunnistettu testauspatterneja, joita voi hyödyntää testauksessa samaan tapaan kuin suunnittelumalleja (design pattern) oliopohjaisessa suunnittelussa Esimerkkinä mainittakoon self-shunt-yksikkötestauspatterni Ideana on, että testitapausta mallintava olio välittää itsensä parametrina testikohteelle teeskennellen olevansa jokin oikea olio, jonka kanssa testikohteen pitäisi kommunikoida Mika Katara: Ohjelmistojen testaus, Tietoturvan testaaminen Vielä pari vuotta sitten tietoturva oli aika pienen piirin mielenkiinnon kohteena. Valitettavasti nykypäivänä kaikkien on oltava siitä kiinnostuneita. Miten sitten tietoturvaan liittyviä seikkoja pitäisi testata? Mika Katara: Ohjelmistojen testaus,

16 Mukailtu lähteestä [Whittaker&Thompson 03] Tietoturvan testaaminen on tärkeää ja sen merkitys tulee vain korostumaan tulevaisuudessa Tietokoneita (PC, kännykkä, PDA jne.) käytetään yleisesti luottamuksellisten ja salaisten tietojen säilyttämiseen Verkkoa halutaan käyttää yhä enemmän myös tällaisen tiedon siirtämiseen paikasta toiseen Mikäli jätät tietoturvan testauksen tekemättä, murtautujat tekevät sen puolestasi! Mika Katara: Ohjelmistojen testaus, Kuten aiemmin on nähty, jotkin ohjelmistoissa lymyävistä virheistä aiheuttavat häiriöitä esim. ohjelmiston käyttäjälle näkyvään toiminnallisuuteen, jotkin toiset taas voivat haitata suorituskykyä Tietoturvan testauksessa on sitä vastoin tarkoituksena löytää virheitä, jotka joissain tilanteissa saattavat vaarantaa järjestelmän tietojen turvallisuuden Esim. nettipankin avainluvut jäävät selaimen välimuistiin vaikka sen tyhjentäisikin session lopuksi Mika Katara: Ohjelmistojen testaus,

17 Ohjelmisto voi toimia muuten täysin oikein, mutta se voi silti sisältää virheitä, jotka voivat vaarantaa tietoturvan Tietoturvaan liittyviä vaatimuksia ei vielä nykyään ymmärretä kovin laajasti Verkko on täynnä softaa, jonka tekemisessä ei ole kiinnitetty yhtään huomiota tietoturvaan Esim. käyttöjärjestelmiä joudutaan jatkuvasti paikkaamaan tietoturvapäivityksillä Mika Katara: Ohjelmistojen testaus, Tietoturvatestauksen tarpeita voi selvittää riskianalyysin avulla, jolla saadaan selville tietojen ja liiketoiminnan suojauksen kannalta tärkeimmät seikat Tietoturvaa voidaan varmistaa ja täytyy varmistaa monella tasolla, esim. serverin fyysinen sijoittelu vs. palomuurit vs. käyttäjien autentikointi Julkishallinto on ohjeistanut tietoturvakysymyksissä tietojärjestelmien käyttäjiä ja toimittajia: us/02_tietoturvaohjeet_ja_maaraykset/index.jsp Mika Katara: Ohjelmistojen testaus,

18 OWASP Top ( A1 Injection A2 Cross-Site Scripting (XSS) A3 Broken Authentication and Session Management A4 Insecure Direct Object References A5 Cross-Site Request Forgery (CSRF) A6 Security Misconfiguration (NEW) A7 Insecure Cryptographic Storage A8 Failure to Restrict URL Access A9 Insufficient Transport Layer Protection A10 Unvalidated Redirects and Forwards (NEW) Mika Katara: Ohjelmistojen testaus, Tietoturvassa on pohjimmiltaan kyse salaisuuksien pitämisestä Tyypillisiä tietoturvaan liittyviä huolen aiheita ovat esimerkiksi: Haluan myydä softaani kovasta rahasta ja varmistua siitä, ettei kukaan pääse levittämään laittomia kopioita Haluan, että vain tietyt henkilöt pääsevät käsiksi tiettyihin osiin ohjelmistosta (access control) Haluan suojata palvelinohjelmistoni hyökkäyksiä vastaan (ja silti sallia käyttäjän tarjoaman koodin suorittamisen ) Haluan pitää ohjelmistoni käsittelemät tiedot salaisina sekä levyllä, muistissa että siirrettäessä verkon yli Mika Katara: Ohjelmistojen testaus,

19 Toisin kuin perinteisessä testauksessa, tietoturvan testauksessa on vähemmän hyötyä spesifikaatioista Sen sijaan, että testattaisiin täyttääkö ohjelmisto spesifikaationsa, kannattaa erityisesti tutkia Mitä sivuvaikutuksia toteutus sallii puskurin ylivuodon seurauksena voidaan suorittaa vierasta koodia Miten ohjelmisto käyttäytyy ympäristönsä kanssa käyttöjärjestelmäkutsut, verkkoliikenne yms. Mika Katara: Ohjelmistojen testaus, Käyttöliittymän kautta tulevat uhat Käyttöliittymän suojaus luvattomilta käyttäjiltä esim. salasanan avulla toimiiko käyttäjän tunnistaminen oikein? hyväksytäänkö heikkoja salasanoja? kelpaako esim. käyttäjätunnus salasanaksi? mikäli käyttäjä saa päästä käsiksi vain osaan tiedoista (esim. kotihakemisto monen käyttäjän käyttöjärjestelmässä) toimivatko rajoitukset oikein? Mika Katara: Ohjelmistojen testaus,

20 voiko salaista tietoa saada ohjelmasta ulos esim. copy/paste toiminnon tai ruudunkaappauksen avulla? voidaanko käyttöliittymän kenttiin syöttää laittomia syötteitä kuten liian pitkiä merkkijonoja? seurauksena voi olla esim. puskurin ylivuoto, jonka seurauksena taas voi vierasta koodia päästä suoritukseen järjestelmä voi myös kaatua, mikä voi tarkoittaa palvelunestoa eli järjestelmän tarjoamia palveluja ei voida käyttää (denial of service) Mika Katara: Ohjelmistojen testaus, Tiedostojärjestelmän kautta tulevat uhat Ohjelmistojen liitynnät tiedostojärjestelmään jäävät usein huonolle testaukselle Tiedostoihin kuitenkin tallennetaan salaisuuksia kuten salasanoja, lisenssiavaimia yms. Windows-maailmassa registry on erityisen huono paikka tallentaa salaisuuksia Unix-maailmassa sama pätee tietysti ohjelmien omiin konfiguraatiotiedostoihin (.emacs tms.) Tiedostoformaattien perusteella voidaan tehdä fuzz-testausta, joka tarkistaa kuinka robustisti tiedosto-operaatiot on toteutettu Mika Katara: Ohjelmistojen testaus,

21 Käyttöjärjestelmän kautta tulevat uhat Mikäli ohjelma säilyttää muistissaan kryptattuna salaista tietoa, on tämä yleensä turvassa; ongelmia syntyy silloin kun tietoa käsitellään kryptaamattomana Mikäli käyttöjärjestelmän tarjoamat resurssit vähenevät, kuten käytettävissä olevan muistin määrä, seurauksena saattaa olla esim. palvelunesto ohjelman kontrolloimaton kaatuminen voidaanko salaiset tiedot dumpata levylle selväkielisinä? Mika Katara: Ohjelmistojen testaus, Toisten ohjelmien kautta tulevat uhat Yhä suuremmassa määrin ohjelmat käyttävät muita ohjelmia erilaisten rajapintojen kautta Mitä tapahtuu, jos jokin toinen ohjelma joutuu hyökkäyksen uhriksi tai kaatuu? Testaajan täytyy selvittää kytkennät muihin ohjelmiin ja selvittää tilanteet, joissa nämä saattavat aiheuttaa uhan tietoturvalle Esimerkiksi kommunikoitaessa verkon kautta on syytä varmistaa, että ohjelmisto toimii oikein laittomien pakettien, liian lyhyiden ja liian pitkien pakettikehysten yms. kanssa fuzz-testaus on tässä jälleen paikallaan vastaavia huolen aiheita liittyy myös tavallisiin rajapintoihin Mika Katara: Ohjelmistojen testaus,

22 Ohjelmiston itsensä suojaaminen Joskus ohjelma sisältää algoritmeja yms., jotka antavat edun kilpailijoihin nähden Tällöin on järkevää suojautua takaisinmallintajia vastaan, jotka voivat yrittävät selvittää koodin sisältöä esim. disassembleria käyttäen Mika Katara: Ohjelmistojen testaus, Monesti hyökkäykset saattavat tulla monelta rintamalta yhtä aikaa Esim. blokataan sovelluksen pääsy johonkin kirjastoon ja annetaan käyttöliittymän kautta laiton syöte samanaikaisesti Joskus myös ohjelmistoon sisäänrakennetut ominaisuudet saattavat tarjoa turvallisuusreikiä Binääriin on esimerkiksi saattanut jäädä mukaan instrumentoitua testikoodia, joka tarjoaa valmiita koukkuja testitapausten suorittamista varten Yksittäisen komponentin kehittäjä on saattanut olla tietämätön kokonaisuudesta, johon komponentti kuuluu Mikäli esim. parametrina välitettävä tieto on salaista, sitä ei saa kirjoittaa edes väliaikaisesti selväkielisenä levylle Mika Katara: Ohjelmistojen testaus,

23 Esimerkkihyökkäyksiä Blokkaa sovelluksen kutsut (dynaamisiin) kirjastoihin Käytetään työkalua, jonka avulla voidaan tarkkailla mitä kirjastoja sovellus kutsuu missäkin tilanteessa ja blokataan kutsut johonkin tiettyyn kirjastoon Tarkoituksena testata, että sovellus ei vaaranna tietoturvaa vaikka kirjastoa ei olisikaan saatavilla Mika Katara: Ohjelmistojen testaus, Usein kehittäjät olettavat, että kirjastot ovat aina saatavilla tämä on erityisen vaarallinen oletus, mikäli kirjastofunktiota käytetään jonkin tietoturvaan liittyvän asian varmistamiseen (esim. käyttäjien oikeudet) mikäli yritetään kutsua kirjastofunktiota, johon pääsy on blokattu, seurauksena on yleensä poikkeuskäsittelyn käynnistyminen usein poikkeustenkäsittelijöitä ei ole testattu niin hyvin kuin muuta koodia Mika Katara: Ohjelmistojen testaus,

24 seurauksen voi olla sovelluksen kaatuminen ja salaisten tietojen dumppaaminen näytölle tai levylle sovellus voi myös näyttää jatkavan toimintaa normaalin tapaan, vaikka kirjastofunktion tarjoamaan palvelua ei olisikaan käytettävissä tämä voi olla merkki esimerkiksi siitä, että sovelluksessa ei tarkasteta jotain paluuarvoa vaikka pitäisi seurauksena voi olla jopa väärien oikeuksien myöntäminen käyttäjälle Mika Katara: Ohjelmistojen testaus, Etsi epäilyttäviä optioita ja niiden yhdistelmiä Sekä komentoriviltä, että graafisen käyttöliittymän kautta annettavien optioiden testaus on vaikeaa mahdollisten kombinaatioiden suuren määrän vuoksi Mikäli testauksessa keskitytään vain käyttäjän kannalta oleellisimpiin vaihtoehtoihin, on hyvinkin mahdollista, että joidenkin optioiden valinnan seurauksena sovellus suorittaa testaamatonta koodia Kannattaa yrittää etsiä sellaisia optioiden kombinaatioita, joiden yhteisvaikutuksesta tietoturva voi vaarantua Mikäli kyseessä on vanhan ohjelman uusi versio, kannattaa tutustua myös edelliseen versioon ja sen dokumentaatioon Mika Katara: Ohjelmistojen testaus,

25 mikäli jokin optio on kadonnut uuden version dokumentaatiosta, kannattaa kokeilla vieläkö toteutus tukee sitä ja jos tukee, toimiiko se turvallisesti Käyttäjältä tulevan syötteen tarkastaminen voi olla toteutettu vain osalle optioista jos sovellus kysyy esimerkiksi osoitetta, ja maa voidaan valita ennalta määrätystä joukosta valikkoa käyttäen, voi postinumerokentän tarkastaminen riippua siitä mikä maa valitaan sovellus voi sallia ylipitkän ja kontrollimerkkejä sisältävän postinumeron syöttämisen» olisiko mahdollista syöttää SQL-lauseita ja suorittaa niitä? vai koodataan postinumerontarkastusalgoritmi myös Norsunluurannikon osoitteille? Mika Katara: Ohjelmistojen testaus, Porttiskannaus Verkkoa hyödyntävien sovellusten on suojauduttava porttiskannaajia vastaan Käytetään testauksen apuna porttiskanneria Testataan erityisesti sovellusspesifisten porttien käyttö (numerot ) Mikäli sovellus yrittää salata avoinna olevan portin antamalla virheilmoituksen kytkeytymisyrityksestä, täytyy virheilmoituksen olla standardimuotoa, ettei se herättäisi epäilyksiä Mika Katara: Ohjelmistojen testaus,

26 Etsi vaihtoehtoisia tapoja tehdä sama asia Kuinka monella eri tavalla voit Windowsissa avata Wordasiakirjan? Ovatko kaikki tavat varmasti testattu olevan turvallisia? How to break software security -kirjan kirjoittajat löysivät tietoturva-aukon Windows XP:stä seuraavasti: Mika Katara: Ohjelmistojen testaus, Koska Windows Exploreria voi käyttää moneen samaan tarkoitukseen kuin Internet Exploreria, luetaan MS Exchange Serverin Outlook Web Access rajapintaa käyttäen ensin sähköpostit IE:llä siten, että käynnistetään IE WE:n kautta Session jälkeen suljetaan sekä WE- että IE-ikkunat Seuraavaksi otetaan yhteyttä WE:llä sähköpostipalvelimeen ja kas kummaa, päästään sisään ilman salasanan kyselyä! Kun yritetään lukea yksittäisiä posteja erillisestä ikkunasta, salasanaa kysytään, mutta käyttämällä Outlookin esikatselua salasanaa ei kysyä Opetus: tietoturva saatiin murrettua kun käytettiin vaihtoehtoista tapaa tehdä sama asia korvattiin Internet Exprorer Windows Explorerilla korvattiin Outlookin posti-ikkuna esikatselulla Huom! Tämä vika on sittemmin korjattu Mika Katara: Ohjelmistojen testaus,

27 Tietoturvatestauksen ongelmia Testauksen täytyy löytää kaikki ohjelmistossa olevat tietoturvaaukot, vastustajalle riittää yksi Tietoturvaan liittyvät häiriöt ovat yleensä paljon huomaamattomampia kuin esim. toiminnallisuus- tai suorituskykyhäiriöt Mika Katara: Ohjelmistojen testaus, Staattisen testauksen tekniikat Laadunvarmistajan ja testaajan työkalupakkiin kuuluu toisiaan täydentäviä tekniikoita. Seuraavassa tutustutaan hyväksi havaittuihin ryhmätyötekniikoihin sekä hieman myös automaattiseen koodin analysointiin. Mika Katara: Ohjelmistojen testaus,

28 11.1 Tarkastus Koostettu mukaillen lähteestä: Ahtee, Haikala, Märijärvi: Tarkastukset (koulutusmateriaali) Inspection IEEE (Standard Glossary of Software Engineering Terminology): A static analysis technique that relies on visual examination of development products to detect errors, violations of development standards, and other problems. Types include code inspection; design inspection. Projektin sisäinen, 3-6 osallistujaa Hyvin muodollinen verrattuna muihin ryhmätyötekniikoihin Aikataulutus joustavaa, useita tarkastuksia projektin vaiheen aikana Tarkastetaan kerralla pieniä kokonaisuuksia Mika Katara: Ohjelmistojen testaus, Tekniikan kehitti Fagan IBM:llä 1970-luvulla Tarkastuksia pidetään tehokkaimpana tunnettuna laadunvarmistuskeinona Tukee prosessia ja projektia mm. Pyrkimällä poistamaan virheet mahdollisimman varhaisessa vaiheessa Tekemällä projektin etenemisen näkyväksi hyväksytty tarkastus vastaa yhden etapin saavuttamista Jakamalla tietoa useammalle henkilölle Mika Katara: Ohjelmistojen testaus,

29 Tarkastustilaisuus kestää n. 2 tuntia, jonka aikana voidaan tarkastaa enintään 50 sivua dokumenttia tai 500 riviä koodia Löydetään noin % virheistä Tarkastukset kuluttavat noin 5-15 % työajasta Erittäin kustannustehokasta! Vaikka menettely ei lisääkään työmäärää kovin paljon, johdon sitoutuminen tarvitaan Mika Katara: Ohjelmistojen testaus, Tarkastukset ohjelmistoprosessissa Kerrasta oikein Spesifikaatio Tee Luonnos tarkasta OK Vaihetuote n (Vaihetuote n-1) Työstä Mika Katara: Ohjelmistojen testaus,

30 Tarkastaa voidaan mm. Tarjous, sopimus Määrittelydokumentti Projektisuunnitelma Suunnitteludokumentti Testaussuunnitelma Koodi Käyttäjälle menevä dokumentaatio Koulutusmateriaali Mika Katara: Ohjelmistojen testaus, Tarkastustilaisuuden roolijako Puheenjohtaja Tarkastettavan vaihetuotteen tekijä Sihteeri = usein tekijä Tarkastaja = kaikki Esittelijä voi olla tekijä vain kooditarkastuksissa Sovellusalueen tms. asiantuntija, kieliasun tarkastaja, käyttäjänäkökulman edustaja, testausasiantuntija jne. joku voi keskittyä muistinhallinnan tarkastamiseen, toinen silmukoihin, kolmas algoritmeihin, neljäs rajapintoihin jne. Mika Katara: Ohjelmistojen testaus,

31 Nyrkkisääntöjä Mikäli ei voida tarkastaa kaikkea, keskitytään tärkeimpiin osiin Huolellinen valmistautuminen on erittäin tärkeää tarkastettava materiaali jakoon vähintään 3 vrk etukäteen tarkastustilaisuus kannattaa peruuttaa, jos sen onnistumiselle ei ole riittäviä edellytyksiä esim. liian keskeneräinen vaihetuote Arvioidaan aina tuotetta, ei tekijää Tavoitteena ongelmien löytäminen eikä niiden ratkaiseminen Korjaukset kosmeettisiin virheisiin voi toimittaa sihteerille jälkikäteen Mika Katara: Ohjelmistojen testaus, Kannattaa pohtia etukäteen sääntöjä, jotka helpottavat kohteen tarkastamista Esim. ottaako vaatimus huomioon asiakkaan todellisen tarpeen Säännöt kannattaa valita huolella kohteen, organisaation, prosessin, riskien yms. mukaan Jo muutamalla säännöllä päästään hyviin tuloksiin (Marko Komssi, EuroSTAR 2004) Sääntöjen tarkkuutta voidaan kasvattaa prosessin edetessä Tarkastuksista on kehitetty IBM:llä myös sellainen versio, joka ei edellytä etukäteisvalmistelua: E. Farchi, S. Ur: Selective Homeworkless Reviews, Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation IEEE Computer Society Washington, DC, USA Mika Katara: Ohjelmistojen testaus,

32 Tarkastusten kypsyystasot Tarkastuksia pidetään Tarkastuksista on jotakin hyötyä Tarkastukset ovat tehokkaita Tarkastuksista kerätään tilastotietoja Virheanalyysejä ja tarkastuslistoja tehdään kokemusten perusteella Kerättyjä tietoja käytetään tarkastus- ja ohjelmistoprosessin parantamiseen hyödyllinen projektille hyödyllinen organisaatiolle Mika Katara: Ohjelmistojen testaus, Katselmointi Review, technical review IEEE : A process or meeting during which a work product, or set of work products, is presented to project personnel, managers, users, customers, or other interested parties for comment or approval. Types include code review, design review, formal qualification review, requirements review, test readiness review. Käytetään vaiheen päättymisen toteamiseen Esim. määrittely- ja suunnitteluvaihe Katsotaan formaalisti, että kaikki vaiheen lopetusehdon vaatimukset on täytetty Tavoitteena tehdä projektin eteneminen näkyväksi Halutaan saavuttaa konsensus, ei niinkään löytää virheitä Mika Katara: Ohjelmistojen testaus,

33 Projektin katselmukset ja tarkastukset [Haikala&Märijärvi 06]: esitutkimus& sopimus määrittely suunnittelu tarkastus katselmointi, toimittajan katselmointi, asiakas mukana ohjelmointi ja moduulitestaus integrointi järjestelmätestaus aika Mika Katara: Ohjelmistojen testaus, Huom! Jotta asia ei olisi liian yksinkertainen, puhutaan monissa organisaatioissa (esim. koodin) katselmoinnista vaikka tosiasiassa käytetäänkin tarkastusmenettelyä tai jotain sen kevennettyä muunnelmaa Koska kyse on kuitenkin tavoitteiltaan erilaisista tekniikoista, on syytä selvittää etukäteen, onko tarkoitus todella katselmoida vai tarkastaa Mika Katara: Ohjelmistojen testaus,

34 11.3 Läpikäynti Walkthrough IEEE : A static analysis technique in which a designer or programmer leads members of the development team and other interested parties through a segment of documentation or code, and the participants ask questions and make comments about possible errors, violation of development standards, and other problems. Tehdään yleensä vain koodille, tavoitteena virheiden löytäminen Tekijä selittää mitä ohjelma hänen mielestään tekee Mika Katara: Ohjelmistojen testaus, Tarkastukseen verrattuna läpikäynti Korostaa tekijän roolia tilaisuudessa On epämuodollisempi Vaatii vähemmän koulutusta Löytää vähemmän virheitä Ei yleensä ole yhtä kustannustehokas Mika Katara: Ohjelmistojen testaus,

35 11.4 Ohjelman staattinen analyysi Idea: analysoidaan lähdekoodia automaattisesti ilman sen suorittamista Tarkoituksena Löytää koodista virheitä Huomata poikkeamia sovituista koodauskäytännöistä (tyylioppaat) Generoida koodista dokumentaatiota Laskea arvoja ohjelman pituutta, monimutkaisuutta yms. kuvaaville mittareille Mika Katara: Ohjelmistojen testaus, Hyödynnettävät tekniikat perustuvat yleensä tieto- ja kontrollivuoanalyysiin, rajoitusten ratkaisemiseen (constraint solving) yms. Ensimmäinen suuren yleisön käyttöön tarkoitettu staattinen koodianalysaattori oli Unixin mukana levinnyt Lint Lintin tarkoituksena oli löytää tiettyjä C-kielelle tyypillisiä virheitä, joita senaikaiset kääntäjän eivät havainneet Mika Katara: Ohjelmistojen testaus,

36 Minkä tyyppisiä virheitä voidaan löytää? Esim. Syntaksivirheet Samaa koodia useammassa kuin yhdessä paikassa, kuollut koodi (ei suoriteta ikinä) Koodin ylläpidettävyys ja siirrettävyysongelmia Alustamattomat muuttujat Käyttämättömät paluuarvot Virheellinen osoitinten käyttö Puskurin ylivuodot yms. tietoturvaongelmat Mika Katara: Ohjelmistojen testaus, Tunnettuja staattisia analysaattoreita: PC-Lint, Coverity, PolySpace, KlocWork Ominaista korkea hinta, lukuun ottamatta ensimmäistä Skaalautuvuus voi osoittautua ongelmaksi Väärien hälytysten määrä voi nousta suureksi Potentiaalisesti maksavat itsensä takaisin hyvinkin nopeasti löytämällä arvokkaita virheitä turvallisuuskriittisestä koodista Mika Katara: Ohjelmistojen testaus,

37 Mitä apua dokumentointiin? Esim: Javadoc-tyyppinen API-dokumentaatio Doxygen-tyyppinen graafinen malli (UML) ohjelmistosta Kutsuhierarkia bar1() foo() bar2() Mika Katara: Ohjelmistojen testaus,

Olio-ohjelmien testaamisesta

Olio-ohjelmien testaamisesta Olio-ohjelmien testaamisesta Mika Katara et. al. Ohjelmistotekniikan laitos Tampereen teknillinen yliopisto 13.8.2013 Ohjelmistojen testaus, 2013 1(32) Sisällysluettelo 1/2 Olio-ohjelmien testaamisesta

Lisätiedot

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

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu TESTIRAPORTTI LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001 Tekijä:

Lisätiedot

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II

Verifioinnin ja validoinnin ero. 7. Verifiointi ja validointi. Verifiointi- ja validointitekniikat. Verifiointi- ja validointitekniikat II 7. Verifiointi ja validointi Verifiointi ja validointi (V&V) on ohjelmistotuotannon työvaihe, missä varmistetaan, että ohjelmisto täyttää sille asetetut implisiittiset ja eksplisiittiset vaatimukset ja

Lisätiedot

Tech Conference Office 365 tietoturvan heikoin #TechConfFI

Tech Conference Office 365 tietoturvan heikoin #TechConfFI Tech Conference 28.-29.5.2015 Office 365 tietoturvan heikoin lenkki? @NestoriSyynimaa #TechConfFI Puhujasta Senior-konsultti Nestori Syynimaa, PhD MCT, MCSA (Office 365) www.linkedin.com/in/nestori Luennon

Lisätiedot

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

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI Vesa Tenhunen Tarkastusmenettelyt Keino etsiä puutteita ohjelmakoodeista, dokumenteista ym. ohjelmistoprosessissa syntyvästä materiaalista Voidaan käyttää kaikissa

Lisätiedot

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

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science Testaustyökalut Luento 11 Antti-Pekka Tuovinen 25 April 2013 1 Tavoitteet Työkalutyyppejä Testauksen hallinta Testien määrittely Staattinen analyysi Dynaaminen testaus 25 April 2013 2 1 Työkalut ja testaus

Lisätiedot

tsoft Tarkastusmenettelyt ja katselmukset Johdanto Vesa Tenhunen 4.2.2004

tsoft Tarkastusmenettelyt ja katselmukset Johdanto Vesa Tenhunen 4.2.2004 Tarkastusmenettelyt ja katselmukset tsoft Vesa Tenhunen 4.2.2004 http://cs.joensuu.fi/tsoft/ Johdanto Yksi tärkeimmistä tekijöistä laadukkaiden ohjelmistojen tuottamisessa on puutteiden aikainen havaitseminen

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistojen mallintaminen. Luento 11, 7.12. Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,

Lisätiedot

Menetelmäraportti Ohjelmakoodin tarkastaminen

Menetelmäraportti Ohjelmakoodin tarkastaminen Menetelmäraportti Ohjelmakoodin tarkastaminen Sisällysluettelo 1. Johdanto...3 2. Menetelmän kuvaus...4 2.1. Tarkastusprosessi...4 2.1.1. Suunnittelu...4 2.1.2. Esittely...5 2.1.3. Valmistautuminen...5

Lisätiedot

Lohtu-projekti. Testaussuunnitelma

Lohtu-projekti. Testaussuunnitelma Lohtu-projekti Testaussuunnitelma Versiohistoria: 1.0 19.2.2003 1. versio Mari 1.1 20.2.2003 Muutoksia Mari 1.2 25.2.2003 Katselmoinnissa esiin tulleet Mari muutokset 1.3 17.3.2003 2. syklissä tehtävät

Lisätiedot

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

Testausprosessin vaatimukset. 2. Testausprosessi (Artikkelit) Vesiputousmallin ongelmia. V-mallin neljä osavaihetta. Testausprosessimalli V-malli 2. ausprosessi (Artikkelit) Nykyisin useimpien prosessimallien lähtökohta on, että testaus on oleellinen osa ohjelmistotuotantoprosessia. Itse asiassa huolellinen testaus vie helposti 50% tai enemmän käytettävistä

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

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

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Ohjelmiston testaus ja laatu. Testaustasot

Ohjelmiston testaus ja laatu. Testaustasot Ohjelmiston testaus ja laatu Testaustasot Testauksen vaihejako Tarpeet / sopimus Järjestelmätestaus Hyväksymiskoe Määrittely testauksen suunnittelu ja tulosten verifiointi Arkkitehtuurisuunnittelu Moduulisuunnittelu

Lisätiedot

T Testiraportti - järjestelmätestaus

T Testiraportti - järjestelmätestaus T-76.115 Testiraportti - järjestelmätestaus 18. huhtikuuta 2002 Confuse 1 Tila Versio: 1.0 Tila: Päivitetty Jakelu: Julkinen Luotu: 18.04.2002 Jani Myyry Muutettu viimeksi: 18.04.2002 Jani Myyry Versiohistoria

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

Dynaaminen analyysi I

Dynaaminen analyysi I Dynaaminen analyysi I Luento 6 Antti-Pekka Tuovinen 4 April 2013 1 Tavoitteet Testitapausten suunnittelun ja suorituksen perusteet Black-Box testitapausten suunnittelu Ekvivalenssiluokat Raja-arvo (reuna-arvo)

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016

CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET. Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016 CT60A4150 OHJELMISTOTESTAUKSEN PERUSTEET Jussi Kasurinen (etu.suku@lut.fi) Kevät 2016 VIIME KERRALLA MENETELMIÄ Musta laatikko Valkea laatikko Harmaa laatikko Regressio Automaatio Rasitus (kuormitus)

Lisätiedot

JUnit ja EasyMock (TilaustenKäsittely)

JUnit ja EasyMock (TilaustenKäsittely) OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

Lisätiedot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Copyright by Haikala. Ohjelmistotuotannon osa-alueet Copyright by Haikala Ohjelmistotuotannon osa-alueet Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary

Lisätiedot

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988)

Katselmoinnit. review) Katselmoinnit (review( Mitä ovat katselmoinnit? Katselmoinnin määritelmä (IEEE 1988) Katselmoinnit Johdatus ohjelmistotekniikkaan Sami Kollanus 19.10.2004 Katselmoinnin määritelmä (IEEE 1988) An evaluation of software element(s) or projects status to ascertain discrepancies from planned

Lisätiedot

Testitapausten suunnittelu

Testitapausten suunnittelu Testitapausten suunnittelu Sytyke-risteily 3.9.2002 Anna-Liisa Sihvonen Ohjelmistotestauksen kaksi perusongelmaa Testipaketin luominen olemassaolevan kuvauksen perusteella Erillisten testitapausten määrä

Lisätiedot

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

Automaattinen regressiotestaus ilman testitapauksia. Pekka Aho, VTT Matias Suarez, F-Secure 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

Lisätiedot

Dynaaminen analyysi II

Dynaaminen analyysi II Dynaaminen analyysi II Luento 7 Antti-Pekka Tuovinen 9 April 2013 1 Tavoitteet Black-box testitapausten suunnittelutekniikat II Tilamallien käyttö Syys-seurausverkot ja päätöstaulut Käyttötapaukset Yhteenveto

Lisätiedot

Convergence of messaging

Convergence of messaging Convergence of messaging Testaussuunnitelma The Converge Group: Mikko Hiipakka Anssi Johansson Joni Karppinen Olli Pettay Timo Ranta-Ojala Tea Silander Helsinki 20. joulukuuta 2002 HELSINGIN YLIOPISTO

Lisätiedot

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa: Testaus käsite Sekalaista asiaa Sami Kollanus 15.11.2006 Jos ajatellaan, että = V&V, voidaan erottaa: Staattinen Dynaaminen Toisaalta voidaan määritellä Myersin (1979) mukaan: Testaus on ohjelman suoritusta,

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

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

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza Testaussuunnitelma Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Versio 1.0 Ehdotus Laatija Raine Kauppinen VERSIOHISTORIA Versionotyyppi Versio- Päiväys Tekijä

Lisätiedot

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen Yksikkötestaus Kattava testaus Moduulitestaus Ohjelman testaus 1 Kattava testaus Testauksen perimmäinen tarkoitus on LÖYTÄÄ VIRHEITÄ Testaus pitäisi olla täydellinen: - Jokainen pyydetty arvo pitäisi testata

Lisätiedot

Ohjelmistojen testaus

Ohjelmistojen testaus Ohjelmistojen testaus Mika Katara, Matti Vuori ja Antti Jääskeläinen Tampereen teknillinen yliopisto, Tietotekniikan laitos 25.8.2014 Ohjelmistojen testaus, 2014 1(507) Mitä testaus on? Erilaisia näkökulmia

Lisätiedot

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus Yhteenveto Ohjelmistotuotanto vs. muut insinööritieteet Monimutkaisuus Näkymättömyys (Usein näennäinen) luotettavuus ja edullisuus Muunnettavuus Epäjatkuvuus virhetilanteissa Skaalautumattomuus Copyright

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

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

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testaussuunnitelma Koskelo Helsinki 16.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell Johan

Lisätiedot

Testaaminen ohjelmiston kehitysprosessin aikana

Testaaminen ohjelmiston kehitysprosessin aikana Testaaminen ohjelmiston kehitysprosessin aikana 04.02.2004 http://cs.joensuu.fi/tsoft/ Sisällys 1. Johdanto 2. Yksikkö- ja integrointitestaus 3. Järjestelmätestaus 4. Hyväksymistestaus http://cs.joensuu.fi/tsoft/

Lisätiedot

Laadun hallinta. Laatukustannukset. Laadun kustannuksista. Sami Kollanus TJTA330 Ohjelmistotuotanto

Laadun hallinta. Laatukustannukset. Laadun kustannuksista. Sami Kollanus TJTA330 Ohjelmistotuotanto Laadun hallinta Sami Kollanus TJTA330 Ohjelmistotuotanto 5.4. Laatukustannukset US National Institute of Standards and Technology: Riittämättömän testauksen kustannusten arvioitiin olevan 59 Mrd dollaria

Lisätiedot

Laadun hallinta. Laatukustannukset. Sami Kollanus TJTA330 Ohjelmistotuotanto

Laadun hallinta. Laatukustannukset. Sami Kollanus TJTA330 Ohjelmistotuotanto Laadun hallinta Sami Kollanus TJTA330 Ohjelmistotuotanto 5.4. Laatukustannukset US National Institute of Standards and Technology: Riittämättömän testauksen kustannusten arvioitiin olevan 59 Mrd dollaria

Lisätiedot

Kontrollipolkujen määrä

Kontrollipolkujen määrä Testaus Yleistä Testaus on suunnitelmallista virheiden etsimistä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta Hyvät menetelmät, kuten katselmoinnit pienentävät

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen

Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen Dynaaminen analyysi II Luento 4 Antti-Pekka Tuovinen www.cs.helsinki.fi 9 April 2018 1 Tavoitteet Black-box testitapausten suunnittelutekniikat II Tilamallien käyttö Syy-seurausverkot ja päätöstaulut Kombinaatioiden

Lisätiedot

Testaussuunnitelma Labra

Testaussuunnitelma Labra Testaussuunnitelma Labra Helsinki 25.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Integrointi. Ohjelmistotekniikka kevät 2003

Integrointi. Ohjelmistotekniikka kevät 2003 Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri

Lisätiedot

Mihin kaikkeen voit törmätä testauspäällikön saappaissa?

Mihin kaikkeen voit törmätä testauspäällikön saappaissa? Mihin kaikkeen voit törmätä testauspäällikön saappaissa? Arto Stenberg Copyright Kuntien Tiera Oy Kuntien Tiera Copyright Kuntien Tiera Oy Tiera on vuonna 2010 perustettu yli 200:n kuntatoimijan omistama

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testausraportti Smartmeeting opponointi

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testausraportti Smartmeeting opponointi Testausraportti Smartmeeting opponointi Sisällysluettelo 1. Johdanto...3 2. Testitapaukset Smartmeeting...4 2.1 Yritä kirjautua järjestelmään väärällä salasanalla...4 2.2 Lisää uusi käyttäjä...4 2.3 Lisää

Lisätiedot

Laatukustannukset. Laadun hallinta. Laadun kustannuksista

Laatukustannukset. Laadun hallinta. Laadun kustannuksista Laatukustannukset Laadun hallinta Sami Kollanus TJTA330 Ohjelmistotuotanto 13.2.2007 US National Institute of Standards and Technology: Riittämättömän testauksen kustannusten arvioitiin olevan 59 Mrd dollaria

Lisätiedot

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma

WCLIQUE. Ohjelmistoprojekti. Testaussuunnitelma TKK/DISKO/Tik-76.115 WCLIQUE Projektiryhmä Clique http://www.hut.fi/jekahkon/wclique/testplan.html WCLIQUE Ohjelmistoprojekti Projektiryhmä Clique: Janne Dufva, 75008T, email: janne.dufva@nokia.com, 75014C,

Lisätiedot

T Testiraportti - integraatiotestaus

T Testiraportti - integraatiotestaus T-76.115 Testiraportti - integraatiotestaus 16. huhtikuuta 2002 Confuse 1 Tila Versio: 1.1 Tila: Päivitetty Jakelu: Julkinen Luotu: 19.03.2002 Jani Myyry Muutettu viimeksi: 16.04.2002 Jani Myyry Versiohistoria

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

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

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } } Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

Asynkroninen ohjelmointi.net 4.5 versiolla

Asynkroninen ohjelmointi.net 4.5 versiolla Asynkroninen ohjelmointi.net 4.5 versiolla Jari Kallonen Software Specialist at Tieturi Oy Régis Laurent Director of Operations, Global Knowledge Competencies include: Gold Learning Silver System Management

Lisätiedot

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat

Lisätiedot

Onnistunut Vaatimuspohjainen Testaus

Onnistunut Vaatimuspohjainen Testaus Onnistunut Vaatimuspohjainen Testaus Kari Alho Solution Architect Nohau Solutions, Finland Sisältö Mitä on vaatimuspohjainen testaus? Vaatimusten ymmärtämisen haasteet Testitapausten generointi Työkalujen

Lisätiedot

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen 23 April 2018 1 Tavoitteet Yleiskuva seuraavista aiheista Testauksen organisointi Testaussuunnittelma Testauksen kustannukset Testausstrategia

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

Opas verkkopalvelun tietoturvan varmentamiseen

Opas verkkopalvelun tietoturvan varmentamiseen Opas verkkopalvelun tietoturvan varmentamiseen Haavoittuvuustutkimustiimi - 2NS www.2ns.fi 2/10 Johdanto Olemme vuodesta 2005 lähtien toteuttaneet yli 1000 verkkopalvelun haavoittuvuustestausta ja auditointia

Lisätiedot

Ohjelmistotuotteen hallinnasta

Ohjelmistotuotteen hallinnasta Ohjelmistotuotteen hallinnasta Luennon tavoitteista Luennon sisällöstä Motivointia Lähteinä: Haikala ja Märijärvi, Ohjelmistotuotanto Royce, Software Project Management, A Unified Framework 1 Tavoitteista

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance) Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi 5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

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

Testaus ja säästöt: Ajatuksia testauksen selviämisestä lama-aikana Testaus ja säästöt: Ajatuksia testauksen selviämisestä lama-aikana Muutamia ajatuksia siitä, miten testaus pärjää lama-ajan säästötalkoissa. Laman patologioita ja mahdollisuuksia. Säästämisen strategioita.

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

Lisätiedot

Tuotetta koskeva ilmoitus

Tuotetta koskeva ilmoitus Suojaus Käyttöopas Copyright 2009 Hewlett-Packard Development Company, L.P. Tässä olevat tiedot voivat muuttua ilman ennakkoilmoitusta. Ainoat HP:n tuotteita ja palveluja koskevat takuut mainitaan erikseen

Lisätiedot

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu HAAGA HELIA/IltaTiko ICT2TD005: Ohjelmisto suunnittelutaito 1 VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu Tämä pikaopas opastaa käyttämään VisualStudion web sivujen suunnittelu ja toteutusominaisuuksia.

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

T Testiraportti - integraatiotestaus

T Testiraportti - integraatiotestaus T-76.115 Testiraportti - integraatiotestaus 22. maaliskuuta 2002 Confuse 1 Tila Versio: 1.0 Tila: Päivitetty Jakelu: Julkinen Luotu: 19.03.2002 Jani Myyry Muutettu viimeksi: 22.03.2002 Jani Myyry Versiohistoria

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Kuopio Testausraportti Kalenterimoduulin integraatio

Kuopio Testausraportti Kalenterimoduulin integraatio Kuopio Testausraportti Kalenterimoduulin integraatio Kuopio, testausraportti, 22.4.2002 Versiohistoria: Versio Pvm Laatija Muutokset 0.1 22.4.2002 Matti Peltomäki Ensimmäinen versio 0.9 22.4.2002 Matti

Lisätiedot

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

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

Lisätiedot

Projektityö

Projektityö Projektityö 21.10.2005 Projektisuunnitelma Työn ositus Projektisuunnitelman sisältö Kurssin luennoitsija ja projektiryhmien ohjaaja: Timo Poranen (email: tp@cs.uta.fi, työhuone: B1042) Kurssin kotisivut:

Lisätiedot

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

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori Testitapaukset - Koordinaattieditori Sisällysluettelo 1. Johdanto...3 2. Testattava järjestelmä...4 3. Toiminnallisuuden testitapaukset...5 3.1 Uuden projektin avaaminen...5 3.2 vaa olemassaoleva projekti...6

Lisätiedot

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg

Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg Testauksen hallintaa teekkareille (ja muille kiinnostuneille) Arto Stenberg Symbio lyhyesti Innovatiivinen tuotekehitys- ja testauskumppani Juuret Suomessa, perustettu 1997 Laadukkaat ohjelmistotoimitukset

Lisätiedot