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

Hasonló dokumentumok
Számítógépes döntéstámogatás. Genetikus algoritmusok

Dr. habil. Maróti György

értékel függvény: rátermettségi függvény (tness function)

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

Intelligens Rendszerek Elmélete. Párhuzamos keresés genetikus algoritmusokkal

Operációs rendszerek Folyamatok 1.1

MŰSZAKKIOSZTÁSI PROBLÉMÁK A KÖZÖSSÉGI KÖZLEKEDÉSBEN

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Algoritmusok Tervezése. 9. Előadás Genetikus Algoritmusok Dr. Bécsi Tamás

Megkülönböztetett kiszolgáló routerek az

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

Podoski Péter és Zabb László

EGYÜTTMŰKÖDŐ ÉS VERSENGŐ ERŐFORRÁSOK SZERVEZÉSÉT TÁMOGATÓ ÁGENS RENDSZER KIDOLGOZÁSA

Verifikáció és validáció Általános bevezető

értékel függvény: rátermettségi függvény (tness function)

Mesterséges intelligencia alapú regressziós tesztelés

Mesterséges Intelligencia MI

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Miskolci Egyetem Általános Informatikai Tanszék

A tesztelés feladata. Verifikáció

I.3 ELOSZTOTT FOLYAMATSZINTÉZIS BERTÓK BOTOND. Témavezetői beszámoló

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Intelligens Rendszerek Elmélete. Párhuzamos keresés genetikus algoritmusokkal. A genetikus algoritmus működése. Az élet információ tárolói

Hatékonyság 1. előadás

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Számítógép és programozás 2

Szoftverminőségbiztosítás

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Az optimális megoldást adó algoritmusok

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK TESZTELÉSI TECHNIKÁK KIVÁLASZTÁSA

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Programrendszerek tanúsítása szoftverminőség mérése

Algoritmizálás, adatmodellezés tanítása 6. előadás

Véletlenszám generátorok és tesztelésük HORVÁTH BÁLINT

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

A félév során előkerülő témakörök

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

Modellek ellenőrzése és tesztelése

2018, Diszkrét matematika

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

[Biomatematika 2] Orvosi biometria

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

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

Processzusok (Processes), Szálak (Threads), Kommunikáció (IPC, Inter-Process Communication)

Szoftverminőségbiztosítás

HÁLÓZATSZERŰEN MŰKÖDŐ LOGISZTIKÁVAL INTEGRÁLT TERMELÉSÜTEMEZÉS MEGOLDÁSA GENETIKUS ALGORITMUS ALKALMAZÁSÁVAL. OLÁH Béla

Az értékelés során következtetést fogalmazhatunk meg a

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

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

[Biomatematika 2] Orvosi biometria

Mesterséges Intelligencia MI

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Biztonságos internetet na de hogyan?

A Feldspar fordító, illetve Feldspar programok tesztelése

Biomatematika 2 Orvosi biometria

Modell alapú tesztelés mobil környezetben

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)

Szoftverminőségbiztosítás

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

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

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

Távolléti díj kezelése a Novitax programban

Fogalomtár Etikus hackelés tárgyban Azonosító: S2_Fogalomtar_v1 Silent Signal Kft. Web:

INFORMATIKA javítókulcs 2016

Amortizációs költségelemzés

Felvételi tematika INFORMATIKA

RSA algoritmus. P(M) = M e mod n. S(C) = C d mod n. A helyesség igazoláshoz szükséges számelméleti háttér. a φ(n) = 1 mod n, a (a 1,a 2,...

- Adat, információ, tudás definíciói, összefüggéseik reprezentációtípusok Részletesebben a téma az AI alapjai című tárgyban

Az Informatika Elméleti Alapjai

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

Intervenciós röntgen berendezés teljesítményszabályozójának automatizált tesztelése

Termelő-fogyaszt. fogyasztó modell

Searching in an Unsorted Database

Biostatisztika VIII. Mátyus László. 19 October

2018, Diszkre t matematika. 10. elo ada s

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

TERC V.I.P. hardverkulcs regisztráció

Teszt generálás webes alkalmazásokhoz

Kettőnél több csoport vizsgálata. Makara B. Gábor

(kernel3d vizualizáció: kernel245_graph.mpg)

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Automatikus tesztgenerálás modell ellenőrző segítségével

Miskolci Egyetem Gépészmérnöki és Informatikai Kar Informatikai Intézet Alkalmazott Informatikai Intézeti Tanszék

Specifikáció alapú teszttervezési módszerek

Matematikai alapok és valószínőségszámítás. Valószínőségi eloszlások Binomiális eloszlás

7. Régió alapú szegmentálás

Specifikáció alapú teszttervezési módszerek

30 MB INFORMATIKAI PROJEKTELLENŐR

STATISZTIKA. A maradék független a kezelés és blokk hatástól. Maradékok leíró statisztikája. 4. A modell érvényességének ellenőrzése

Modell alapú tesztelés: célok és lehetőségek

Kockázatalapú fenntartás-tervezés Fuzzy logika alkalmazásával. ELMŰ Hálózat Bálint Zsolt 2017/11/20

Közösség detektálás gráfokban

Véletlenszám generátorok és tesztelésük. Tossenberger Tamás

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

A genetikus algoritmus, mint a részletes modell többszempontú és többérdekű "optimálásának" általános és robosztus módszere

Hasonlósági keresés molekulagráfokon: legnagyobb közös részgráf keresése

Átírás:

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

Osztott alkalmazások Automatikus tesztelés Tesztelés heurisztikus zaj keltés Tesztelés genetikus algoritmus Tesztelés jelölések Tesztelés alkalmassági függvény Tesztelés genetikus keresés Tesztelés következtetések Források Tartalom

Osztott alkalmazások A több szálas adatfeldolgozás illetve a hálózatok fejlődése és az internet elterjedése miatt már lépten-nyomon találkozunk velük: Szerver technológiák Osztott adatbázis Hálózati játékok Osztott (párhuzamosan szerkeszthető) dokumentumok Stb. stb. stb.

Osztott alkalmazások A folyamatok, futási szálak ütemezése egy nem determinisztikus program futást eredményez, ami konkurencia problémákhoz vezethet, ezek vizsgálata fontos. Adott programok esetén az összes lehetséges ütemezés vizsgálata túl költséges és fölösleges, mivel csak néhány esetben léphet fel holtpont vagy verseny az erőforrásokért.

Automatikus tesztelés Egyszerű tesztelés: sokszor futtassunk le egy tesztet az osztott alkalmazásra. Probléma: a JVM ütemező többnyire determinisztikusan viselkedik, ezért sok eset kimarad. Nehéz a hiba pillanatának az állapotát reprodukálni (mikor, hogyan vált az ütemező? ). Megoldás: A teszthez generáljunk zajos kódot, vagyis helyezzünk el a kritikus pontokba szál / folyamat váltást kényszerítő elemeket. ( pl. yield(), wait(), sleep(), suspend() )

Tesztelés heurisztikus zaj keltés Ilyen zaj műveleteket helyezünk el a kód néhány olyan része elé vagy után, amelyek osztott műveleteket végeznek. Néhány lehetséges elhelyezés nem befolyásolja a hibák előfordulását, illetve lehet, hogy éppen nem is futtatható. Ezért az összes ilyen hely kiválasztása, illetve a megfelelő típusú zaj meghatározása, a-priori nagyon bonyolult. A gyakorlatban ezt véletlenített algoritmusok végzik.

Tesztelés heurisztikus zaj keltés Esemény valamilyen típusú szál váltást kényszerítő művelet beékelése a programba Jó esemény növeli az osztott hibák előfordulásának a valószínűségét Rossz esemény csökkenti egy osztott hiba előfordulásának a valószínűségét Semleges esemény nem befolyásolja a hibák előfordulását

Tesztelés heurisztikus zaj keltés Példa: Szál1 Szál2 (1) If ( x!= 0 ) { (3) x = 1; (2) y = 1 / x; (4) x = 0; } (5) z = 8; Az (1) és (3) események jók, mert növelik a nullával való osztás valószínűségét. Ha az első szálba if ( x == 0) -t írunk, az (1) rossz eseménnyé válik.

Tesztelés genetikus algoritmus Az egyszerű véletlenített algoritmusok viszonylag kis szignifikanciával állapítják meg az egyes hibák előfordulásának a valószínűségét és néhány eset még így is kimarad. Ennek a javítására, a feladatot keresési feladatként is felfoghatjuk és ekkor egy genetikus algoritmust alkalmazunk a legjobb tesztesetek előállítására.

Tesztelés genetikus algoritmus Genetikus algoritmus: Adott egy populáció itt a tesztesetek (a zaj egy-egy lehetséges elosztása) egy véletlenszerűen előállított halmaza. A halmaz elemei jelképezik a kromoszómákat. Egy tesztesethez egy megfelelőségi függvényt, heurisztikát rendelünk: mennyire szolgálja az adott eset az elérni kívánt célokat.

Tesztelés genetikus algoritmus A fejlődés során a legjobb egyedek fennmaradnak és új, mutációkat szenvedett egyedek jelennek meg, a legéletképtelenebbek elpusztulnak illetve az örökítőanyagok keveredésével szaporodnak az életben maradt egyedek.

Tesztelés genetikus algoritmus Az algoritmus céljai: (1) növeljük a valószínűségét annak, hogy egy hiba minden generált teszt eset futtatásánál előfordul (2) minél több információt adjunk a felhasználónak a hibákról

Tesztelés jelölések Legyen P a jáva programok halmaza, ahol minden p P egy teszt eset. Minden p-re definiáljuk a következő halmazokat: ν - a program változói S V - értékpárok, a változók halmazára a programban, a hozzáférés előtti és utáni értékkel L program részletek halmaza, értékpárokkal végrehajtás előtti és utáni hely

Tesztelés jelölések H a felhasználható esemény típusok ( pl. yield(), wait() ) N- a lehetséges zaj erősségek (pl. N = {0..100}) S L =L x H x N S V =ν x H x N S S = S V x H x N Legyen C a három S halmaz diszjunkt úniója. Ekkor C a lehetséges tesztesetek halmaza lesz (az összes esemény elhelyezéseinek a módjai).

Tesztelés jelölések Legyen C i t az i. konfiguráció végrehajtásainak (a teszteset futtatásának) száma t lépés után. Röviden jelöljük C i -vel. Legyen f b C i a b. hiba megjelenéseinek a száma t. végrehajtás után. N i, j Legyen vonatkozó N. C i, j az i. konfiguráció j. eseményére Legyen az i, konfiguráció j. eseményének a bekövetkezéseinek a száma.

Tesztelés alkalmassági függvény Alkalmassági függvény: (1) C i méret= N i, j elemméret C i, j j=1 elemméret minden j-hez egy tetszőleges, előre adott értéket rendel méret az alkalmazott zaj erősségek súlyozott összege C (2) i N i, j N i, j entrópia= j=1 méret C i log méret C i entrópia a zaj eloszlása

Tesztelés alkalmassági függvény Alkalmassági függvény: (3) a méret és az entrópia közötti összefüggés (4) f s =méret C i 1 entrópia C i f p = f b C i C i t log C i t hibák előfordulásának a valószínűsége

Tesztelés genetikus keresés 1. Véletlenszerűen előállítunk néhány teszt esetet 2. A fenti halmaz egy generáció,amely programjait egy előre megadott szám-szor futtatjuk. 3. A megfelelőség függvény alapján rendezzük a kromoszómákat. 4. A legjobbakat megtartjuk, a leggyengébbeket töröljük. Új genetikus információt hozunk be, véletlenszerűen előállított kromoszómákkal, illetve néhány életben maradt kromoszómát párosítunk, ezzel mutációkat hozva létre. 5. Előre megadott számú generációt állítunk elő.

Tesztelés következtetések Futás közben érdemes figyelni: Minden generáció legjobb kromoszómáját. Generációnként a kromoszómák megfelelőség átlagát. Átlagosan hány kromoszóma maradt változatlanul az egymásutáni generációkban. A kromoszómák életkorát. Az algoritmus a gyakorlatban az olyan populáció előállítása felé konvergál, amelynek a kromoszómái, tesztesetei csak, a hibás részeket jelölik.

Források [1] Concurrent Java Test Generation as a Search Problem -Yaniv Eytani www.elsevier.nl/locate/entcs,, cs.haifa.ac.il/ ieytani/ [2] Heuristics For Finding Concurrent Bugs Yaniv Eytani, Eitan Farchi, Yosi Ben-Asher - Workshop on Parallel and Distributed Testing and Debugging, Nice, 2003 [3] Yaniv Eytani, and Shmuel Ur, Compiling a Benchmark of Documented Multi-threaded Bugs, Workshop on Parallel and Distributed Testing and Debugging, Santa Fe, 2004 [4] Multithreaded unit testing with ConTest Yarden Nir- BuchBinder, Shmuel Ur 2006 Apr 04. [5] Operating systems William Stallings, Prentice hall Fourth edition; Part Two, Part Four [6] JavaBy Example - Clayton Walnum, Que Corporation, Macmillan Computer Publishing