Testausautomaation mahdollisuudet käyttöliittymän testauksessa Anssi Pekkarinen 5.11.2015
Agenda Kustannustehokkaan testausautomaation tekemiseen vaikuttavat tekijät Käyttöliittymätestauksen haasteet Uudet mahdollisuudet & innovaatiot Testability attribute Testausautomaation tekeminen: sivumallit Aktiivinen testien ylläpito Lomaketestausautomaatio Visuaalinen layout-checkkaus automaatioraportti Kevyempi mallipohjainen testaus Loppukäyttäjän kokemuksen ja suorituskyvyn seuranta
Kustannustehokas testausautomaatio 1. Testien kehityskustannukset Henkilöresurssi on suurin kustannuserä -> Siirretään työtä työkalun tekemäksi Työkalu ( avoin lähdekoodi, kaupallinen(lisenssi hinta)) -> Paras vaihtoehto on työkalu, joka huomioi asiakkaan testauksen kokonaistarpeet sekä täyttää vaatimukset hinta-laatu suhteeltaan ja käyttää tehokkaita ratkaisuja 2. Testien ylläpito Henkilöresurssi on suurin kustannuserä -> Tarvitaan menetelmiä muutosten visualisointiin ja virheen korjaukseen Huonosti tehty testiskripti nostaa kustannuksia -> Testaustyökalun pitää tukea ylläpidettävää testiskriptien rakennetta 3. Testaustyökalun monikäyttöisyys Samalla työkalulla voidaan ratkoa useampia testauksen haasteita ( toiminnallisuustestaus, suorituskykytestaus, visuaalinen testaus, tuotannon monitorointi, muistivuotojen testaus) -> Nämä yhdestä työkalupakista Testiskriptien uudelleenkäytettävyys -> Toiminnallisen testauksen testejä voidaan hyödyntää muissa testauksen osa-alueissa
Kehitysvaihe Ylläpidettävien testien tekeminen -> Testeissä tyypillisiä ongelmia: synkkaus, web-elementin tunnistus ja verifiointi Web-elementtien tunnistus -> Iso osa ajasta hukataan tähän vaiheeseen. Huono testattavuus tekee tästä haasteellista Regressiotestien tekeminen on hidasta -> Liian paljon aikaa käytetään testien tekemiseen vs. kehityskustannukset Nauhoita ja toista -testit eivät toimi -> Huono ylläpidettävyys ja huono testien rakenne. Testit ovat usein rikki Testejä ei tehdä käyttöliittymän aikaisessa kehitysvaiheessa -> Muutoksia tapahtuu usein ja ihminen ei pysy perässä testien tekemisessä Ylläpitovaihe Käyttöliittymätestauksen haasteet: kehitys & ylläpitovaihe Lineaarisesti tehdyt testit tuottavat päänsärkyä -> Monistettu testikoodi tekee testeistä haavoittuvaisia Testien ylläpito vie paljon aikaa ja rahaa ja testit ovat usein rikki -> Virheiden etsiminen, ymmärtäminen usein haasteellista virheraporteista
Käyttöliittymätestauksen haasteet: testattavuus Sovelluksen testattavuus Testattavuus tärkeä tekijä tehtäessä kustannustehokasta testausautomaatiota, jotta pystytään verifioimaan, liikuttamaan ja painelemaan nappeja testattavasta sovelluksesta Testattavuuteen voi vaikuttaa jo kehitysvaiheessa tekemällä käyttöliittymäelementeistä: hallittavia, tarkasteltavia, eristettäviä, ymmärrettäviä -> Tarkoittaa käytännössä, että työkalu osaa esim. painaa haluttua Tallenna -nappia Esimerkki 6kk projektista ( huono testattavuus vs. hyvä testattavuus ) vaikutus työmäärään: Sovellus 1: Huono testattavuus Testausautomaation tekeminen: 1.5 kk ja testien ylläpito: 0.75 kk Yhteensä työmäärä 2.25 kk Sovellus 1: Hyvä testattavuus Kehityksen panostus testattavuuden parantamiseen: 0.2 kk Testausautomaation tekeminen: 0.8 kk ja testien ylläpito: 0.2 kk Yhteensä työmäärä 1.2 kk
Uudet mahdollisuudet & innovaatiot Myös testaustyökalut tarvitsevat uusia ideoita & innovaatiota
Testability attribute Testattavuuden parantamisen keinoja web- sovelluskehityksessä: Lisätään web-elementille attribuutti id, joka yksilöi elementin. Sitä on helppo kutsua tai viitata testiskriptissä Lisätään web elementille testability attribute esim. data-name, joka yksilöi elementin Jokaisella ohjelmointikielellä (Java, Ruby tai framework (Vaadin)) on oma tyylinsä testattavuudesta Esimerkkejä: Web elementti ilman testattavuutta: ELEM_WITHOUT_TESTABILITY = (By.XPATH, u'//body/div[1]/div[1]/table[1]/tbody[1]/tr[3]/td[2]/div[1]') Web elementti id attribuutin kanssa: ELEM_WITH_ID = (By.ID, u homepagebutton') Web elementti testability attribuutin data-name kanssa: ELEM_WITH_TESTABILITY = (By.CSS_SELECTOR, u div[data-name= homepagebutton"]')
Testausautomaation tekeminen: sivumallit 1. Työkalu luo tarvittavat sivumallit ja dynaamiset kohteet -> Ylläpito tapahtuu sivumallien avulla. Näkymät päivittyvät koneen avulla ( Koneen silmä on tarkempi kuin ihmisen ) 2. Suunnittele uudelleenkäytettäviä menetelmiä sivumallikirjastoon (Funktiokirjasto) Sivumallikerros -> Ylläpidon kannalta tärkein kerros, sivu ja elementti. Muutoksissa muutos vain yhteen paikkaan -ajatusmalli. Työkalu auttaa päivitystilanteissa korvaamaan vanhat menetelmät uusilla. 3. Suunnittele ja toteuta testejä sivumallikirjaston avulla Testikerros -> Ylläpidon tavoite on, että tähän kerroksen ei tarvitse koskea, vaan muutokset tapahtuu sivumallikerroksella. Päivitetään testiskriptiä vain silloin, kun testispeksit muuttuvat.
Aktiivinen testien ylläpito auttaa havainnoimaan muutoksia ja visualisoi muutokset käyttöliittymässä Sivumallien avulla mahdollistetaan nettisivujen muutosten havaitsemisen automaattisesti. Havaitut muutokset (uudet tai puuttuvat elementit, rikki olevat metodit) esitetään kuvien avulla raportissa. Sivumallirakenne pakottaa tekemään testit ylläpidettävään muotoon -> Page object pattern/page model -ajatus Työkalu tarjoaa korjaustoimintoa testien korjaukseen (päivitys vanhasta uuteen elementeissä) Aktiivinen testien ylläpito
Lomaketestausautomaatio Luodaan uusia innovaatioita täyttää ja luoda testiskriptit web-lomakkeiden ja input-kenttien täyttämiseen Lomaketestausautomaatio perinteisellä tavalla Haetaan syöttökentille elementtien tunnisteet eli locaattorit ja tehdään testidata Käyttäjä kirjoittaa testiskriptin jokaiselle syöttökentälle Paljon manuaalista työtä, jotta lomakkeen täyttö saadaan testiskriptin muotoon Lomaketestausautomaatio sivumallien avulla Työkalu mallentaa lomakkeen elementit, kerää käyttäjän syöttämän testidatan web-sivulta sekä tekee testiskriptin lomakkeen täyttämiseen Työkalu tekee suurimman osan työstä Lomake testausautomaatio voi nopeuttaa 15-20x testiskriptin tekemisessä Mitä enemmän käyttöliittymässä input kenttiä niin sitä enemmän tätä voidaan hyödyntää Tulevaisuudessa: Verify lomaketestausautomaatio
Visuaalinen layout-chekkaus automaatioraportti Tietokone koostaa testauslayout-raportin ajamalla olemassa olevia testiskriptejä ja keräämällä kuvia eri selaimilla ja näyttöresoluutioilla Raportti antaa mahdollisuuden verrata sivujen layout-näkymien käyttäytymistä eri selaimilla ja eri resoluutioilla Raportti antaa kuvaa sivujen responsiivisuudesta, toimivuudesta ja ulkonäöstä koostamalla testiraportin kuvavertauksineen. Ihminen tekee testiraportin perusteella päätöksiä -> ei kone.
Mallipohjainen testaus sivumallien avulla luo uusia mahdollisuuksia testata sovelluksen toimintaa Mallipohjainen testaus Sen avulla voidaan kasvattaa entistä helpommin testauskattavuutta ja laajentaa testausautomaatiota uusille alueille Mallipohjainen Offline testaus: Työkalu generoi malligraafin tilasiirtymistä testiskripteja läpikäymällä mallin eri testauspolut Mallipohjainen Online testaus: Työkalua voidaan käyttää online-pohjaisesti, jolloin se arpoo ajonaikaisesti ja satunnaisesti painotusten mukaan testattavaa testauspolkua. Onlinepohjaisessa käytössä ei ole testikeissejä, vaan mallin siirtymiä linkitetään vaatimuksiin. Tällä tävalla voidaan lisätä testauksen satunnaisuutta: enemmän satunnaisskenaarioita sekä erilaisia loppukäyttäjän skenaarioita.
Loppukäyttäjän kokemuksen ja suorituskyvyn seuranta Yhdistää mittauspisteet trendikuvaajaksi, jota voidaan käyttää loppukäyttäjän kokemuksen ja suorituskyvyn mittaukseen ja arviointiin Antaa todellista kuvaa millaiseksi loppukäyttäjä kokee sivujen latausajan sekä kertoo tärkeää tietoa palvelun saatavuudesta Seurataan kolmea muuttujaa: web-palvelu toimii halutulla tavalla, sivujen latausaika resurssien latausaikoja Testit ajetaan selaimessa joka mahdollistaa monitoroinnin loppukäyttäjän näkökulmasta Verkon latenssi Latausaika: Sivun latausaika kun se vastaanotetaan palvelimelta Kokonaisaika: Koko tapahtuma navigoinnista sivun lataukseen Resurssien yhteenlaskettu latausaika: n resursseja ladataan Yksittäisten resurssien latausaika: img, script, xmlhttprequest,... Hälytykset
Ja seuraavaksi demo... www.q-factory.fi anssi.pekkarinen@q-factory.fi Copyright 2015, Q-Factory, QAutomate
Kiitos! www.q-factory.fi anssi.pekkarinen@q-factory.fi Copyright 2015, Q-Factory, QAutomate