Hibakezelés és Tesztelés a Visual Studio.NET-ben Alapok Lázár András http://elbandi.web.elte.hu lazarandras@gmail.com
1. fejezet: Hibakezelési eszközök használata
Hibák fajtái Szintaktikai hibák Futási idejű hibák (Run-time errors) Elgépelt kulcsszavak Kihagyott elemek, írásjelek Hibás szerkezet feldolgozása Futási idejű hibák (Run-time errors) Nullával osztás Biztonsági kivételek Túlcsordulás Logikai hibák Nem a várt eredményt kapjuk
Hibák javításának lehetőségei Task List ablakban megjelennek a hibák (első két fajta) Dupla kattintással odaugrik a kód ablakban Töréspontok, lépésenkénti végrehajtás Debug menü és társai Start – F5 Hibakeresés nélküli indítás – Ctrl + F5 Lépésenkénti végrehajtás – F11 Új töréspont – Ctrl + B Kurzortól való futtatás – Jobb klikk/ Run To Cursor
Line breakpoints. Function breakpoints. File breakpoints. Töréspontok fajtái Line breakpoints. Function breakpoints. File breakpoints. Address breakpoints. Data breakpoints
Töréspontok tulajdonságai Breakpoint propertys Leállás feltételei Bizonyos „küszöbérték” esetén Ikszedik belépéskor (pl. ciklus esetében) Ablakok Töréspont ablak „Autos” ablak Változók értékeinek változtatása „Élő” változókat mutatja „Locals” ablak Lokális változók „Watch” ablak Változó hozzáadása, eltávolítása
Command Window ? i ? x*y ? Textbox1.text ? x=5 Egyszerűbb parancsokat futtathatunk a program futása közben ? i ? x*y ? Textbox1.text ? x=5
Egyéb lehetőségek Running Documents Call stack Threads Modules Memory Disassembly Registers
2. fejezet: Hibakeresési és Követési osztályok
Trace és Debug osztály használata Névtere: Syste.Diagnostic; Using System.Diagnostic; Trace kimenete Output window Saját naplófájlunk Debug kimenete Figyelmeztető üzenet
Eszközeik Metódusaik Trace.Write(„szöveg”); Trace.WriteLine(„szöveg”); Debug.WriteIf(feltétel, „szöveg”); Debug.riteLineIf(feltétel, „szöveg”); Trace.Assert(feltétel, „szöveg”); Mind output windowba, mind figyelmeztető üzenetet küld Debug.Fail(„szöveg”); Ha a program ehhez a sorhoz ér, figyelmeztető üzenetet küld
Trace üzenetek naplózása: System.IO.FileStream naplo = new System.IO.FileStream("C:\\naplom.txt",System.IO.FileMode.OpenOrCreate); TextWriterTraceListener sajat = new TextWriterTraceListener(naplo); Trace.Listeners.Add(sajat); naplom.txt tárolja a trace üzeneteket Eseménynaplózás: EventLog myLog = new EventLog("Debug Log");
További lehetőségek Trace.Flush(); Trace.AutoFlush = False/True; Trace Swichek TraceLevel.Off TraceLevel.Error TraceLevel.Warning TraceLevel.Info TraceLevel.Verbose
3. fejezet: Tesztelési terv készítése
Tesztelési tervek Egy függvény első futtatása előtt érdemes írni figyelmeztető üzeneteket, amikről futás közben megtudjuk, hol jár és milyen értékekkel zajlik a végrehajtás public void TestMethod(bool X, bool Y) { if (X == true) MessageBox.Show("X igaz"); else MessageBox.Show("X hamis"); if (Y == true)MessageBox.Show("Y igaz"); else MessageBox.Show("Y hamis"); }
Tesztelések fajtái Adat tesztelés Határ tesztelés(Küszöb feltételek) Normál határon belüli és kívüli adatok lekezelése Határ tesztelés(Küszöb feltételek) Határon lévő adat közvetlen környezetének tesztelése Pl: maximumnál a max+1-el Rossz adatok tesztje Ki lehet próbálni, mindenféle, a típuson kívül eső értékkel az alkalmazást Adat kombinációk Két adat küszöbérték alatt van, lehet, hogy egy művelet után átlépődik a küszöb
4. fejezet Kivételek kezelése és készítése
Kivételkezelés Try blokk Catch blokk Finally blokk Egy utasítás-sorozatot Try blokkba teszünk, ha szeretnénk saját magunk kezébe venni az esetleges hiba kijavítását Catch blokk Bizonyos hibafajtákat saját magunk tudunk lekezelni… Finally blokk …A többit a finally blokk végzi
Példa Try { Int a=Convert.Toint(szoveg); } catch (System.ArgumentNullException e) { Console.WriteLine(„Hiba a konvertálásnál!” )} Finally {Console.WriteLine(„Valami hiba jött elő!” )}
Kivétel dobása Throw Egy kivétel szándékos generálása throw; throw e; throw new NullReferenceException("Widget A is not set", e);
Köszönöm a figyelmet! Forrás: Microsoft: Windows alkalmazás készítése .Net rendszerben