ngb in003 1 sze 2014-15/2 (12) szoftver-heckenas/okt/sqa12.pdf · 2015. 4. 21. · tesztek...

30
NGB_IN003_1 SZE 2014-15/2 (12) Szoftver- minőségbiztosítás Tesztautomatizálás (folyt.)

Upload: others

Post on 31-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • NGB_IN003_1 SZE 2014-15/2 (12)

    Szoftver-minőségbiztosítás

    Tesztautomatizálás (folyt.)

  • Automatizálási megfontolások

    ❖ Mit akarunk tesztelni?

    ❖ Hogyan lehet/kell a teszteket beállítani?

    ❖ Honnan származnak a bemenetek?

    ❖ Mit kell ellenőrizni?

    ❖ Mik az elvárt kimenetek?

    ❖ Hogy lehet eldönteni egy teszt sikerességét?

  • Tesztautomatizálási architektúrák

    ❖ Funkcionális ekvivalencia tesztelés

    ❖ Szkript alapú tesztelés

    ❖ Keretrendszer alapú tesztelés

    ❖ API alapú tesztelés

    ❖ Adat-hajtott tesztelés

    ❖ Modell alapú tesztelés

  • Funkcionális ekvivalencia tesztelés❖ Alternatív program az elvárt eredmények előállítására

    Tesztelés

    SUTAlternatív program

    (teszt orákulum)

    Eredmények(összehasonlítás)

  • Szkript alapú tesztelés❖ Kihívások

    ❖ Módszertani:❖ törékeny tesztek (termék és interfész változások)❖ különböző konfigurációk kezelése❖ SUT állapot követése❖ bedrótozott input

    ❖ Technikai:❖ lépéstartás az új, fejlesztésben használt technológiákkal❖ instrumentálás❖ az eszközben lévő hibák❖ szükséges testreszabás❖ custom control-ok kezelése

  • Szkript alapú tesztelés (folyt.)

    ❖ Bizonyos esetekben használható rögzítés/visszajátszás:

    ❖ UI korai befagyasztása

    ❖ standard UI technológiák használata

    ❖ felderítő tesztelés monitorozása

  • Szkript alapú tesztelés (folyt.)

    ❖ Felhasználás automatizált regressziós teszteléshez:

    ❖ Meglévő manuális tesztek automatizálása

    ❖ Hozzáadás a regressziós tesztkészlethez

    ❖ Eredmények = fájl (kimenet) összehasonlítás

    ❖ Minden teszthez ugyanaz a technika

  • Keretrendszer alapú tesztelés❖ Tesztelő keretrendszer: kódkönyvtár ~ konkrét tesztektől

    szeparált rutinok❖ Előnyök:

    ❖ modularitás❖ komponensek újra felhasználása❖ teszteszköz és UI parancsok önálló fejlesztése❖ függetlenség a tesztelt alkalmazástól (teszteset

    szriptek)❖ hibakezelő utility-k

  • API alapú tesztelés❖ Nyílvános és privát API-k

    ❖ Egység-, integrációs és rendszer tesztek

    ❖ Többféle megközelítés

    ❖ hardkódolt

    ❖ adat-hajtott

    ❖ szkript alapú

    ❖ random tesztek

  • Kód alapú API-n keresztüli tesztelés❖ Minden teszteset egy program

    ❖ bemenetek biztosítása (API hívások), kimenet elemzése

    Teszt programSUT

    API

    függőségek(kód, adatok)

  • Interaktív API-n keresztüli tesztelés❖ A tesztelő rendelkezésére áll egy teszt UI

    Teszt UISUT

    API

    függőségek(kód, adatok)

    Tesztelő

  • Szkriptelt API-n keresztüli tesztelés❖ Minden teszteset egy szkript

    ❖ bemenetek biztosítása (API hívások), kimenet logolása

    Szkript-interpreterSUT

    API

    függőségek(kód, adatok)

    Szkript

    Inputfájlok

    Logfájlok

    Várteredmények

  • Adat-hajtott tesztelés

    ❖ Elemek szeparálása a tesztelésben:❖ Teszteset különáll a meghajtótól❖ Önálló teszteszköz/környezet❖ Önálló tesztadatok (input, eredmények)❖ Önálló szkript-nyelv❖ Önálló teszt-konfiguráció❖ Elkülönült instrumentált SUT

  • Adat-hajtott tesztelés (folyt.)

    ❖ Célzott előnyök:

    ❖ Az egyes összetevők jobb karbantarthatósága

    ❖ Jobb érthetőség (absztrakciós szint emelése)

    ❖ Változtatások (UI, teszt API, teszteszköz) hatásának minimalizálása

    ❖ Flexibilis teszt-szkriptek, jobb újra felhasználatóság

  • Adat-hajtott tesztelés (folyt.)

    SUTSzkript-nyelvTesztszkript

    Nyelv spec.Teszt

    konfig.Teszt-adatok

    SUT konfig.

    SUT UI-modell

    SUT spec. parancsok

  • Modell alapú teszt-automatizálás

    ❖ Tesztek elvégzése (teszteset generálás, értékelés) szabályok alapján

    ❖ A szoftver állapot modelljére alapozva (felhasználói akciók, akciók eredménye, korrekt új állapot)

    ❖ Sztochasztikus tesztelés

    ❖ Nem sztochasztikus tesztelés

  • Modell alapú teszt-automatizálás (folyt.)

    SUT

    Teszt-program

    SUT konfig.

    SUT állapot-modell

    Input adatok

  • Modell alapú teszt-automatizálás (folyt.)

    ❖ Sztochasztikus tesztek

    ❖ Random esemény bemenetek a program számára

    ❖ Elért állapot ellenőrzése

    ❖ kód-feltételek (assertions)

    ❖ esemény-logok

    ❖ állapot átmenet térképek

    ❖ Jól alkalmazható szűkebb funkciójú szoftverek esetén (pl. beágyazott rendszerek)

  • Modell alapú teszt-automatizálás (folyt.)

    ❖ Nem sztochasztikus tesztek

    ❖ Bemenetek szisztematikus előállítása a modellnek megfelelően

    ❖ függvényhívások és paraméterek megválasztása

    ❖ input érték tartományok megválasztása az állapotok és átmenetek alapján

    ❖ esemény szekvenciák bemenetként

    ❖ pozitív és negatív tesztesetek

  • A tesztelhetőség javítása❖ További ellenőrzési lehetőségek beépítése:

    ❖ Hardver integritás ellenőrzése

    ❖ Adatbázis integgritás ellenőrzése

    ❖ Memória integritás ellenőrzése

    ❖ Erőforrás felhasználás jelentése

    ❖ Esemény logok készítése

    ❖ Csomagoló réteg kialakítása

    ❖ üzenetek, (állapot)változók monitorozása, beállítása

  • Automatizálási funkciók❖ Automatikus teszteset/adat generálás (tesztesetek a

    követelményekből vagy a kódból)

    ❖ Tesztesetek kiválasztása

    ❖ Beavatkozás mentes teszt-végrehajtás

    ❖ Tesztkörnyezet beállítása (konfiguráció)

    ❖ Eredmény összehasonlítás

    ❖ Sikeresség/sikertelenség eldöntése, riportolása

  • Tesztkörnyezetek funkciói❖ Forráskód elemzése❖ Teszteset tervezés és létrehozás támogatása❖ Tesztadatok generálása❖ Tesztkörnyezet menedzselése❖ Tesztesetek kiválasztása futásra❖ Teszt-szkriptek futtatása❖ Tesztelési események rögzítése❖ Elvárt eredmények kezelése (létrehozás, tárolás, frissítés, stb.)❖ A szoftver válaszainak rögzítése❖ A tesztfutás értékelése❖ Riportok előállítása

  • Tesztkörnyezet (pl.)

    Cantata

    Teszteredmények

    Lefedettségi adatok Tesztesetek

    Teszt-szkript(és orákulum)

  • Tesztkörnyezet (pl.)❖ Cantata funkciók

    ❖ Tesztervezés❖ statikus elemzés (komplexitás metrikák)

    ❖ Tesztautomatizálás❖ teszt-szkript generálás (csonkok, csomagolók)

    ❖ Teszt végrehajtás❖ make file generálás (SCM csatolás)❖ input adatok táblázatokból

    ❖ Objektum orientált tesztelés❖ teszteset leszármaztatás

    ❖ Lefedettség elemzése❖ hívás, utasítás, kód alapblokk, döntés, feltétel, kontextus

    ❖ Riportok

  • Integrált egységtesztelés - JUnit❖ Java programok egység-tesztelése

    ❖ Automatikus tesztelés

    ❖ Tesztkészletek végrehajtása

    ❖ fejlesztéssel egyidejű teszteset tervezés

    ❖ Tesztfutások “értékelése”

    ❖ eredmények értékelése

    ❖ Teszteredmények rögzítése

  • Integrált egységtesztelés - JUnit❖ Végrehajtás és dokumentálás alapja a command pattern

    (3.8.x verzió)

  • Integrált egységtesztelés - JUnit❖ Teszt metódusok

    ❖ tesztelendő kód hívása❖ kijelentések a helyes eredményekre vonatkozóan

    ❖ assert(’2’==ch)❖ assertEquals(’2’,ch)❖ fail()

    ❖ TestSuite-ok létrehozása❖ ekvivalencia osztályok❖ határérték analízis❖ stb.

  • Integrált egységtesztelés - JUnit❖ Hiba kezelés❖ failure (erre számítunk, teszteredmény)❖ error (erre nem számítunk)

    public void run(TestResult result) { result.startTest(this); setUp(); try { runTest(); } catch (AssertionFailedError e) { //1 result.addFailure(this, e); } catch (Throwable e) { // 2 result.addError(this, e); } finally { tearDown(); } }

  • Integrált egységtesztelés - JUnit

    JUnit IDE integráció

  • Automatizálási tanulságok

    ❖ A tesztelés kognitív tevékenység

    ❖ A tesztautomatizálás szoftver fejlesztés (is)

    ❖ A tesztautomatizálási projektek drágák

    ❖ Az automatizálás a rossz tesztelési folyamaton csak ront

    ❖ A teljes tesztelés nem automatizálható