A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Hasonló dokumentumok
Programozási technológia 2.

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

JUnit.

Szűgyi Zalán. Unit tesztek Java és C++ környezetben

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Szoftvertechnológia 10. előadás. Verifikáció és validáció. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Modern unit és integrációs tesztelés

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Pénzügyi algoritmusok

Programozási nyelvek II. JAVA

Programozási nyelvek II. JAVA

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

BME MOGI Gépészeti informatika 4.

BME Irányítástechnika és Informatika Tanszék A programozás alapjai

Concurrency in Swing

A JUnit alapú egységteszteléshez felhasználandó annotációk leírásait az alábbi URL-en találja meg:

Programozási nyelvek Java

Java programozási nyelv 9. rész Kivételkezelés

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Java IX. telkezelés a Java-ban

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java IX. telkezelés a Java-ban

Objektumorientált programozás C# nyelven

C# osztályok. Krizsán Zoltán

Unit tesztelés. Honfi Dávid, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

és az instanceof operátor

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

OOP #14 (referencia-elv)

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C#, OOP. Osztályok tervezése C#-ban

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Szoftvertesztelés Alapok

Objektumorientált programozás C# nyelven

Programozási nyelvek Java

Segédanyag: Java alkalmazások gyakorlat

Adatbázisok webalkalmazásokban

Java és web programozás

1. Melyik szabvány foglalkozik dokumentumok tulajdonságainak megfogalmazásával? a. RDFS b. FOAF c. Dublin Core d. DBPedia

Bánsághi Anna

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Segédanyag: Java alkalmazások gyakorlat

Szoftvertechnológia alapjai Java előadások

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Objektumorientált programozás C# nyelven III.

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OOP és UML Áttekintés

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Segédanyag: Java alkalmazások gyakorlat

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

SZERVER OLDALI JAVASCRIPT. 12. hét Unit és integrációs tesztek, mocha, assert struktúrák, TDD / DBB

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Objektumorientált programozás C# nyelven

Java Programozás 11. Ea: MVC modell

Programozási nyelvek Java

Szoftvertechnológia alapjai Java előadások

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

OOP: Java 8.Gy: Abstract osztályok, interfészek

OO rendszerek jellemzői

Fejezetek az "Effective Java" c. könyvből

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Osztályok. 4. gyakorlat

Minőségmenedzsment és Informatika Test-Driven Development

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Tesztelés és profiling

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Web-technológia PHP-vel

Kivételkezelés a C++ nyelvben Bevezetés

Magas szintű programozási nyelvek 2 Előadás jegyzet

Eseményvezérelt alkalmazások fejlesztése II 4. előadás. Windows Forms alkalmazások architektúrája és tesztelése

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

4. gyakorlat: Teszttervezés és integráció

Programozás II. labor

Teszt terv Új funkció implementációja meglévı alkalmazásba

JAVA PROGRAMOZÁS 3.ELŐADÁS

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Szoftvertechnolo gia gyakorlat

Tervminták a valósidejű gyakorlatban

Mesterséges Intelligencia II. kötelező feladat (3. forduló) - Ajánló rendszer 2.

Interfészek. PPT 2007/2008 tavasz.

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Rendszermodellezés: házi feladat bemutatás

Átírás:

Unit test

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része. Unit tesztekkel ellenőrizhető, hogy egy unit az elvárásoknak megfelelően működik. Egy unit függvényeiről ellenőrizzük, hogy különböző bemetek esetén megfelelő eredményt, vagy hibát produkálnak. Az egységeket egymástól izoláltan kell tesztelni.

Előnyei A hibák sokkal korábban észlelhetőek. Minden komponens legalább egyszer tesztelt. Az egységek elkülönítése miatt a hibák helyének meghatározása könnyű. A funkciók könnyen módosíthatóak átalakíthatók. Dokumentációs szerep: példákat biztosít egyes funkciók használatára.

Elvek Gyors: A teszteknek gyorsan kell futnia, lassú teszteket senki nem futtatja gyakran, így a hibák nem derülnek ki idejében. Független: A teszteknek egymástól függetlennek és bármilyen sorrendben végrehajthatónak kell lennie. Megismételhető: A tesztkenke bármilyen környzetben, hálozat nélkül is végrehajthatónak kell lennie. A különöbző futtatások eredményének meg kell egyeznie. Ön ellenőrző: A tesztek eredménye egy boolean, futásuk vagy sikeres, vagy sikertelen. Automatikus: A tesztek automatikusan, interakció nélkül futnak.

Test Driven Development TDD Egy fejlesztési folyamat amelynek lépései: 1. Teszt eset készítése, amely definiálja a szükséges funkciót, annak bemenő adatait és az adatokra adandó választ. (a teszt kezdetben sikertelenül fut) 2. A funkció elkészítése a teszt sikeres futását elérő lehető legkevesebb kóddal. 3. Refactorálás: a kód megváltoztatása, szépítése, duplikátumok eltávolítása (clean code) 4. Tesztesetek készítése a funkció további lehetséges bemenetiehez. TDD rákényszerít a probléma alaposabb elemzését és az funkcióktól elvárt eredmény jobb megértését. A kód így mindig le lesz fedve tesztekkel

Mit kell tesztelni Egy osztály minden publikus metódusát tesztelni kell. Triviális esetek Speciális esetek: pl számok esetén: negatív, 0, pozitív, a megengetettnél kisebb, nagyobb, stb.. Pozitív/Negatív tesztesetek. Negatív teszteset szándékosan hibás paraméterekkel hívja a tesztelt metódust, célja a hibakezelés ellenőrzése. Végrehajtási lefedettség: a tesztekből indított hívásoknak a tesztelt metódus lehető legtöbb során végig kell haladnia. Egy teszt egyetlen dolog

Mit NEM kell tesztelni Dolgok, amik nyílvánvalóan működnek: pl.: külső lib-ek, JDK... Adatbázis. (feltételezhető, hogy ha elérhető, akkor helyesen működik) Triviális metódusok (getter/setterek) GUI a user interface nem tartalmazhat üzleti logikát

Junit (4.x) Junit egy unit teszt keretrendszer a Java nyelvhez. Annotációkkal konfigurálható. Elvárt eredmények ellenörzése Assert-ekkel.

Például public class MyTests { @Test public void multiplicationofzerointegersshouldreturnzero() { // MyClass is tested MyClass tester = new MyClass(); // assert statements assertequals("10 x 0 must be 0", 0, tester.multiply(10, 0)); assertequals("0 x 10 must be 0", 0, tester.multiply(0, 10)); assertequals("0 x 0 must be 0", 0, tester.multiply(0, 0));

Teszt osztály felépítése Annotation @Test public void method() @Test (expected = Exception.class) @Test(timeout=100) @Before or @After public void method() @BeforeClass or AfterClass public static void method() @Ignore or @Ignore("Why disabled") Result Teszt metódus jelölése A teszt sikertelen a megadott típusú kivétel hiányában A teszt sikertelen, ha a metódus mem fejeződik be adott idő alatt Metódus amely minden teszt előtt/ (után) lefut. Metódus egyszer fut le, az osztályban lévő első teszt metódus indulása előtt Adott teszt metódus kihagyása

Junit ellenőrzések Assert ek Statement fail(message) asserttrue([message,] boolean condition) or assertfalse assertequals([message,] expected, actual) assertnull([message,] obj) or NotNull assertsame([message,] expected, actual) or assertnotsame Description A hívó teszt sikertelen futását eredményezi Ellenörzi, hogy a megadott feltétel igaz (hamis) e. Ellenőrzi, hogy két objektum egyenlőe. Egy Objektum null (nem null). Ellenőrzi, hogy két változó ugyanarra az objektumra mutat (==).

Testing exception A @Test (expected = Exception.class) annotáció limitált, csak egyetlen kivételt tud tesztelni. Alternatíva: try { mustthrowexception(); fail(); catch (Exception e) { // expected

Például public class MyClass { public int multiply(int x, int y) { // the following is just an example if (x > 999) { throw new IllegalArgumentException("x>999"); return x / y; public class MyClassTest { @Test(expected = IllegalArgumentException.class) public void testexceptionisthrown() { MyClass tester = new MyClass(); tester.multiply(1000, 5); @Test public void testmultiply() { MyClass tester = new MyClass(); assertequals(50, tester.multiply(10, 5));

Mockolás A tesztelt metódusok általában más komponens nyújtotta szolgáltatásokat is használnak. Az egyes funkciókat más komponensektől izolációban kell tesztelnünk, a tesztek sikeressége nem függhet a függőségek helyes implementációjától. Mock egy olyan objektum, amely egy másik objektum működését szimulálja. Egy osztály függőségeinek szimulálására használandó. http://easymock.org/

Például public class RentalController { private ValidatorService validatorservice; public RentalController(ValidatorService validatorservice) { this.validatorservice = validatorservice; public void rent(member m, List<Book> books) { if(!validatorservice.allowedtorent(m, books.size()) { throw new ValidationException();... public interface ValidatorService { boolean validatorservice.allowedtorent(m, numberofbookstorent);

public class RentalControllerTest { private ValidatorService validatorservice; private RentalController controller; @Before public void setup() throws Exception { // NiceMocks return default values for unimplemented methods validatorservice = createnicemock(validatorservice.class); controller = new RentalController(validatorService); @Test(expected = ValidationException.class) public void testrentmorethanallowed(); Member m = new Member(); List<Books> = new ArrayList<>(); expect(validatorservice.allowedtorent(m, books)).andreturn(false).times(1); replay(validatorservice); controller.rent(m, books);