44
A4B33SI, Automatizace testov´ an´ ı Radek Maˇ ık ˇ CVUT FEL, K13133 November 28, 2010 Radek Maˇ ık ([email protected]) A4B33SI, Automatizace testov´ an´ ı November 28, 2010 1 / 55

A4B33SI, Automatizace testování - labe.felk.cvut.czlabe.felk.cvut.cz/~marikr/teaching/A4B33SI_10/Handouts/11.automatizace...Opakovan e pou zit : testovac metodika by nem ela b yt

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

A4B33SI, Automatizace testovanı

Radek Marık

CVUT FEL, K13133

November 28, 2010

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 1 / 55

Obsah1 Motivace

Stav a cıle2 Pojem automatizace

Obecna definice a jejı interpretace3 Automatizace testovanı softwaru

Proc (ne)automatizovat?Prakticka resenı

4 Automatizace navrhu testuZakladnı principyNahodne testovanı - opice

5 Zaklady testovanı jednotekPrincipyArchitektura

6 Nastroje pro testovanı jednotekObecneJUnit 3.8JUnit 4.5

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 2 / 55

Motivace Stav a cıle

Proces vyvoje a proces testovanı

Trendy

Komplexita softwaru prekotne stoupa.

Jednoducha modifikace implementacesoftware muze zpusobit velke mnozstvızmen v testovacıch skriptech.

Nastroje

Vyvojari pouzıvajı pokrocile techniky jako pruvodce, CASE nastroje.Testeri kodujı kazdou radku manualne.

Pouzitı abstrakce

Software pouzıva abstraktnı metody, aby pokryl velke mnozstvı prıpadu.Testware se musı implementovat kazdy prıpad zvlast.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 4 / 55

Motivace Stav a cıle

Pozadovane zakladnı vlastnosti procesu testovanı

Zada se, stezuje se na, diskutuje se, ...

Opakovane pouzitı: testovacı metodika by nemela byt vyvıjenapouze pro jediny projekt.

Flexibilita: vyjadrenı novych konceptu, navrhovych sablon.

Adaptivita: male modifikace v implementaci softwaru by mely bytpokryty automatizovane.

Komplexita: pokrytı dostatecne casti testovacıch prıpadu je casto zamoznostmi manualnı prıpravy.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 5 / 55

Motivace Stav a cıle

Pozadovane odvozene vlastnosti procesu testovanı

Potrebne pro rızenı projektu

Udrzba: potrebne usilı je

neprımo umerne flexibilite a adaptivite,prımo umerne komplexite testovaneho produktu.

Prezentace stavu: dokumentace pravidelne obnovovana, napr.WWW stranky.

Nastroje: integrovana resenı adresujıcı vyse uvedene polozky.

Cena/cas: efektivnost vyjadrena pomocı vyse uvedenych polozek.

Proveditelnost: trh/cena/cas/zdroje/kvalita efektivnost.

Nepretrzity beh: rychla odezva, nekolik fazı (zahorovacı, . . . ,regresnı, dokumentace pravidelne obnovovana, napr. WWW stranky.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 6 / 55

Pojem automatizace Obecna definice a jejı interpretace

Co je to automatizace?

Automatizace

je proces, pri kterem se prirazujıstrojum ci systemum aktivity, kterevykonavali jeste donedavna lide.

Zakladnı stavebnı bloky

formalnı modely,

zpetna vazba,

programovanı.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 8 / 55

Pojem automatizace Obecna definice a jejı interpretace

Urovne automatizace

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 9 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Automatizace testovanı ?

Vyhody

1 Beh regresnıch testu na nove verzi programu.2 Castejsı testovanı.3 Provedenı testu, ktery by jinak bylo obtızne provest.4 Lepsı vyuzitı prostredku.5 Konzistence opakovatelnosti testu.6 Vıcenasobne pouzitı testu.7 Zkracenı doby uvedenı na trh.

Problemy

1 Nerealna ocekavanı.2 Slaba testovacı praxe.3 Ocekavanı, ze automatizovany test nalezne mnoho novych defektu.4 Udrzba automatizovanych testu.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 11 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Porovnanı postupu

Vlastnost Manualnı Automatizovany Automatizovanytestovanı beh navrh

Cena Nızka Vyssı Velmi vysokaprıpravy (omezeny Nızkatestovacı sady rozsah) (existujıcı resenı)

Kombinatoricke Neschopne Velmi omezene Rızenepokrytı

Flexibilita Vysoka (lide) Zanedbatelna Vysokaa adaptivita (prejmenovanı)

Cena behu Vysoka Nızka NızkaVstupy Vagnı Vagnı Modely softwaruDetekcnı Vysoka Nızka Strednıschopnost

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 12 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Charakteristiky manualnıho testovanı

Vysoce flexibilnı a adaptivnı (lide)

Vysoka detekcnı rychlost defektu

Lide jsou schopni ovladat software a vyhledavat chyby i za situace, kdysoftware je ve velmi spatnem stavu.Pouzitı objevneho testovanı (exploratory testing) behem pocatecnıchvyvojovych fazı.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 13 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Charakteristiky automatizovaneho behu

Nızka cena opakovanych behu.

Obtızna udrzba testovacıch skriptu:

Strukturalnı zmeny znamenajı plnohodnotnou manualne vedenoureimplementaci skriptu.Soucasne komercnı nastroje umoznujı pouze prejmenovavanı polozek spoloautomatizovanou detekcı.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 14 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Problem udrzby

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 15 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Usilı vyvoje

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 16 / 55

Automatizace testovanı softwaru Proc (ne)automatizovat?

Testovanı kontra Verifikace

Testovanı softwaru

Neformalnı/formalnı oraculus pro validaci skutecnych vysledku.

Rızene vzorkovanı chovanı softwaru za ucelem snızenıpravdepodobnosti selhanı softwaru ci mıry nespokojenostizakaznıka.

Verifikace softwaru

Zalozena na formalnıch modelech softwaru.

Matematicky dukaz, ze model softwaru je spravny.

Pouze omezena mnozina pouzitelnych technologiı:

Vnoreny software zalozeny na konecnych automatech.Verifikace protokolu.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 17 / 55

Automatizace testovanı softwaru Prakticka resenı

Automatizace provedenı testu - vseobecne

propagovana komercnımi vyrobci,

pouzıvana v praxi, zvlaste pro regresnı testy,

velmi citliva na zmeny specifikacıa implementace softwaru,

testovanı rızene tabulkami(funkce, hodnoty parametru)testovanı rızene daty(sablony skriptu, hodnoty promennych)mapy grafickych rozhrannı(fyzicke adresy - logicka jmena)

dobra vazba na navazujıcı podporu

sprava logu,hlasenı problemu.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 19 / 55

Automatizace testovanı softwaru Prakticka resenı

Automatizace provedenı testu - nastroje

Komercnı automatizacnı nastroje

2 operacnı faze:1 programovanı pomocı simulace behu2 automaticke testovanı

IBM Rational Robot,

IBM Functional Tester,

Mercury WinRunner, HP QTP

Compuware TestPartner.

Automatizacnı ovladace na urovni komponent

Expect, nUnit, jUnit, pyUnit, JavaTest, PyTest, ParaSoft,Rational Robot & Quality Architect

sablony testu

dosazovanı parametru podle kombinacnıch tabulek

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 20 / 55

Automatizace testovanı softwaru Prakticka resenı

Automatizace navrhu testu - pohled manazera

Kratsı perioda vyvoje softwaroveho produktu.

Vyssı spolehlivost

Standardizovana rozhrannı softwaru

Redukce ceny vyvoje testwaru vzhledem k moznostem opakovanehopouzitı.

Moznost jasnejsıch formalizovanych specifikacı komponent softwaru.

Zmensenı zateze testeru-lidı, ktere by jinak museli vyvinout obrovskemnozstvı testu pro slozite softwarove aplikace a stradat jejichudrzbou.

OO: dedicnost, polymorfizmus trıd kombinovany s asociacemi,GUI: ”tahni a pust” akce s ruznymi zdroji a cıli,GUI: spousta formularu generovanych podle modelu.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 21 / 55

Automatizace testovanı softwaru Prakticka resenı

Automatizace navrhu testu - pohled testera

Proc?

prıprava velkeho mnozstvı testu:

OO testing

102 trıd,

103 relacı,

101 vlastnostı nebo metod,

105 a 106 testu.

GUI testing

102 formularu,

102 prechodu,

101 atributu nebo akcı,

104 a 106 testu.

modifikace skriptu pri zmenach softwarove

specifikace, neboimplementace (GUI).

pomerne vysoke naklady

technologie nedospela do plne rozvinute komercnı faze.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 22 / 55

Automatizace navrhu testu Zakladnı principy

Automatizovany navrh testu - postup

1 volba testovacı strategie - testovacı katalog,

2 urcenı testovacıho prıpadu,3 doplnenı na testovacı specifikaci:

1 vytvorenı nezbytneho prostredı pro testovany objekt,2 uvedenı objektu do pozadovaneho stavu,3 provedenı testu,4 uvedenı testovane komponenty do puvodnıho stavu,

4 transformace testovacı specifikace do sekvence,

5 urcenı ocekavanych vysledku,

6 kompilace kodu testovacıho skriptu,

7 vytvorenı doprovodne dokumentace.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 24 / 55

Automatizace navrhu testu Zakladnı principy

Formalnı specifikace softwaru - testovacı modely

manualnı vstup,

plna specifikace byva narocnejsı nez prıme kodovanı,zatım nezbytne pro modely chovanı,

analyza vhodnych modelu a dat softwaru,

UML, IDL, SQL, XML,analyza textovych specifikacı ve vhodnem formatu,

rekonstrukce pomocı reverznıho inzenyrstvı a validace modelu,

COM rozhranı vlastnostı objektu,deterministicke konecne automaty,

problemy se skrytymi stavy,problemy s kombinatorickou explozı stavu jednoduchych automatu,

formalnı metody [Jac97, WD96],

aplikace logiky a jednoduche matematiky na programovanı,zapis formalnıho popisu programu,uzıvany pro modelovanı, navrh a verifikaci dokazovanım.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 25 / 55

Automatizace navrhu testu Nahodne testovanı - opice

Metoda pokusne opice

Myslenka

Pokud milion opic bude po milion letnahodne ”busit” do klavesnice,mohly by statisticky nakonec napsatnejakou Shakespearovu hru ciJiraskovo Temno.

Hloupa opice

Nevı o testovanem softwaru vubec nic.

Jednoducha implementaceRANDOMIZE TIMERFOR i=1 TO 10000PLAY ”{CLICK ” + STR$(INT(RND+640)) + ”. ” + STR$(INT(RND*480)) + ” }”PLAY CHR$(RND*256)

NEXT i

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 27 / 55

Automatizace navrhu testu Nahodne testovanı - opice

Chovanı opic a typy aplikacı

Hierarchie Sıt

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 28 / 55

Automatizace navrhu testu Nahodne testovanı - opice

Zvysenı inteligence opice

zaznamy do protokolu,

zamerenı akce na konkretnı aplikaci,

detekce, kde se opice nachazı,

co na tomto mıste muze udelat,

kam muze prejıt,

kde jiz byla,

jestli to, co vidı, opravdu spravne,

prectenı (zjistenı) mapy stavu a prechodu daneho softwaru

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 29 / 55

Automatizace navrhu testu Nahodne testovanı - opice

Hranice metody pokusne opice

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 30 / 55

Zaklady testovanı jednotek Principy

Terminologie

System X

Component D

Component C

Component B Component A

Unit 2

Unit 5

Unit 11

Unit 6

Unit 3

Unit 10

Unit 4

Unit 9

Unit 1 Unit 7

Unit 12

Unit 8

Jednotka je nejmensı testovatelny kus softwaru. Znamena to, ze muzebyt prelozen, sestaven, spusten a rızen testovacımprıpravkem nebo radicem.

proceduralnı programovanı: program, funkce,procedura.objektove-orientovane programovanı: trıda

Komponenta, Modul je integrovany agregat jedne a vıce jednotek.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 32 / 55

Zaklady testovanı jednotek Principy

Cıl

Cılem je

izolovanı kazde casti programu,prokazanı, ze jednotlive individualnı casti jsou spravne.otestovanı dane individualnı metody v izolaci.

Kazdy testovacı prıpad je nezavisly na ostatnıch.

Testy zamerujıcı se na chovanı jine nez urcene signaturou metodynejsou povazovany za jednotkove.

Kazdy test urcuje striktnı explicitne popsany kontrakt, ktery dany kodmusı splnit.

Eliminace interakcı mezi jednotkami umoznuje jejich testovanı zapodmınek, ze potrebne dalsı jednotky nejsou jeste implementovany.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 33 / 55

Zaklady testovanı jednotek Principy

Strategie

Testovanı jednotek typicky provadı vyvojari.

Testovanı jednotek je zakladnım pilırem extremnıho programovanı(XP).

Automatizovane, opakovatelne, a proaktivnı testovanı.

Vyvoj rızeny testyPokud napısete nejprve testy, pak se hned z pocatku ztotoznujete s rolızakaznıka.”Zakaznık ma vzdy pravdu” - prioritnı pohled zakaznıka.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 34 / 55

Zaklady testovanı jednotek Principy

Typicka pravidla

1 Napis nejprve test, ktery je mozne prelozit (ale ne vıce).vede k testovatelnemu kodu,vede k cılove-orientovane implementaci kodu,

2 Nikdy nepis test, ktery je bezprostredne uspesny po jeho napsanı.kazdy test by mel overovat novou, jeste neimplementovanou vlastnost,overenı spravnosti testu reakcı na implementovanou vlastnost,

3 Zacni s prazdnym prıpadem, ci s necım, co nepracuje.4 Neboj se neceho, co vede na trivialnı veci, ktere splnı test.

testy, ktere overujı hranicnı jednoduche hranicnı podmınky5 Eliminace interakcı podporuje testovatelnost.

vede na udrzovatelny kod, se kterym je mozne pracovat i za podmınek,ze okolnı casti kodu chybı,

6 Pouzıvej imitacnıch objektu.poskytujı jasny pohled na prubeh interakcı mezi komponentami.

7 Chodıcı testy se neodstranujı, tj. jsou spojeny s implementovanoufunkcionalitou.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 35 / 55

Zaklady testovanı jednotek Principy

Vyhody I

Umoznuje zmeny implementace

kontroluje stabilitu funkcionality pri refaktorovanı kodu,jednotkove testy odrazı zamyslene pouzitı kodu,dobry navrh pokryva vsechny pouzitelne cesty.

Zesiluje separaci rozhranı od implementace

Zamerenı pouze na jednotku vyzaduje minimalizaci interakce jednotky sokolım.Prıpadna rozhranı jsou explicitne definovana, aby bylo mozne prostredıjednotky vytvorit pomocı nahrad.Nalezenı a eliminovanı nadbytecnych zavislostı mezi jednotkami.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 36 / 55

Zaklady testovanı jednotek Principy

Vyhody II

Zjednodusuje integraci

pri navrhu a implementaci zdola-nahoru zjednodusuje integracnı testy.

Poskytuje ”zivou” dokumentaci

vyvojar muze vycıst funkcionality z testovacıho kodu,umoznuje porozumenı API jednotky,identifikuje jak

positivnı chovanı, tj. cılenou funkcionalitu,tak negativnı chovanı, napr. pri nevhodnych parametrech ci zpracovanıvyjimek

na rozdıl od bezne dokumentace se vyvıjı soucasne s implementacıkodu.

Chovanı identifikovane testy podporuje lepsı komunikaci s ostatnımiprogramatory

chovanı a jeho protokoly jsou explicitne zachyceny,pri zadostech o zmeny selhavajıcı testy ihned identifikujı problemy,eliminuje prıpady pouzitı s vedlejsımi skrytymi ucinky,

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 37 / 55

Zaklady testovanı jednotek Principy

Nevyhody, Omezenı

Nechytı vsechny chyby programu.

Testuje pouze funkcionalitu jednotek. Nenalezne chyby

integracnı,vykonostnı,systemove.

Jako vsechny ostatnı formy testovanı

muze pouze ukazat prıtomnost chyb,ale nemuze prokazat jejich absenci.

K identifikaci prıcin chyb je nutne podporit systemem rızenı zmen.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 38 / 55

Zaklady testovanı jednotek Architektura

Testovacı prostredı

angl. unit testing framework,

je software zajistujıcı testovanı jednotek,

spoustenı celych sad testu, prıpadne vybranych castı,spustenı vybraneho testu.

vytvarı promenlive podmınky testu,

monitoruje chovanı jednotek a jejich vystupu,

prubezne sledovanı behu testu,generovanı reportu

umoznuje analyzu vysledku,

sklada se z exekucnıho modulu a sady testovacıch scriptu

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 40 / 55

Zaklady testovanı jednotek Architektura

Koncepty

Prıslusenstvı (angl. fixture) - sada objektu, ktere jsou testovany.

Testovacı prıpad (angl. test case)

trıda, ktera definuje prıslusenstvı pro radu testu,definuje promennou pro kazdou polozku prıslusenstvı,zarucuje vytvorenı a likvidaci prıslusenstvı.

Nastavenı (angl. setup) - metoda pouzita pro inicializaci promennychpred kazdym testem ci sadou testu.

Uklid (angl. tearDown) - metoda pro uvolnenı zdroju alokovanychnastavenım.

Testovacı sada (angl. test suite) - soubor testovacıch prıpadu.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 41 / 55

Zaklady testovanı jednotek Architektura

Resenı chybejıcıch jednotek

Nahrada (angl. test double) - obecny pojem pouzity pro jakykolivobjekt, jehoz ucelem je dorucit funkcionalitu realnehoobjektu pro ucely testovanı.

Prazdny object (angl. dummy object) - objekt se predava, typicky jakoparametr, ale nenı de facto pouzit.

Padelek (angl. fake object) - plna funkcionalita radne implementaci,typicky nevhodna pro nasazenı v realne aplikaci,

nahrazenı realne databaze jednoduchou databazi vpameti.

Imitator (angl. mock object) - objekty plnı prıpadne kontrolujıvybranou specifikaci jejich volanı,

typicky specifikujı sekvenci volanı, tj. verifikujı chovanı

Zastupce (angl. stub) - je schopen dodat odpovedi v omezenychprıpadech cılenych jednotlivymi testy, tj. verifikuje stav.

mohou zaznamenavat i prubeh volanı.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 42 / 55

Nastroje pro testovanı jednotek Obecne

Prehled prostredı - vybrane prıklady

SmalltalkKent Beck publikoval myslenku prostredı pro testovanı jednotek v roce1998. Tato myslenka a navrzeny protokol byl pak prevzat aimplementovan radou dalsıch (102) programovacıch prostredı.SUnit

JavaTestNGJUnit

PythonPyUnit

C++CppUnitCxxUnit

.NETNUnitVisual Studio Team Edition

DelphiDUnit

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 44 / 55

Nastroje pro testovanı jednotek Obecne

JUnit

http://www.junit.org

jednotkove testovanı pro jazyk Java

podpora vyvojovymi prostredky

Ant,Maven,NetBeansEclipse.

JUnit 3.8lokalizace testu zalozena na

dedicnosti trıd,reflexi,konvenci jmen.

JUnit 4.x, nynı 4.8zalozen na vlastnostech Java 5

anotacestaticky import

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 45 / 55

Nastroje pro testovanı jednotek JUnit 3.8

Architektura JUnit 3.8

Prıkazova sablona pro definici testu

TestCase je prıkazovy objekt, ktery obsahuje implementace testovacıchmetodtestXXX() definuje testovacı metodu (zacına ”test”),assert() metodu a radu jejıch variant lze pouzıt pro porovnanıocekavanych a aktualnıch vysledku.setUp() a tearDown() metody inicializujı a rusı spolecne objektuprıslusenstvı pro kazdou testovacı metodu zvlast.

Kompozicnı sablona pro vytvorenı hierarchie testu

TestSuite definuje hierarchii testu,vytvarenı testu obvykle automatizovano uzitım reflexe a konvencı jmen,postupy se velmi lisı,

Beh testu

Textove rozhranı: java junit.textui.TestRunner junit.samples.AllTestsGraficke rozhranı: java junit.swingui.TestRunnerjunit.samples.AllTests

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 47 / 55

Nastroje pro testovanı jednotek JUnit 3.8

JUnit 3.8 prıklad: testovacı metody

import junit.framework.TestCase;

public class AdditionTest extends TestCase {

private int x = 1;

private int y = 1;

@Override protected void setUp() {

y = 2;}

public void testAddition() {

int z = x + y;

assertEquals(3, z);}

protected void tearDown() {

System.gc();}

......

}Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 48 / 55

Nastroje pro testovanı jednotek JUnit 3.8

JUnit 3.8 prıklad: testovacı sada

import junit.framework.*;

public class AdditionTest extends TestCase {

.......

public static Test suite(){

return new TestSuite(AdditionTest.class);

}

public static void main(java.lang.String[] argList){

junit.textui.TestRunner.run(suite());

}

}

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 49 / 55

Nastroje pro testovanı jednotek JUnit 4.5

Architektura JUnit 4.5

Prıkazova sablona pro definici testu

testovacı trıda se neodvozuje z TestCase,assert() metodu a jejı varianty lze pouzıt podobne jako v JUnit 3.8.@Test dekorace definuje testovacı metodu,@Before dekorace oznacuje metody inicializujı spolecne objektuprıslusenstvı pro kazdou testovacı metodu zvlast.@After dekorace oznacuje metody rusıcı spolecne objektu prıslusenstvıpo kazde testovacı metode.@BeforeClass dekorace oznacuje verejne staticke metody bezıcı predtrıdou.@AfterClass dekorace oznacuje verejne staticke metody bezıcı po trıde.@Ignore dekorace oznacuje ignorovany test.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 51 / 55

Nastroje pro testovanı jednotek JUnit 4.5

Architektura JUnit 4.5

Kompozicnı sablona pro vytvorenı hierarchie testu

@RunWith(Suite.class) dekorace specifikuje trıdu testovacı sady@SuiteClasses(TestA.class, TestB.class) dekorace specifikuje trıdy testupatrıcı do prıslusne sady

Beh testu

prıma podpora v IDE nebo antlze pouzıt podpory vytvorene v JUnit 3.8 pomocı adapteru

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 52 / 55

Nastroje pro testovanı jednotek JUnit 4.5

JUnit 4.5 prıklad: testovacı metody

import org.junit.*;

import static org.junit.Assert.*;

public class AdditionTest {

private int x = 1;

private int y = 1;

@Before public void setUp() {

y = 2;}

@Test public void testAddition() {

int z = x + y;

assertEquals(3, z);}

@After public void tearDown() {

System.gc();}

......

}Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 53 / 55

Nastroje pro testovanı jednotek JUnit 4.5

JUnit 4.5 prıklad: testovacı sada

import junit.framework.JUnit4TestAdapter; //from 3.8

public class AdditionTest {

.......

public static junit.framework.Test suite() {

return new JUnit4TestAdapter(AdditionTest.class);

}

public static void main(java.lang.String[] argList){

junit.textui.TestRunner.run(suite());

}

}

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 54 / 55

Nastroje pro testovanı jednotek JUnit 4.5

Literatura I

Jonathan Jacky.

The Way of Z: Practical Programming with Formal Methods.Cambridge University, 1997.

Jim Woodcock and Jim Davies.

Using Z: Specification, Refinement, and Proof.Prentice Hall, 1996.

Radek Marık ([email protected]) A4B33SI, Automatizace testovanı November 28, 2010 55 / 55