1 / 31

Programozási alapismeretek 9. előadás

Programozási alapismeretek 9. előadás. Tesztelés – elvek + módszerek Futtatás adatfájllal – C++ Hibakeresés Hibajavítás Dokumentálás + szövegszerkesztési minimum Programkészítési elvek. Tartalom. Tesztelés. Tesztelési fogalmak, elvek: 1. Teszteset = bemenet + kimenet

palti
Download Presentation

Programozási alapismeretek 9. előadás

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programozási alapismeretek 9. előadás

  2. Tesztelés – elvek + módszerek Futtatás adatfájllal – C++ Hibakeresés Hibajavítás Dokumentálás + szövegszerkesztési minimum Programkészítési elvek Tartalom Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  3. Tesztelés Tesztelési fogalmak, elvek: 1. Teszteset = bemenet + kimenet 2. Ideális próba: minden hibát kimutat Megbízható próba: nagy valószínűséggel min-den hibát kimutat 3. Jó teszteset: nagy valószínűséggel felfedetlen hibát mutat ki 4. Rossz a meg nem ismételhető teszteset 5. Érvényes és érvénytelen adatokra is kell 6. Minden teszteset maximális kihasználása 7. Csak más tudja jól tesztelni a programot Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  4. Tesztelés Tesztelési módszerek: Statikus tesztelés: a programszöveget vizs-gáljuk, a program futtatása nélkül. Dinamikus tesztelés: a programot futtatjuk különböző bemenetekkel és a kapott eredményeket vizsgáljuk. A tesztelés eredménye: hibajelenséget találtunk; nem találtunk –még– hibát. Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  5. Statikus tesztelés Kódellenőrzés: algoritmus-kód megfeleltetés algoritmus+kód elmagyarázása másnak Szintaktikus ellenőrzés: fordítóprogram vagy értelmező esetén futtatással Szemantikus ellenőrzés, ellentmondás-keresés: inicializálatlan változó, érték nélküli fv. felhasználatlan érték ( i=1;for(i=2;… ) vagy változó önmagának értékadás ( i=1*i+0) Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  6. Statikus tesztelés Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): azonosan igaz elágazás-feltétel( i>1 || i<100 ) végtelen számlálós ciklus(i=1..100 ciklusmagban i=1 tán az i+=1 helyett) végtelen feltételes ciklus (i<N feltételű ciklusban sem i, sem N nem vagy „szin-kronban” változik) konstans értékű, változókat tartalmazó kifejezés ( y=tan(x)–sin(x)/cos(x)) Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  7. Dinamikus tesztelés Tesztelési módszerek: Fekete doboz módszerek (nincs kimerítő beme-net – nem lehet minden lehetséges bemenet-re kipróbálni): a teszteseteket a program spe-cifikációja alapjánválasztjuk. Fehér doboz módszerek (nincs kimerítő út– nem lehet minden végrehajtási sorrendre kipróbálni): a teszteseteket a program struk-túrája alapján választjuk. Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  8. Dinamikus tesztelés:fekete doboz módszerek Ekvivalencia-osztályok módszere: a bemeneteket (vagy a kimeneteket) soroljuk olyan osztályokba, amelyekre a program vár-hatóan egyformán működik; ezután osztá-lyonként egy tesztesetet válasszunk! Határeset elemzés módszere: az ek-vivalencia-osztályok határáról válasszunk tesztesetet! Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  9. Dinamikus tesztelés:fekete doboz módszerek Feladat:Egy N természetes szám valódi (1-től és önmagától különböző) osztója… Ekvivalencia osztályok (bemenet alapján): N prímszám N-nek egyetlen valódi osztója van N-nek több, különböző valódi osztója is van N páros N nem természetes szám Érvényes adatokra Érvénytelen adatokra Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  10. Dinamikus tesztelés:fehér doboz módszerek Kipróbálási stratégiák: utasítás lefedés: minden utasítást legalább egy-szer hajtsunk végre! feltétel lefedés: minden feltétel legyen legalább egyszer igaz, illetve hamis! részfeltétel lefedés: minden részfeltétel legyen legalább egyszer igaz, illetve hamis! Tesztadat-generálás: automatikus tesztbemenet-előállítás Ezekhez továbbiakat talál itt: http://people.inf.elte.hu/szlavi/PrM1felev/Pdf/PrTea7.pdf1.3.2. fejezetében Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  11. Speciális tesztelések Funkcióteszt: tud minden funkciót? Stressz-teszt: gyorsan jönnek a feldol-gozandók, ... Volumen-teszt: sok adat sem zavarja Biztonsági teszt: ellenőrzések vannak? Hatékonysági teszt Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  12. Futtatás adatfájllal(C++) • Elv: • A standard input/output átirányítható fájlba. Ekkor a program fájlt használ az inputhoz és az outputhoz. Következmény: szerkezetileg a kon-zol inputtal/outputtal megegyező kell legyen / lesz a megfelelő fájl. • „Technika”: • A lefordított kód mögé kell paraméterként írni a megfelelő fájlok nevét. • prog.exe <inputfájl >outputfájl • Nyereség: • Kényelmes és adminisztrálható tesztelés. Figyelem! Ha van outputfájl, akkor a kérdés szövege is abban „jelenik meg”. prog.exe >>outputfájl outputfájlhoz írás! Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  13. Futtatás adatfájllal(C++) • Demo: • Készítsen néhány bemeneti adatot tartalmazó fájlt (a konzol inputnak megfelelő szerkezetben) • Futtassa ezekkel az előbb elmondottak szerint: • prog.exe <1.be >1.ki • prog.exe <2.be >2.ki • … • Ellenőrizze a kimeneti fájlok tartalmát: olyan-e, amilyennek várta-e • Megjegyzés: tovább egyszerűsítheti a tesztelést, ha egy batch állománnyal automatizálja a 2.-t! • Valahogy így: próba… Kód jegyzet-ként Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  14. Hibakeresés Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibajelenségek a tesztelés során… hibás az eredmény, futási hiba keletkezett, nincs eredmény, részleges eredményt kaptunk, olyat is kiír, amit nem vártunk, túl sokat (sokszor) ír, nem áll le a program, …

  15. Hibakeresés Szlávi-Zsakó: Programozási alapismeretek 9. előadás Célja: a felfedett hibajelenség okának megtalálása. Elvek: Eszközök használata előtt alapos végiggondolás. Egy megtalált hiba a program más részeiben is okozhat hibát. A hibák száma, súlyossága a program méretével nemlineárisan (annál gyorsabban!) nő. Egyformán fontos, hogy miért nemcsinálja a prog-ram, amit várunk, illetve, hogy miért csinál olyat, amit nemvárunk. Csak akkor javítani, hamegtaláltuk a hibát.

  16. Hibakeresés Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibakeresési eszközök: Memória-, változó-kiírás (feltételes fordítás) Nyomkövetés (hibától visszafelé is) Adat-nyomkövetés Állapot-nyomkövetés(pl. paraméterekre vonat-kozó előfeltételek, ciklus-invariánsok) Töréspont elhelyezése Lépésenkénti végrehajtás A hiba helyének és okának kijelzése Speciális ellenőrzések (pl. indexhatár)

  17. Hibakeresési módszerek hibásak nem hibásak Szlávi-Zsakó: Programozási alapismeretek 9. előadás Célja: A bemenetnekmely része, amire hibásan működik a program? Hol található a programban a hibát okozó utasítás? Módszerfajták: 1. Indukciós módszer (hibásak körének bővítése) 2. Dedukciós módszer (hibásak körének szűkítése) 3. Hibakeresés hibától visszafelé 4. Teszteléssel segített hibakeresés (olyan teszteset kell, amely az ismert hiba helyét fedi fel)

  18. Hibakeresési módszerekPélda az indukciós módszerre: hibásak Szlávi-Zsakó: Programozási alapismeretek 9. előadás Feladat: 1 és 99 közötti N szám kiírása betűkkel Tesztesetek: N=8  jó, N=17  jó, N=30  hibás Próbáljunk a hibásakból általánosítani: tegyük fel, hogy minden 30-cal kezdődőre rossz! Ha beláttuk (teszteléssel), akkor próbáljuk tovább általánosítani, pl. tegyük fel, hogy minden 30 felettire rossz! Ha nem tudjuk tovább általánosítani, akkor tudjuk mit kell keresni a hibás programban. Ha nem ment az általánosítás, próbáljuk más-képp: hibás-e minden 0-ra végződő számra! …

  19. Hibakeresési módszerekPélda a dedukciós módszerre: nem hibásak Szlávi-Zsakó: Programozási alapismeretek 9. előadás Feladat: 1 és 99 közötti N szám kiírása betűkkel Tesztesetek: N=8  jó, N=17  jó, N=30  hibás Tegyük fel, hogy minden nem jóra hibás! Próbáljunk a hibás esetek alapján szűkíteni: tegyük fel, hogy a 20-nál kisebbekre jó! Ha beláttuk (teszteléssel), akkor szűkítsünk tovább, jó-e minden 40-nél többre? Ha nem szűkíthető tovább, akkor megtalál-tuk, mit kell keresni a hibás programunkban. Ha nem, szűkítsünk másképp: tegyük fel, hogy jó minden nem 0-ra végződő számra! …

  20. Hibajavítás Szlávi-Zsakó: Programozási alapismeretek 9. előadás Célja: a megtalált hiba kijavítása. Elvek: A hiba kijavítása a program más részében hibát okozhat (rosszul javítunk, illetve korábban elfedett más hibát). A hibát kell javítani és nem a tüneteit. Javítás után a tesztelésmegismételendő! A jó javítás valószínűsége a program méretével fordítva arányos. A hibajavítás a tervezési fázisba is visszanyúlhat (a módszertan célja: lehetőleg ne nyúljon vissza).

  21. Dokumentációk Fajtái: Felhasználói dokumentáció Fejlesztői dokumentáció Programismertető … Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  22. Felhasználói dokumentáció Tartalma: feladat (összefoglaló és részletes is) környezetleírás használat leírása (telepítés, kérdések + lehet-séges válaszok,...) bemenő adatok, eredmények, szolgáltatások mintaalkalmazások – példafutások hibaüzenetek és a hibák lehetséges okai Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  23. Fejlesztői dokumentáció Tartalma: specifikáció, követelményanalízis környezetleírás Adatleírás (feladatparaméterek reprezentálá-sa) algoritmusok leírása, döntések, más alternatí-vák, érvek, magyarázatok kód, implementációs szabványok, döntések tesztesetek hatékonysági mérések fejlesztési lehetőségek Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  24. Szövegszerkesztési isme-retek a dokumentációhoz Karakterformázás (szöveg, program) Bekezdésformázás Tabulátorok Képbeillesztés Oldalformázás Táblázatok (struktogram, tesztek) Egyenletszerkesztő Szlávi-Zsakó: Programozási alapismeretek 9. előadás

  25. Programkészítési elvek Szlávi-Zsakó: Programozási alapismeretek 9. előadás Stratégiai elv: a problémamegoldás logikája – a lépésenkénti finomítás. Taktikai elvek: az algoritmuskészítés gondolati elvei a felülről lefelé kifej-téshez. Technológiai elvek: algoritmus és kód módszertani kívánalmai. Technikai elvek: kódolási technika. Esztétikai, ergonómiai elvek: ember-közelség.

  26. Stratégiai elv:lépésenkénti finomítás Nem alternatívák! Nem alternatívák! Szlávi-Zsakó: Programozási alapismeretek 9. előadás Felülről–lefelé (top–down) = probléma–dekomponálás, –analizálás. Alulról–felfelé (bottom–up) = probléma–szintézis.

  27. Taktikai elvek Szlávi-Zsakó: Programozási alapismeretek 9. előadás Párhuzamos finomítás Döntések elhalasztása Döntések nyilvántartása Vissza az ősökhöz Nyílt rendszer felépítés (általánosítás) Párhuzamos ágak függetlensége Szintenkénti teljes kifejtés Adatok elszigetelése

  28. Technológiai elvek Szlávi-Zsakó: Programozási alapismeretek 9. előadás Struktúrák zárójelezése Bekezdéses struktúrák Kevés algoritmusleíró szabály Értelmes sorokra tördelés Beszédes azonosítók, kifejező névkon-venciók (pl. Hungarian Notation)

  29. Technikai elvek Szlávi-Zsakó: Programozási alapismeretek 9. előadás Barátságosság Biztonságosság Jól olvashatóság

  30. Esztétikai/ergonómiai elvek Szlávi-Zsakó: Programozási alapismeretek 9. előadás Lapokra tagolás, kiemelés, elkülönítés Menütechnika Ikontechnika, választás egérrel Következetesség (beolvasás, kiírás, ...) Hibafigyelés, hibajelzés, javíthatóság Súgó, tájékoztató Ablakkezelés Értelmezési tartomány kijelzése Naplózás

  31. Programozási alapismeretek9. előadás vége

More Related