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

NGB IN003 1 SZE 2014-15/2 (12) Szoftver-heckenas/okt/SQA12.pdf · 2015. 4. 21. · Tesztek elvégzése (teszteset generálás, értékelés) szabályok alapján ... Java programok

Jan 31, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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ó