MÓDSZER PARK
1 MÓDSZERPARK A mutánsok szabadon vannak, vagy ki teszteli a tesztjeimet?

2 Benjamin Klüglein vezető szoftvermérnök, Dipl. Inf. (FH)
Mai témánk Mutációs tesztelés 4
6 Nincs új ötlet: Richard Lipton javaslata 1971 DeMillo, Lipton és Sayward kiadói kiadvány, IEEE Computer, 11 (4): Április: Az egyszerű hibákat feltáró program tesztjei sok esetben hatékonyak a sokkal összetettebb hibák feltárásában is. Ezt az úgynevezett kapcsolási hatást lehet felhasználni a munka megtakarítására a tesztelés során, az IBM bemutatja az első hordozható számítógépet (IBM 5100). 1976 Az Apple piacra dobja az Apple I-t => izgalmas idők, kezelhető számítási teljesítmény 6
7 Szórakoztató tények Az X-Men 1963-ban jelenik meg először, de csak kb. Sikeres. Az előadó csak 1982 óta létezik. Amint látni fogjuk, a témánknak is kellett egy kis próbálkozás 7
8 Miért érdemes tesztelni? Hogy miért írok/írok teszteket, jól éreztem magam tőle. Andreas Möller A minőség biztosításának jó érzése Mit akarok valójában megvalósítani? Jobb tervezési/API-előírások, mint például az IEC (orvostechnikai eszközök szoftvere) Tesztelést igényel az egység tesztelésének, integrálásának és rendszerének minden szintjén 8
9 Csak a tesztek írásában való szórakozás tartható korlátok között Időigényes, bonyolult, a tesztek saját vadállatok lehetnek Saját elképzeléseinek és struktúráinak bemutatása Néha hiányzik az ismeretek A tesztek új terület mindannyiunk számára Egyáltalán nem tesztelhetjük a kódunkat kezelve Még át is olvasták a kódellenőrzésekben 9
10 válasz megtalálása Mennyire jók az egység tesztjeim? Mennyire jó a teszt lefedettségem? Mely tesztek hiányozhatnak? 10.
11 Mire van szükségem a mutáció teszteléséhez? A kódot mutánsok adják meg. Az eljárás elején zöldnek kell lennie. Szokás szerint;-) 11
12 lépés a mutáns vadászaton keresztül 1. Mutánsok (hibák) keletkeznek 2. Az UT-ket minden mutánsra elvégezzük 1. Ha egy teszt piros, akkor a mutánt megölték 2. Ha senki sem billen át, akkor a mutáns túlélte 12.
13 MT a hagyományos teszt lefedettségével szemben A teszt lefedettsége csak azt hajtja végre, hogy mely kódot hajtották végre, de azt nem, hogy a tesztek képesek-e hibákat is találni. Mivel valójában képes észlelni, hogy minden egyes állítást értelmesen teszteltek-e, a mutációs teszt az arany standard, amelyhez képest minden más típusú lefedettséget mérnek. pitest.org 13
14 Automatikusan átkapcsolható különböző mutáns osztályokra Feltételek Határmutató növekmények Mutátor Invert Negatívok Mutátor Matematikai Mutátor Negatív Feltételek Mutátor Visszatérési Értékek Mutátor Void Módszer Hívások Mutátor Konstruktor Hívások Mutátor Inline Állandó Mutátor Nem Érvénytelen Módszer Hívások Mutátor Feltételek Mutátor Kísérleti Tag Változó Mutátor Kísérleti Mutátor 14
15 Mutátorok Feltételek Határmutató Eredeti változás> => => Növeli a Mutátor Eredeti Váltását Invert Negatív Mutátort Eredeti nyilvános lebegő negátum (végső úszó i) < return -i; >Nyilvános úszó tagadás módosítása (i. Végső úszó) < return i; >15-én
16 Mutátor II Matematikai Mutátor Eredeti Változás *// *% * & & ^ &> >> >> 17 Mutátor III Visszatérési Mutátor Eredeti Logikai Int, byte, rövid Long X + 1 Float, double Objects Void módszer Hívás Mutator Eredeti nyilvános int foo () < int i = 5; dosomething(i); return i; >Igaz vagy hamis 1 vagy 0 módosítása, ellentétben az eredetivel - (x + 1,0) Null vagy RuntimeException a null érték változtatásához public int foo () < int i = 5; return i; >17-én
18 Hogyan működik mindez? A Pitest technológiától függően: Változások történnek a bájtkód sorszámain és a szükséges forrásfájlnéven. Mutate.py (szkript a C kódmutációkhoz): Módosított.c fájlt generál 18
19 Kihívások Energiaigényes Egyáltalán csak a legújabb számítási teljesítmény mellett használható. Egység tesztek futási ideje min 53 s min 39 s MT tesztek futási ideje min 44 s 19
20 kihívás - időzítés ==========================================> osztályút keresése: 1 másodperc> lefedettség és függőség elemzés: 2 perc és 33 másodperc> mutációs tesztek összeállítása: 1 másodperc> mutációs elemzés futtatása: 5 perc és 7 másodperc> Összesen: 7 perc és 44 másodperc =============== ============================ ======================== =============== - Statisztika ================================== ======== ========================================= >> Generált 5336 mutáció ölve 3034 (57%) >> Ran 9923 teszt (1,86 teszt mutációnként) 20
21 Kihívások II. Hamis pozitív eredmények Különböző minőségű nyelvtámogatás. A jelenlegi projektben nehezen használható: JavaScript-átültetés 21
22 Lehetséges megoldások Több energia (CPU, szálak) Csak bizonyos időpontokban használható Csak bizonyos tesztekre korlátozódik Csak bizonyos mutátorokat aktiválhat PIT: Inkrementális elemzés Optimalizálási kísérlet a változásokra vonatkozó feltételezésekkel 22
25 Vége Köszönöm a figyelmet. Ha kérdése van: 25