TestauksenAutomatiso..

Download Report

Transcript TestauksenAutomatiso..

Testauksen automatisointi
Maaret Pyhäjärvi
<[email protected]>
Tekijä mainittava, Maaret Pyhäjärvi & Erkki Pöyhönen
http://creativecommons.org/licenses/by/1.0/fi/
Osallistujien taustasta
Kuinka monella on kokemuksia testausvälineistä?
Kuinka monella on kokemuksia testiautomaatiosta?
Kuinka moni uskoo että testaus automatisoituu tulevaisuudessa?
• Merkittävässä määrin?
• Jonkin verran?
• Jos nyt edes vähän?
Monday, 13 April 2015 Page 2
Odotukset ja tavoitteet
Keitä olemme?
• Nimi
• Rooli
• Organisaatio
• Ohjelmistokehitystoiminnan ominaispiirteet
• Oma suhde testaukseen ja testauksen automatisointiin
Mitä opetettavaa sinulla itselläsi olisi ryhmälle?
Mitä toivot saavasi koulutuksesta?
Monday, 13 April 2015 Page 3
Oppimistavoitteet
• Miten tunnistaa testauksen tavoitteissa ja toteutuksessa sekä testattavissa
järjestelmissä testiautomaation kannalta olennaisia ominaisuuksia ja valita
tilanteeseen ja ympäristöön soveltuvia testiautomaatioratkaisuja
• Miten sovittaa automaatioratkaisu organisaatiosi testauksen
kokonaiskuvaan, ja asettaa automaation tavoitteet realistisella ja
saavutettavalla tavalla.
• Kuinka voittaa käytännön haasteet testauksen automatisoinnin
hyödyllisessä ja onnistuneessa käytössä
• Kuinka osoittaa sekä itsellesi että muille millainen automaatio on
hyödyllisintä organisaatiossasi
• Mitkä ovat käyttötarkoitukset ja keskeiset erot onnistuneelle käyttöliittymäja rajapintaperusteiselle automatisoinnille
Monday, 13 April 2015 Page 4
Katsaus testiautomaatioon ja
testauksen tukemisen välineisiin
Päivä 1:
Testauksen automatisointi
hallittavana prosessina
Työkalun valinnasta käyttöön
Automatisoitavan testauksen kohteita
Automatisointikeskeisten testaustyyppien
erityispiirteet
Testauksen automatisointi käyttöliittymän
kautta
Päivä 2:
Testausautomaation
toteutus
Testauksen automatisointi rajapintojen
kautta
Testattavuuden arviointi, luominen ja
mittaaminen
Testausautomaation perussäännöt
Monday, 13 April 2015 Page 5
Katsaus testiautomaatioon ja testauksen
tukemisen välineisiin
Testausvälineet testaustehtävien automatisoinnissa ja tukemisessa
Testauksen ja testiautomaation tavoitteiden yhteensovittaminen
Testiautomaation vaikutukset ohjelmistoprosessiin kokonaisuutena
Käsin suoritettava vs. automatisoitu testaus
Testiautomaation hyödyt ja riskit
Miksi testiautomaatio usein epäonnistuu?
Monday, 13 April 2015 Page 6
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ä.
Monday, 13 April 2015 Page 7
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
Monday, 13 April 2015 Page 8
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
Monday, 13 April 2015 Page 9
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
Monday, 13 April 2015 Page 10
Onnistumisen kriteeristö?
Miten määrität onnistumisen?
• Automaatiota voi ajaa
• Automaatio tekee ihan oikeaa testausta
• Automaatio löytää virheitä
• Automaatio säästää aikaa
Mitä vikoja et löydä sillä ajalla kun
valmistelet automaatiota?
Mikä on testauksen tavoite?
Monday, 13 April 2015 Page 11
Testausmaailmankuvasta kahdenlaiseen
automaatioon
Uusintatestauksen automatisointi
(regressio)
Valitaan tärkein
osa jo
läpäistyistä
testeistä
Onko halvempia keinoja saada kiinni jo
toimineiden osien hajoaminen?
Kokoonpanonhallinta
Yksikkötestausautomaatio
“muutoshavaitsijana”
Uusien virheiden löytämisen
automatisointi
Etsitään testiideoita, jotka
laajentavat
muita testejä
Onko virhetyyppejä joiden löytäminen on
tärkeää mutta käsin kallista ellei jopa
mahdotonta?
Laajentava testiautomaatio
Monday, 13 April 2015 Page 12
Ajattele testausta kokonaisuutena
Testauksen
suunnittelu
ja
valmistelu
Testien
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
Monday, 13 April 2015 Page 13
Harjoitus: Mihin aika kuluu?
Eri tyyppisissä testaushankkeissa aikaa kuluu erilaisiin tehtäviin: kuinka
samanlaisissa hankkeissa olemme toimineet?
Itsenäisesti: (10 min)
• Mieti viimeisintä testausta jossa olet ollut mukana.
• Ajattele jotakin testaamaasi kokonaisuutta ja vertaa tarkistuslistaan: mitkä asiat
vievät eniten aikaa?
2-3 hengen ryhmissä (10 min)
• Eroavatko painotuksenne ja miltä osin?
• Mihin tehtäviin toivoisitte automaatiosta erityisesti apua?
Monday, 13 April 2015 Page 14
Harjoitus: Automaation tavoitteet ja riskit
Käydään kukin itsenäisesti läpi tavoitelista (15 min)
• Mitkä asiat ovat sinulle tärkeitä miettimäsi automaatiohankkeen osalta?
• Mitkä ovat viisi kaikkein tärkeintä tärkeiden tavoitteiden joukossa
Peilataan ryhmässä testausvälineluokitteluun (10 min)
• Minkä tyyppisellä automaatiolla näihin viiteen tärkeimpään voisi vastata?
• Voiko joihinkin tärkeisiin tarpeisiin vastata ilman automaatiota?
Monday, 13 April 2015 Page 15
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
Monday, 13 April 2015 Page 16
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
Enemmän
Paremmin
•
Nopea palaute koonneista ja julkaisuista
•
Yhdistelmät ja yhtäaikaisuus
•
Uusintatestaus ja yhteensopivuus
•
Kyky toistaa löytyneitä virheitä
•
Riskipohjainen suuntaaminen
•
Valvomaton testien suoritus
•
Keskittyminen motivoivaan työhön rutiinin asemesta
Monday, 13 April 2015 Page 17
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
Monday, 13 April 2015 Page 18
Vaatimus, hyöty, kustannus ja riski
Vaatimus
Mitä
Kustannus
Hyöty
Riski
Miten
Rajoite
Monday, 13 April 2015 Page 19
Automaatioprojektien pääfokus
1. Tehokkuus
Testauskustannusten pienentäminen, testaukseen käytettävän ajanjakson
pienentäminen, testauskattavuuden parantaminen, viivan alle jäävään
summaan kohdistuva pienentävä vaikutus
 nopeutetaan nykyistä
2. Palvelu
Tehokkaammat koontisyklit, koodin uudellenjäsentelyn ja muiden riskialttiiden
käytäntöjen mahdollistaminen, ohjelmiston laadun taantumisen estäminen,
luottamuksen kasvattaminen sovellukseen
 muutetaan toiminnan laatua, jotain uutta
Monday, 13 April 2015 Page 20
Testauksen automatisoinnin yleisiä
ongelmia (1/2)
Epärealistiset odotukset
• Paljon tuloksia mitättömän pienillä panostuksilla, pysyvät hyödyt kertapanostuksella
• Testauksen automatisointi on jonkun pöytälaatikkoprojekti
Ulkoisesti tehottoman testauksen automatisointi
• Kaaoksen automatisointi vain lisää kaaosta, kyky tuottaa tuloksia ensin
• Testataan vääriä asioita
• Automaatioon päädytään koska ei haluta ajatella miten testaus oikeasti tehdään
käsin
Uusien virheiden löytymisen oletus
• Virheet löytyvät yleensä automatisoidessa, ei testejä ajaessa, ellei muutoksia
tapahtu
Väärä turvallisuudentunne
• Ohjelmisto toimii vain tavoilla joita tarkkaillaan, ei lupaus virheettömyydestä
• Testeissäkin voi olla virheitä
Monday, 13 April 2015 Page 21
Testauksen automatisoinnin yleisiä
ongelmia (2/2)
Ylläpito
• Testit vaativat päivittämistä ja automaatio voi olla muutosherkkää
Tekniset ongelmat
• Teknologian ihannointi
• Työkaluissakin on virheitä, automatisointi on ohjelmointiprojekti
Organisaatiotekijät
• Selkeät tavoitteet puuttuvat
• Tarve sekä toteutuksen että suunnittelun ja hallinnan osaamiselle – jopa erilaiselle
kuin “perinteisissä” projekteissa
• Toteuttajilla ei kokemusta automatisoinnista
• Porukka vaihtuu ja asioita opitaan kantapään kautta kerta toisensa jälkeen
• Vaikutus toimintatapoihin ja yleiset pelot
Monday, 13 April 2015 Page 22
Katsaus testiautomaatioon ja
testauksen tukemisen välineisiin
Päivä 1:
Testauksen automatisointi
hallittavana prosessina
Työkalun valinnasta käyttöön
Automatisoitavan testauksen kohteita
Automatisointikeskeisten testaustyyppien
erityispiirteet
Testauksen automatisointi käyttöliittymän
kautta
Päivä 2:
Testausautomaation
toteutus
Testauksen automatisointi rajapintojen
kautta
Testattavuuden arviointi, luominen ja
mittaaminen
Testausautomaation perussäännöt
Monday, 13 April 2015 Page 23
Työkalun valinnasta käyttöön
Testauksen automatisointi hallittavana prosessina
Testiautomaatiomahdollisuuksien tunnistaminen
Automatisointivalmiuksien arviointi
Olisiko testiautomaatiosta hyötyä meillä?
Automaation tason ja tyypin valinnan keskeiset tekijät
Erot automatisoinnissa käyttöliittymä (GUI) vs. rajapinta (API) vs.
yksikkötestauskehikko
Case: Automaatiovaihtoehtojen vertailu ja priorisointi
Monday, 13 April 2015 Page 24
Testiautomaation tilannetekijät
Tekijöiden osaaminen
• Tapa hyödyntää käytettävissä olevaa
osaamista
Tarkoitus
Tuotteen arkkitehtuuri
• Eri liittymien hyödyntäminen
testaukseen
Testauksen tarkoitus
• Keskittyminen keskeisimpiin asioihin
testauksessa, lisäarvoa
automatisoinnilla
Tekijät
Tuote
Tilannetekijät ohjaavat
automaatiovalintoja.
Monday, 13 April 2015 Page 25
Testauksen kahdet kasvot
“Hyväksymistestaaja”
Liiketoimintasuuntautunut
testaus
“Järjestelmäkritiikki”
“Yleistestaaja”
“Ohjelmoinnin
tuki ja tehostus”
“Tekninen testaaja”
Teknologiasuuntautunut
testaus
Automaatiospesialisti: ymmärtää
testausteknologiaa, työkaluja ja
automatisointitarpeita.
Monday, 13 April 2015 Page 26
Keskusteluharjoitus: Tilannetekijöiden
selvittelyä - ihmiset
Source: LAWST 2, reprinted in Kaner, “Architectures of Test Automation” and “Avoiding Shelfware”
1. Millaista osaamista tämän hetkisessä henkilöstössä on tarjolla?
2. Onko välttämätöntä mahdollistaa ohjelmointitaidottomien tekemä
testitapausten automatisointi?
3. Missä määrin ohjelmoijat ovat halukkaita yhteistyöhön
automatisoinnin tukemiseksi, luomalla tapahtumalokeja, yksilöllisiä
ja selkeitä virheilmoituksia tai liittymiä käyttöliittymän alle?
4. Odottaako johto automaation takaisinmaksua tietyn ajan kuluessa?
Minkä? Voitko vaikuttaa näihin odotuksiin?
Monday, 13 April 2015 Page 27
Erot automatisoinnissa
Käyttöliittymä (GUI)
Ohjelmointirajapinta (API)
Yksikkötestauskehikko
Kun merkittävä osa
toiminnallisuudesta
toteutetaan
käyttöliittymässä.
Kun vastaavaan
toiminnallisuuteen voisi
päästä käyttöliittymän
“alta tai sivusta”.
Kun yksittäisen osion
laajuudesta voi saada
kiinni merkittävät
virheet.
“testaajan tonttia”
“kehittäjän tonttia”
Monday, 13 April 2015 Page 28
Keskusteluharjoitus: Tilannetekijöiden
selvittelyä - testausvälineet
Source: LAWST 2, reprinted in Kaner, “Architectures of Test Automation” and “Avoiding Shelfware”
5. Kuinka todennäköisesti testausvälineen seuraava versio tuo
mukanaan muutoksia syntaksiin ja käskykantaan?
6. Millaiset loki- ja raportoinyikyvyt työkalulla on? Pitääkö näitä lisätä
tai rakentaa?
7. Missä määrin työkalu tekee virheistä toipumisen helpoksi
(testattavan tuotteen osalta), valmistelee tuotetta jatkotesteille ja
synkronisoi tuotteen ja testien tilaa?
8. Yleisesti, millaista toiminnallisuutta tarvitset työkaluun ja työkalun
lisäksi tehdäksesi sen käytettäväksi?
Monday, 13 April 2015 Page 29
Keskusteluharjoitus: Tilannetekijöiden
selvittelyä – testattavat tuotteet
Source: LAWST 2, reprinted in Kaner, “Architectures of Test Automation” and “Avoiding Shelfware”
9. Onko sovelluksen käyttöliittymä vakaa vai vaihtuva?
10. Onko tuotteesta tulossa useita versioita?
11. Odotatko tuotteen olevan vakaa julkaisuvaiheessa vai odotatko tarpeen
testata korjausversioita nopeasti käyttöönoton jälkeen?
12. Missä määrin ohjelmoijat ovat käyttäneet erikoiselementtejä
käyttöliittymässä?
13. Ollaanko tuote kääntämässä toisille kielille? Käännetäänkö se uudelleen
käännöksen jälkeen? Tarvitseeko käännöksen jälkeen testata ja millä
laajuudella? Kuinka monta kieltä?
14. Tekeekö yrityksesi useita tuotteita joita voi testata vastaavilla tavoilla?
Onko työkalukustannus mahdollista jakaa useiden projektien kesken?
15. Missä määrin oraakkeleita on saatavilla? Oraakkelit ovat luotettavia
lähteitä joihin verrata todellista testitulosta.
Monday, 13 April 2015 Page 30
Keskusteluharjoitus: Tilannetekijöiden
selvittelyä – testauksen tavoitteet
Source: LAWST 2, reprinted in Kaner, “Architectures of Test Automation” and “Avoiding Shelfware”
16. Missä määrin etsit viivästettyjen vaikutusten
vikoja (muistivuodot, osoitinongelmat…)?
17. Testaatko oman yrityksen koodia vaiko
asiakkaan koodia? Haluaako asiakas
uudelleenkäytettäviä testitapauksia (ja onko
valmis niistä maksamaan) vai tyytyykö vikaja tilanneraportteihin?
18. Kuinka monipuolisia konfiguraatioita
(yhdistelmiä käyttöjärjestelmäversiosta,
laitteistosta, ajureista, ohjelmistoista) on
tarpeen testata? Missä määrin
yhteensopivuus pitää varmistaa?
19. Minkä tasoinen lähdekoodin versionhallinta
on käytössä? Missä määrin vanhojen
viallisten toteutusten voi odottaa palaavan?
20. Kuinka usein uusia paketteja saadaan
testaukseen?
21. Kuinka hyvin uudet paketit on testattu
kehittäjien toimesta ennen testaajia?
16. Ajaako tuotteen laatua ennen kaikkea
säännökset ja vastuukysymykset vaiko
markkinavoimat (kilpailu)?
17. Joutuuko yrityksesi vastaamaan siitä että
testitapaukset voidaan toistaa?
18. Pitääkö testit voida jäljittää vaatimuksiin sen
osoittamiseksi että jokaiseen vaatimukseen on
vastaavat testit?
19. Kohdistuuko yritykseesi auditointeja tai
tarkastuksia sellaisten tahojen toimesta jotka
haluavat nähdä kattavaa uusintatestausta?
20. Jos teette räätälöityjä ohjelmistoja,
määritteleekö sopimus hyväksymistestit?
Voidaanko nämä automatisoida ja käyttää
uusintatesteinä?
21. Millaiset testit ovat erityisen haastavia tuotteen
kanssa? Kuinka automaatio voisi helpottaa
näiden testien suorittamista?
Monday, 13 April 2015 Page 31
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
Monday, 13 April 2015 Page 32
Testauksen automatisoinnin ja välinetuen yleinen
viitekehys
Väline ja
kehikko
V1
K1
U1
Toteutusteknologiat
Prosessi ja
käytännöt
V2
K2
U2
Toteutusja testaustavat ja
tavoitteet
Organisaatio ja
osaaminen
V3
K3
U3
Kyvykkyys
Liiketoiminta
V4
K4
U4
Valinta
Käyttöönotto
Käyttö ja
ylläpito
Monday, 13 April 2015 Page 33
Valinta – oleelliset kysymykset
Väline ja
kehikko
V1
Prosessi ja
käytännöt
V2
Organisaatio ja
osaaminen
V3
Liiketoiminta
V4
}
Onko automatisointi
mahdollista?
Onko automatisointi
kannattavaa?
Valinta
Monday, 13 April 2015 Page 34
Käyttöönotto – oleelliset kysymykset
Väline ja
kehikko
K1
Millaisia teknisiä rakenteita
tarvitaan?
Prosessi ja
käytännöt
K2
Mitä toimintatapoja pitää
saattaa tilanteeseen sopiviksi?
Organisaatio ja
osaaminen
K3
Mitä osaamista pitää hankkia?
Liiketoiminta
K4
Miten laajennetaan hallitusti?
Käyttöönotto
Monday, 13 April 2015 Page 35
Käyttö ja ylläpito – oleelliset kysymykset
Väline ja
kehikko
Miten teknisiä rakenteita
luodaan ja ylläpidetään?
U1
Miten toimitaan?
U2
Organisaatio ja
osaaminen
Miten osaaminen pidetään
oikealla tasolla?
U3
Liiketoiminta
Onko toiminta kannattavaa?
U4
Prosessi ja
käytännöt
Käyttö ja
ylläpito
Monday, 13 April 2015 Page 36
Automatisoinnin valinta
Valmiudet
Tavoiteltavat
hyödyt
Automaatiokartoitus
Monday, 13 April 2015 Page 37
Testausautomaatiopotentiaalin tutustuminen
Valmistelu
Valmistautumismateriaali
osallistujille
Haastattelu ja
selvittäminen
”Kustannustyöpaja”
Analysointi ja
raportointi
Ensivaikutelmaanalyysi
Tilannetekijätiedon
kerääminen
Dokumentaation
katselmointi
(prosessi, strategia,
suunnitelmat)
Haastatteluajankohdan sopiminen
Tukilistojen
esitäyttö
Raportin
kirjoittaminen
Haastattelut
Interviews
Interviews
Interviews
Katselmoi raportti
ja korjaa
Aika pohtia ja
muuttaa suuntaa
Esitä tulosten
yhteenveto
Työkaluhyötyjä
kotitehtävänä
Määrämitallista
vertailutiedoksi
Monday, 13 April 2015 Page 38
Automaatiokartoitus – roolit
ja alueet
45 min
45 min
45 min
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
Monday, 13 April 2015 Page 39
Välinevalmius
Teknologia ja
arkkitehtuuri
Määrittelyt ja toteutus
Arkkitehtuuri ja testattavuus
Välineen teknologiat
Osaaminen
Ohjelmointi
Testaus
Hallinnointi
Testausprosessit
ja käytännöt
Vaatimukset ja riskit
Testauksen tavoitteet ja
toteutus
Monday, 13 April 2015 Page 40
Osta vs. rakenna - kustannusjakauma
Kaupallinen väline
Avoimen
lähdekoodin väline
Osta
Rakenna
Rakenna
Varsinainen vertailtava asia on rakentamiseen
menevä työmäärä. Kyse ei vain rahasta –
vaan myös joustosta.
Monday, 13 April 2015 Page 41
Case: Automaatiovaihtoehtojen priorisointi
(1/2)
Case 1: Teknisen komponentin
testaus
• Käyttöliittymän kautta ei pääse
suoraan käsiksi toiminnallisuuteen
• Viestintäprotokolla testausrajapintana
• Erillisen testaajan
ohjelmointiosaamisvaatimukset kovat
Case 2: Ketterin menetelmin kehitetyn
verkkopalvelun testaus
• Kehittäjät automatisoivat yksikkötestit
• Järjestelmän osalta virheet
löydettävissä merkittävässä osin
yksikkötestauksella
• Erillisen testaajan rooli määriteltävänä
• Läheinen yhteistyö kehitystiimin
kanssa välttämättömyys
Monday, 13 April 2015 Page 42
Case: Automaatiovaihtoehtojen priorisointi
(2/2)
Case 3: Sulautetun ohjelmiston
testaus
• Ongelmana työkalun lataaminen ja
ajoitukset
• Itse toteutetut apuvälineet nopeammin
saatavilla kuin toimittajien arviointi ja
tarjontaan perehtyminen olisi vaatinut
aikaa
Case 4: Verkkopalvelun testaus
• Ainoa lyhyellä tähtäimellä mahdollinen
rajapinta käyttöliittymä
• J2EE, kerrosarkkitehtuuri
• Aineiston muuntelulla merkittävä rooli
toiminnallisuudelle
Monday, 13 April 2015 Page 43
Harjoitus: Tiimiroolit valinnasta käyttöön
Eri osapuolilla on erilaisia odotuksia onnistuneelle automaatiolle eri vaiheissa.
Etsitään eri osapuolien näkökulmia onnistumisen kokemukseen ja keinoja sen
aikaansaamiseen:
• Sponsori (projekti/liiketoimintajohto)
• Loppukäyttäjä ja asiakas
• Työkalutoimittaja
• Automatisoiva testaaja
• Muut testaajat
Miettikää kahdesta näkökulmasta:
• Näkökulma 1. Automaatiomyönteisen perustelut
• Näkökulma 2. Automaatiovastaisen perustelut
Monday, 13 April 2015 Page 44
Katsaus testiautomaatioon ja
testauksen tukemisen välineisiin
Päivä 1:
Testauksen automatisointi
hallittavana prosessina
Työkalun valinnasta käyttöön
Automatisoitavan testauksen kohteita
Automatisointikeskeisten testaustyyppien
erityispiirteet
Testauksen automatisointi käyttöliittymän
kautta
Päivä 2:
Testausautomaation
toteutus
Testauksen automatisointi rajapintojen
kautta
Testattavuuden arviointi, luominen ja
mittaaminen
Testausautomaation perussäännöt
Monday, 13 April 2015 Page 45
Automatisoitavan testauksen kohteita
Testaustasot ja vaiheet
Testaustyypit
Kohteiden priorisointi
Testiautomaation tavoitteiden asetanta
Automatisoidun testin laatukriteeristö
Monday, 13 April 2015 Page 46
Testaustasot ja vaiheet
Testaustaso – Jatkuvaa testaustoimintaa tietyn tyyppisen
testaustavoitteen ja testauskohteen ympärillä.
• Testaustoiminnasta tekee oleellisesti jatkuvaa vaatimus
uusintatestauksesta muutoksen osalta.
• Taso ei ole välttämättä sama asia kuin vaihe.
Testausvaihe - Testaustason sisäinen tai useiden testaustasojen
yhteinen tehtäväkokonaisuus, joka on tyypiltään kertaluonteinen eikä
jatkuva.
Monday, 13 April 2015 Page 47
V-malli – testauksen tasot
Hyväksymistestaus
Vaatimukset
Määrittely
Tekninen
suunnittelu
Testien
suunnittelu
Ohjelmointi
Järjestelmätestaus
Integrointitestaus
Yksikkötestaus
Testien
ajaminen ja
korjaustyö
Monday, 13 April 2015 Page 48
Testaustasojen tyypilliset merkitykset
Tyypillinen
organisointi
kokonaisuus
Hyväksymistestaus
Testauksen
kohteena
olevan
kokoonpanon
laajuus
osa
Järjestelmätestaus
Integrointitestaus
Yksikkötestaus
osa
Ympäristöjen
edustavuus
Asiakas/
käyttäjä
Testaaja
Toteuttajat
yhdessä
Kukin
toteuttaja
kaikki
Monday, 13 April 2015 Page 49
Testaustyyppi
Testaustyyppi – Ryhmä testausaktiviteettejä, joilla on yhteisiä
ominaisuuksia joiden perusteella ne voidaan tunnistaa omana
luokkanaan, ja jotka on ryhmitelty arvioimaan yhtä tai useampaa
toisiinsa liittyvää laatuominaisuutta.
• Voi sijoittua yhdelle tai useammalle testaustasolle ja
testausvaiheeseen.
• Kaikki eivät aina tarpeellisia - käytännössä testaustyypit muodostavat
tarkastuslistan mahdollisesti katettavista asioista
Testaustyypit jakaantuvat toiminnallisiin ja ei-toiminnallisiin
Monday, 13 April 2015 Page 50
Toiminnallisen testauksen testaustyyppejä
Toiminnallisuustestaus
(functionality testing,
Poikkeustilannetestaus
(recovery testing)
feature testing)
Yhtäaikaisuustestaus (concurrency testing)
Lokalisointitestaus
(localization testing)
Asennustestaus (installation testing)
Dokumentaation testaus (documentation testing)
Alustatestaus (platform testing)
Aineiston laadun testaus (data quality testing)
Aloitustestaus (build verification testing, smoke testing)
Alfatestaus (alpha testing)
Konfiguraatiotestaus (configuration testing)
Betatestaus (beta testing)
Yhteensopivuustestaus
Muuntotestaus (conversion testing)
(compatibility testing)
Rinnakkaistestaus (end-to-end testing)
Rajapintatestaus (interface testing)
Tuotantotestaus (production testing, operational testing)
Standardien testaus (standards testing)
Monday, 13 April 2015 Page 51
Ei-toiminnallisen testauksen
testaustyyppejä
Luotettavuustestaus (reliability testing)
Esteettömyystestaus
Suorituskykytestaus
Palautettavuustestaus (recoverability testing)
(performance testing)
(accessibility testing)
Kuormitustestaus (load testing)
Tuettavuustestaus (supportability testing)
Rasitustestaus (stress testing)
Ylläpidettävyystestaus
Paljoustestaus (volume testing)
Siirrettävyystestaus
Kestävyystestaus
Koodin laadun testaus (code quality testing)
(endurance testing)
(maintainability testing)
(portability testing)
Tietoturvatestaus (security testing)
Käyttöturvallisuuden testaus (safety testing)
Käytettävyystestaus
(usability testing)
Monday, 13 April 2015 Page 52
Kohteiden priorisointi
Mikä on mahdollista?
• Tekijöiden osaaminen, tuoterakenteet, testauksen tavoitteet
Miten näyttää etenemistä?
• Iteratiivinen rakentaminen palasissa, motivaation säilyttäminen
Mikä on kannattavaa?
• Kustannus vs. hyöty
• Toistotarve ja laajennustarve
Monday, 13 April 2015 Page 53
Testiautomaation tavoitteiden asetanta
Yhteisiä ja omaan järjestelmään liittyviä vaatimuksia
• Yhteiset näkyvät automatisoidun testin laatukriteeristössä
Automaatio tarvitsee vaatimukset siinä missä mikä tahansa muukin
ohjelmistoprojekti
Huomio: onnistuneessa automaatiossa usein osattu pilkkoa
vaatimukset toteutukseen alle kahden viikon paloissa.
Monday, 13 April 2015 Page 54
Harjoitus: Lyhyen aikavälin tavoitteet
Määrittele itsellesi kolme tavoitetta automatisoinnille:
• Jotka voisit saavuttaa seuraavan kahden viikon aikana
• Jotka voisit saavuttaa seuraavan kahden kuukauden aikana
Verrataan tavoitteita pareittain.
Monday, 13 April 2015 Page 55
Automatisoidun testin laatukriteeristö (1/5)
Sääntö 1 – testin pitää epäonnistua jos testattava sovellus ei ole
edes asennettu.
Ylläpidettävyys
• Toimivatko testit vielä sovelluksen teknisten yksityiskohtien muutoksen
jälkeen
• Toimivatko versio 1.0 testit versiolle 2.0
• Voidaanko testit helposti päivittää version 2.0 tasolle
• Ovatko testit menemättä läpi tulosteen muodon muutosten vuoksi
Monday, 13 April 2015 Page 56
Automatisoidun testin laatukriteeristö (2/5)
Katselmoitavuus
• Voivatko toiset katselmoida testausskriptit ja ymmärtää mitä ne kattavat
• Onko testausskriptit dokumentoitu
• Vastaako skripti varmasti alkuperäistä testitavoitetta tai -tapausta?
• Mikä kattavuus testijaksolla on? Miten tiedämme?
• Testaako testi oikeita asioita?
Toistettavuus
• Tekeekö testi tasan saman asian joka kerta?
• Onko testeihin upotettu ”satunnaista” aineistoa?
• Muuttavatko testit objekteja siten että niitä ei voida ajaa uudelleen samoja
objekteja vastaan?
Monday, 13 April 2015 Page 57
Automatisoidun testin laatukriteeristö (3/5)
Eheys
• Voidaanko testien tuloksiin luottaa?
• Saadaanko paljon vääriä hälytyksiä?
• Oletko varma että epäonnistuneet testit ovat aina testitulosten joukossa
merkittyinä?
• Onko mahdollista että testi vahingossa jää tekemättä?
Luotettavuus
• Onko testit oikeasti ajettavissa
• Voitko luottaa testijakson tekevän testausta silloin kun sitä oikeasti
tarvitaan
• Toimiiko se muilla alustoilla ja konfiguraatioilla, kuin sillä jossa se on
kehitetty
Monday, 13 April 2015 Page 58
Automatisoidun testin laatukriteeristö (4/5)
Uudelleenkäytettävyys
• Mille tasolle testausmateriaaleja voidaan uudelleenkäyttää uusiin erilaisiin
testeihin?
• Voitko yhdistellä aineistoja, toimintasarjoja ja malleja niin että saat tehtyä
erilaista testausta?
Itsenäisyys
• Voidaanko testit suorittaa yksittäin vaiko aina osana testijaksoa?
• Voivatko kehittäjät käyttää niitä virhetilanteiden toistamiseen?
• Jos edellinen testi ei mene läpi, toimivatko seuraavat oikein?
• Vaikuttaako virhe muiden testien tuloksiin?
Monday, 13 April 2015 Page 59
Automatisoidun testin laatukriteeristö (5/5)
Suorituskyky
• Automaatiokoodia ei yleensä ole tarpeen optimoida suorituskykyä varten
• Itsenäisyyden ja toistettavuuden tukeminen vaikuttaa suorituskykyyn
• Suorituskykyparannuikset voivat tehdä testeistä monimutkaisempia, vähentää
luotettavuutta ja jopa rikkoa eheyttä
• Testiautomaation tavoite yleensä luotettava eteneminen ilman valvontaa. Ei
mahdollisimman nopeasti valvonnassa.
• Syitä suorituskykyparannuksiin: testattavaa ohjelmistoa pitää nopeasti suorituskykytai kuormitustestien osalta, on oleellisia asetus/purkuaikoja, aika
koneella/ympäristössä on rajattua, halutaan pikakelata useita testisyklejä
(päivittäinen toiminta) pitempien ajanjaksojen simuloimiseksi
Yksinkertaisuus
• Monimutkaisuus on testiautomaation peikko
• Testiautomaatiokin pitää testata, mutta tähän on luultavasti vähemmän resursseja
Monday, 13 April 2015 Page 60
Katsaus testiautomaatioon ja
testauksen tukemisen välineisiin
Päivä 1:
Testauksen automatisointi
hallittavana prosessina
Työkalun valinnasta käyttöön
Automatisoitavan testauksen kohteita
Automatisointikeskeisten testaustyyppien
erityispiirteet
Testauksen automatisointi käyttöliittymän
kautta
Päivä 2:
Testausautomaation
toteutus
Testauksen automatisointi rajapintojen
kautta
Testattavuuden arviointi, luominen ja
mittaaminen
Testausautomaation perussäännöt
Monday, 13 April 2015 Page 61
Automatisointikeskeisten testaustyyppien
erityispiirteet
Suorituskykytestaus
Konfiguraatiotestaus
Yhtäaikaisuusongelmien testaus
Uusintatestaus (regressio)
Monday, 13 April 2015 Page 62
Suorituskykytestaus
Kuormitustestaus.
• Vaikka periaatteessa on mahdollista kerätä joukko käyttäjiä painamaan nappia yhtä
aikaa, automaation avulla näitä tilanteita on helpompi simuloida hallitusti.
Suorituskyvyn vertailutestit.
• Paraneeko vai huononeeko järjestelmän suorituskyky, miltä se näyttää suhteessa
vastaaviin kilpailijoiden järjestelmiin? Seuraamalla suhteessa aikaan voidaan
havaita mahdollisien muutoksien aiheuttamat suorituskyvyn heikkenemiset. Vertailla
voi resurssien käyttöä kuten muisti tai tila.
Pitkäkestoisen käytön testaus.
• Viikkojen tai kuukausien käyttö, yhtenä strategiana on käydä joukkoa testejä läpi
pitkällä aikavälillä ilman järjestelmän nollaamista. Napin painaminen kolmessa
vuorossa ei yleensä ole vaihtoehto.
Monday, 13 April 2015 Page 63
Konfiguraatiotestaus
Konfiguraatiotestaus.
• Jos testattavan on useita ympäristöjä, näissä useita konfiguraatioita ja
erilaisia ohjelmisto/laitteistoyhdistelmiä, automaatio voi auttaa kattamaan
oleellista osaa. Tällöin automaatiotestien pitää olla siirrettävissä alustalta
toiselle.
Konfiguraatiotestaus ei ole uusintatestausta
• Uusi ympäristö
• Uudet yhdistelmät  uusia testitapauksia
Hyötysuhde parempi: 30-80 % (Cem Kaner)
Monday, 13 April 2015 Page 64
Yhtäaikaisuusongelmien testaus
Yhtäaikaisuusongelmien testaus.
• Jotkut ongelmat vaativat tarkkaa ajoitusyhdistelmää ja näitä virheitä on
yleensä vaikea löytää ja toistaa.
Yhdistelmävirheiden testaus.
• Ominaisuuksien vuorovaikutus aiheuttaa sen että vaihtoehtoja on liikaa
käsin läpi käytäväksi.
Monday, 13 April 2015 Page 65
Uudelleentestaus vs. uusinta-testaus
Uusia virheitä syntyy
korjauksen vaatimien
muutosten seurauksena.
Perustoiminnallisuuden
uusintatesti
Erikoistunut
toiminnallisuuden
uusintatesti
(Syvyystesti)
(Leveystesti)
Testi löytää
virheen
Korjattu ja
uudelleentestattu
Monday, 13 April 2015 Page 66
Uusintatestauksen ja testien
toistettavuuden tarve
Kaiken testauksen pitäisi perustua riskille
Riskinhallinnan kysymys kuuluu: ”Onko olemassa riski, että
ohjelmisto taantuu”?
Jos taantumisen katsotaan olevan vakava laaturiski, niin testien
toistettavuus ja testauksen säännöllinen toistaminen on tärkeää
Todennäköisyys, että ohjelmistoinsinööri tahattomasti luo virheen
muutosta tehdessään on 20 % ja 50 % välillä (Watts Humphrey, SEI)
• Mutta: kehittäjällä itsellään olisi edullisin mahdollisuus saada tämän
tyyppiset asiat kiinni
Monday, 13 April 2015 Page 67
Uusintatestaus (regressio)
Automatisoinnin hyötysuhde 10-20 %
Roolina ”vakuutus” – varmista kuitenkin että vakuutus kattaa ne asiat
jotka oikeasti ovat tärkeitä
Uusintatestauksessa pienellä joukolla testejä (aloitustestaus) on usein
saatu positiivisia tulokset
Testien lisääminen osoittamaan havaittua virhettä on ollut toimiva
strategia.
Monday, 13 April 2015 Page 68
Harjoitus: Automatisointivalmiustesti
- Käsin vai automatisoidusti?
Lähde: Bret Pettichord. Test Automation Architectures. 2002.
1. Onko automaatio (tai testaus) leima muille ongelmille? (*)
2. Käyttävätkö testaajat automaatiota kasvattaneekseen vakuuttavuuttaan?
3. Pystytäänkö tuotteen koodiin lisäämään testattavuusominaisuuksia?
4. Työskentelevätkö testaajat ja kehittäjät yhteistyössä toisiaan arvostaen? (*)
5. Voidaanko automaatiota kehittää iteratiivisesti?
6. Onko automaatiolle määritelty vaatimukset ja onnistumiskriteerit? (*)
7. Oletko avoin erilaisille konsepteille siitä mitä testiautomaatio voi tarkoittaa?
8. Vetääkö automatisointia joku joka ymmärtää sekä ohjelmointia että
testausta? (*)
Monday, 13 April 2015 Page 69
Automatisointivalmiustestin pisteytys
Lähde: Bret Pettichord. Test Automation Architectures. 2002.
Score
90-100
Valmis automatisointiin
80-85
Hanki ensin muutamia käännynnäisiä
70-75
Lisää aikaa koulutukseen ja pohdintaan
60-65
Odota ja katso tilannetta
55 or less
Tuskinpa
Monday, 13 April 2015 Page 70
Katsaus testiautomaatioon ja
testauksen tukemisen välineisiin
Päivä 1:
Testauksen automatisointi
hallittavana prosessina
Työkalun valinnasta käyttöön
Automatisoitavan testauksen kohteita
Automatisointikeskeisten testaustyyppien
erityispiirteet
Testauksen automatisointi käyttöliittymän
kautta
Päivä 2:
Testausautomaation
toteutus
Testauksen automatisointi rajapintojen
kautta
Testattavuuden arviointi, luominen ja
mittaaminen
Testausautomaation perussäännöt
Monday, 13 April 2015 Page 71