Testausvlineet ja testauksen automatisointi Maaret Pyhjrvi ja Erkki
- Slides: 37
Testausvälineet ja testauksen automatisointi Maaret Pyhäjärvi ja Erkki Pöyhönen Julkaisuversio 0. 1 2004 -12 -07 tekijä mainittava http: //creativecommons. org/licenses/by/1. 0/fi/ Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Tiedoksi lukijalle • Tämä materiaali on edelleen työn alla – Varsinainen julkaisu tapahtuu testauskirjan julkaisun yhteydessä tai jälkeen • Materiaalin hyödyntäminen on vapaata – Erityisesti haluamme tukea yleishyödyllisen ohjelmistotestauksen opetuksen jäsentymistä tarjoamalla materiaalimme vapaasti muokattavaksi pohjamateriaaliksi • Kysyttävää? – Ota yhteyttä maaret. pyhajarvi@iki. fi ja erkki. poyhonen@nokia. com Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
8 – Testausvälineet ja testauksen automatisointi Tehokas ohjelmistotestaus Testaustekniikat Testaus ohjelmistokehityksen osana Testauksen suunnittelu ja hallinta Virheraportointi ja virheasian ajaminen Testausvälineet ja testauksen automatisointi Katselmoinnit testaustoimintana Testausprosessin muuttaminen Testitapaukset ja testien suorittaminen 2 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Oppimistavoitteet • Tiedostat testausvälineiden moninaisuuden • Pystyt arvioimaan omia valintojasi hyötyjen ja kustannusten suhteen • Tiedät että testausvälineistä voi olla myös haittaa • Tiedät että välineen käyttöönotto on prosessimuutos • Pystyt kuvaamaan testiautomaation suhteen realistisia odotuksia • Tunnet perusteet testiautomaation toteutuksesta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Käsiteltävät asiat Testauksen välinetuki; Testausautomaatio laajana käsitteenä 30 Testausvälineiden hyötyjen ja tarpeiden 30 kartoitus Välineen valinta, käyttöönotto, käyttö 20 ja ylläpito Automatisoituuko testaus tulevaisuudessa? 10 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen välinetuki; Testausautomaatio laajana käsitteenä 30 Testausvälineiden hyötyjen ja tarpeiden 30 kartoitus Välineen valinta, käyttöönotto, käyttö 20 ja ylläpito Automatisoituuko testaus tulevaisuudessa? 10 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausvälineiden ryhmittely • Käyttökohdepohjainen – Perustana käyttökohde – korkean tason vaatimusluokkia välineille – Todellinen väline yhdistelee tyypillisesti useita käyttökohteita oletustavoitteisiin sopivalla sekoituksella • Kaksi perustyyppiä – Testauksen tukemisen välineet (prosessiautomaatio) • Välineet, joiden käyttö voi tukea sekä käsin suoritettavia että automatisoituja testejä ja joiden käyttöön ei liity oletusta käsin testaamiselta välttymisestä. – Testiautomaatiovälineet (suoritusautomaatio) • Välineet, joilla suoritetaan testausta tietokoneavusteisesti ja joiden käyttöön liittyy oletus käsin testaamiselta välttymisestä. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen välinetuki Testauksen tukemisen välineet Työmäärien suunnittelu ja hallinta Havaintokirjausten käsittely Raporttien luominen Testauksen materiaalien versionhallinta Koodin laadun arviointi Katselmointien tuki Vaatimusten testaus Kokoelman luominen ja hallinta Suoritukseen valinta Suorituksen kirjaus Vaatimuskattavuuden arviointi Testitapausten suunnittelu Koonnit ja julkaisut ympäristöihin Ympäristön alustaminen Ajoympäristön tuki Testiaineiston luonti ja alustus Koodikattavuuden analysointi Ajonaikaisen tilanteen analysointi ja seuranta Vian jäljitys Testiautomaatiovälineet Testauksen suunnittelu ja hallinta Testattavien asioiden valinta Testitapaukset Toiminnallinen testaus Testiympäristöt Tulosten arviointi Testisuorituksen seuranta ja hallinta Suorituskykytestaus Testitapausgenerointi Syöteyhdistelmät Skriptauskehikot Testinauhoitus Rajapintatestaus Vertailu Oraakkelit Kuorman luonti Yhtäaikaisuuden hallinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Esimerkki: tyypillinen kaupallinen suorituskykytestausväline Testauksen tukemisen välineet Työmäärien suunnittelu ja hallinta Havaintokirjausten käsittely Raporttien luominen Testauksen materiaalien versionhallinta Koodin laadun arviointi Katselmointien tuki Vaatimusten testaus Kokoelman luominen ja hallinta Suoritukseen valinta Suorituksen kirjaus Vaatimuskattavuuden arviointi Testitapausten suunnittelu Koonnit ja julkaisut ympäristöihin Ympäristön alustaminen Ajoympäristön tuki Testiaineiston luonti ja alustus Koodikattavuuden analysointi Ajonaikaisen tilanteen analysointi ja seuranta Vian jäljitys Testiautomaatiovälineet Testauksen suunnittelu ja hallinta Testattavien asioiden valinta Testitapaukset Toiminnallinen testaus Testiympäristöt Tulosten arviointi Testisuorituksen seuranta ja hallinta Suorituskykytestaus Testitapausgenerointi Syöteyhdistelmät Skriptauskehikot Testinauhoitus Rajapintatestaus Vertailu Oraakkelit Kuorman luonti Yhtäaikaisuuden hallinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Esimerkki: tyypillinen avoimen lähdekoodin suorituskykytestausväline Testauksen tukemisen välineet Työmäärien suunnittelu ja hallinta Havaintokirjausten käsittely Raporttien luominen Testauksen materiaalien versionhallinta Koodin laadun arviointi Katselmointien tuki Vaatimusten testaus Kokoelman luominen ja hallinta Suoritukseen valinta Suorituksen kirjaus Vaatimuskattavuuden arviointi Testitapausten suunnittelu Koonnit ja julkaisut ympäristöihin Ympäristön alustaminen Ajoympäristön tuki Testiaineiston luonti ja alustus Koodikattavuuden analysointi Ajonaikaisen tilanteen analysointi ja seuranta Vian jäljitys Testiautomaatiovälineet Testauksen suunnittelu ja hallinta Testattavien asioiden valinta Testitapaukset Toiminnallinen testaus Testiympäristöt Tulosten arviointi Testisuorituksen seuranta ja hallinta Suorituskykytestaus Testitapausgenerointi Syöteyhdistelmät Skriptauskehikot Testinauhoitus Rajapintatestaus Vertailu Oraakkelit Kuorman luonti Yhtäaikaisuuden hallinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Osta vs. rakenna kustannusjakauma Kaupallinen väline Avoimen lähdekoodin väline Osta Rakenna Varsinainen vertailtava asia on rakentamiseen menevä työmäärä. Kyse ei vain rahasta – vaan myös joustosta. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen välinetuki; Testausautomaatio laajana käsitteenä 30 Testausvälineiden hyötyjen ja tarpeiden 30 kartoitus Välineen valinta, käyttöönotto, käyttö 20 ja ylläpito Automatisoituuko testaus tulevaisuudessa? 10 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Automatisoinnin valinta Valmiudet Tavoiteltavat hyödyt Automaatiokartoitus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vaatimus, hyöty, kustannus ja riski Vaatimus Mitä Kustannus Hyöty Riski Miten Rajoite Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Automaatiokartoitus – roolit ja alueet 45 min 30 min 60 min Kehitysjohtaja Projektipäällikkö Testauspäällikkö / hallinto Testauspäällikkö / seuranta Testaaja Ohjelmistoarkkitehti 15 min Tilannetekijät 15 min 30 min Kustannukset ja hyödyt 60 min Automatisointitavoitteet 15 min 65 min Ympäristöt, teknologiat ja testattavuus 55 min Prosessi Strategia (syyt) Testaustasot ja tyypit 15 min Osaaminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausautomaation hyödyt • Aikataulu ja budjetti Nopeammin Halvemmalla – Kehityksen ja testauksen läpimenoaikojen lyheneminen – Kehityksen ja testauksen kustannusten pieneneminen – Testikierroksissa tarvittavien työmäärien hallinta – Näkyvyyttä etenemiseen – Kyky muuttaa suunnitelmia markkinatarpeisiin vastaamiseksi • Laajennetut testausmahdollisuudet – Nopea palaute koonneista ja julkaisuista – Yhdistelmät ja yhtäaikaisuus – Uusintatestaus ja yhteensopivuus Paremmin – Kyky toistaa löytyneitä virheitä – Riskipohjainen suuntaaminen – Valvomaton testien suoritus – Keskittyminen motivoivaan työhön rutiinin Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen asemesta Enemmän
Huomioitavaa hyödyistä • Monet automaation hyödyistä voi saavuttaa myös muilla prosessin kehittämisen muodoilla – Joskus itse asiassa parempi sijoituksen tuotto on saatavissa ilman välinettä • Hyödyt suhteessa kustannuksiin ovat korkean tason vaatimus välineen käytölle – Oletetaan saavutettavaksi • Riskit muodostuvat siitä että hyötyjä ei pystytä saavuttamaan – Yksityiskohtaisempien vaatimusten toteutuminen esteenä – Kustannukset ennakoimattoman suuria Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Ajattele testausta kokonaisuutena Testauksen suunnittelu ja valmistelu Testien suoritus ja jatkotoimenpiteet Muut tehtävät Kaksi tuntia käsin suoritettavaa testausta vaatii tyypillisesti kaksi päivää – testaaminen ei ole vain testin suoritusta. Lähde: Collard, Ross. 2004. Calculating Overheads. WTST (Workshop on Teaching Software Testing) 2004. http: //www. testingeducation. org Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Automaation sijoituksen tuotto laskelma Kustannustekijä Käsin tehtävä testaus Automatisoitu testaus Testitapausten suunnittelu 6 000 € Työkalu 5 000 € Testien automatisointi 11 000 € Automatisoinnin kokonaiskustannus 16 000 € Testien suorittaminen (täysi testikierros) 5 000 € 1 000 € Testikierroksia per julkaisu 3 3 Testauskustannus per julkaisu 21 000 € 9 000 € Säästö per julkaisu Julkaisuja vuodessa 12 000 € 4 4 Hyöty vuodessa 48 000 € Säästö vuodessa (hyöty – investointi) 32 000 € Sijoituksen tuotto (säästöt/investointi) 200 % Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Realismia talouslaskelmiin • Testauksen nykykustannus – Muuttuu elinkaaressa – uusintatestauspainotus kasvava – Kehitysaikainen testaus vs. erilliset testaajat • Laadun ja aikataulupidon arvo – Näkyvyys etenemiseen – Korjaustyöt • Automatisoinnin erityispiirteet – – – Testien totuudenmukaisuus Todellinen löytymispotentiaali Laajentava uusintatestaus: ympäristöt, lokalisointi Kombinaatiot ja yhtäaikaisuus Suorituskyky Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testausautomaation valmiudet testauskyvykkyys • Testausprosessi ja –käytännöt, strategia, tasot, tyypit • Järjestelmän rakentamisen prosessi ja käytännöt • Vaatimusten testattavuus • Järjestelmän testattavuus • Ympäristöt ja aineistot • Osaaminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauskyvykkyyden jaottelua Testattavuus teknisen testaajan näkökulmasta: Testattavuus loppukäyttäjätestaajan näkökulmasta: -testattava sovellus JA -testauksen pohjana olevat määrittelyt, erityisesti arkkitehtuuri ja komponentit -testauksen pohjana olevat vaatimukset ja määrittelyt Tekniset mahdollisuudet -Deterministisyys -Rajapinnat (GUI, API) Testaustavoitteet -selkeys - perustellut valinnat Vaatimukset Määrittelyt Osaaminen -rajapintojen kuvaukset -komponenttien suhteet -mahdollisuus välineen ymmärtämiseen -Tarpeiden ymmärtäminen ja kuvaaminen -Implisiittisten ja eksplisiittisten vaatimusten tasapaino -Muutosten hallinta Prosessi -miten toimitaan sovellusta rakennettaessa Automatisointikyvykkyys Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Välinevalmius Teknologia ja arkkitehtuuri Määrittelyt ja toteutus Arkkitehtuuri ja testattavuus Välineen teknologiat Osaaminen Ohjelmointi Testausprosessit ja käytännöt Vaatimukset ja riskit Hallinnointi Testauksen tavoitteet ja Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen toteutus
Testauksen välinetuki; Testausautomaatio laajana käsitteenä 30 Testausvälineiden hyötyjen ja tarpeiden 30 kartoitus Välineen valinta, käyttöönotto, käyttö 20 ja ylläpito Automatisoituuko testaus tulevaisuudessa? 10 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Valinta, käyttöönotto, käyttö ja ylläpito Valinta Käyttöönotto Tavoite: onnistumisen mahdollisuuksien luominen Tavoite: eteneminen hallituissa ja näkyvissä palasissa Tavoite: jatkuvan hyödyn saavuttaminen ja osoittaminen todellisuus jatkuvuus vaatimukset Käyttö ja ylläpito Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Välineen valinta • Tavoite: onnistumisen mahdollisuuksien luominen • Tehtäviä: – – Testausvalmiuksien arviointi Soveltuvan välineen valinta Kokeilu Kustannuksia ei kannata sitoa vielä liikaa, perusrakenteet pitää miettiä – Päätöksen arviointi • Talous • Tekninen toimivuus Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Välineen käyttöönotto • Tavoite: eteneminen hallituissa ja näkyvissä palasissa • Tehtäviä: – Rakenteiden luominen – Pilotointi – Laajentaminen useisiin käyttäjiin ja käyttöihin • Valitun välineen myynti uusille käyttäjille – Ymmärrys: ei valmis käyttöönoton jälkeen, tästä vasta työ alkaa • Riittävän uskon luominen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Välineen käyttö ja ylläpito • Tavoite: jatkuvan hyödyn saavuttaminen ja osoittaminen • Tehtäviä: – Automaation rakentaminen • Suunnittelu, toteutus, testaus • Konfiguraationhallinta • Virheenhallinta – Automaation ylläpitäminen – Hyötyjen todistaminen Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen automatisoinnin ja välinetuen yleinen viitekehys Väline ja kehikko V 1 K 1 U 1 Toteutusteknologiat Prosessi ja käytännöt V 2 K 2 U 2 Toteutusja testaus tavat ja tavoittet Organisaatio ja osaaminen V 3 K 3 U 3 Kyvykkyys Liiketoiminta V 4 K 4 U 4 Valinta Käyttöönotto Käyttö ja ylläpito Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Valinta – oleelliset kysymykset Väline ja kehikko V 1 Prosessi ja käytännöt V 2 Organisaatio ja osaaminen V 3 Liiketoiminta V 4 } Onko automatisointi mahdollista? Onko automatisointi kannattavaa? Valinta Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Käyttöönotto – oleelliset kysymykset Väline ja kehikko K 1 Millaisia teknisiä rakenteita tarvitaan? Prosessi ja käytännöt K 2 Mitä toimintatapoja pitää saattaa tilanteeseen sopiviksi? Organisaatio ja osaaminen K 3 Mitä osaamista pitää hankkia? Liiketoiminta K 4 Miten laajennetaan hallitusti? Käyttöönotto Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Käyttö ja ylläpito – oleelliset kysymykset Väline ja kehikko Miten teknisiä rakenteita luodaan ja ylläpidetään? U 1 Miten toimitaan? U 2 Organisaatio ja osaaminen Miten osaaminen pidetään oikealla tasolla? U 3 Liiketoiminta Onko toiminta kannattavaa? U 4 Prosessi ja käytännöt Käyttö ja ylläpito Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Testauksen välinetuki; Testausautomaatio laajana käsitteenä 30 Testausvälineiden hyötyjen ja tarpeiden 30 kartoitus Välineen valinta, käyttöönotto, käyttö 20 ja ylläpito Automatisoituuko testaus tulevaisuudessa? 10 Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Automatisoituuko testaus tulevaisuudessa? • Automaatiolla on osansa testauksessa – erityisesti kun mielletään automaatio laajana käsitteenä • Vain jos se on hyödyllistä – Markkinointipuheenvuoroista todelliseen substanssiin • Automaatio on osa hyvää moniulotteista testausstrategiaa • Käsin testaaminen ja automatisoitu testaaminen ovat hyvin erilaisia prosesseja eivätkä kaksi tapaa suorittaa sama prosessi Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Vääriä oletuksia testiautomaatioon liittyen Lähde: Bach, James. 1999. Test Automation Snake Oil • Testaus on ”sarja toimintoja” • Testaus tarkoittaa samojen asioiden toistamista kerta toisensa jälkeen • Voimme automatisoida testauksen toiminnot • Automatisoitu testi on nopeampi koska se ei tarvitse ihmisen puuttumista asiaan • Automaatio vähentää ihmisten tekemiä virheitä • Käsin tehtävän ja automatisoidun testauksen kuluja ja hyötyjä voidaan järkevästi verrata • Automaatio johtaa merkittäviin resurssikustannus-säästöihin • Automaatio ei vaikuta heikentävästi testausprojektiin Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Yhteenveto • Testauksen automatisointi ei ole vain testiautomaatiota – Monesti tukitoimintoihin ja selvittelyihin kuluu oleellisesti enemmän aikaa kuin varsinaiseen testaukseen • Testauksen automatisoinnin valmius kannattaa arvioida ja sitä kannattaa kehittää – Lähde tarpeiden ymmärtämisestä • Jotkin välineet on tärkeää integroida yhteen, mutta kaikkein tärkeintä on integroida välineet ihmisiin ja heidän toimintatapoihinsa. • Automaatiota ja testausta pitää ajatella tuotteen elinkaaren, ei yksittäisen projektin kannalta. Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen
Lisätietoja automaatiosta • Näiden ihmisten osalta olemme lukeneet hyviä automatisointiartikkeleita, -kirjoja ja –neuvoja: – – – – – James Bach Hans Buwalda Danny Faught Mark Fewster Elizabeth Hendricks Cem Kaner Brian Marick Bret Pettichord Harry Robinson Tämä teos on lisensoitu Creative Commons Tekijä mainittava –lisenssillä. – Maaret Pyhäjärvi & Erkki Pöyhönen