Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/362014. 07. 14.2014. 07. 14.2014. 07. 14.

Hasonló előadás


Az előadások a következő témára: "Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/362014. 07. 14.2014. 07. 14.2014. 07. 14."— Előadás másolata:

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

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

3 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Tesztelés Tesztelési fogalmak:  Teszteset = bemenet + kimenet  Próba = teszteset-halmaz  Jó teszteset: nagy valószínűséggel felfedetlen hibát mutat ki  Ideális próba: minden hibát kimutat  Megbízható próba: nagy valószínűséggel min- den hibát kimutat A „hiba” helyett jobb lenne „problémát” mondani, mivel a tesztelés nemcsak a hibakeresés, hanem a hatékonyságvizsgálat eszköze is. 3/36

4 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Tesztelés Tesztelési elvek:  Érvényes ( megengedett ) és érvénytelen ( hibás ) bemenetre is kell tesztelni.  Rossz a meg nem ismételhető (  nem adminisztrált ) teszteset.  Minden teszteset által nyújtott információt maximálisan ki kell használni ( a következő tesztesetek kiválasztásánál ).  Csak más ( mint a szerző ) tudja jól tesztelni a programot. 4/36

5 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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 ered- ményeket vizsgáljuk. A tesztelés eredménye:  hibajelenséget találtunk;  nem találtunk –még– hibát. 5/36

6 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Statikus tesztelés  Kódellenőrzés: o algoritmus  kód megfeleltetés o algoritmus+kód elmagyarázása másnak  Szintaktikus ellenőrzés: o fordítóprogram esetén automatikus, értelmező esetén – esetleg – sok futtatással  Szemantikus ellenőrzés, ellentmondás- keresés: o felhasználatlan érték ( i=1;for(i=2;… ) vagy változó o önmagának értékadás ( i=1*i+0 ) 6/36

7 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Statikus tesztelés  Szemantikus ellenőrzés, ellentmondás- keresés ( folytatás ) : o inicializálatlan változó i=1; while (i<=n) … (  for (i=1;i<=n;…)… ) 7/36 „Rafináltan inicializált” változó: int n; ← globális n … int fv() { for (int n=0;n<9;++n) ← lokális n { … n … ; ← lokális n felhasználása } return …n…; ← globális n-et tartalmazó formula }

8 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Statikus tesztelés  Szemantikus ellenőrzés, ellentmondás- keresés ( folytatás ) : o érték nélküli fv. 8/36 Szintaktikusan hibás C++-ban : int fv() { … return; ← … error: return-statement with no value, in function returning 'int'| } … de ez csak figyelmeztetést vált ki: int fv() { … } ← … warning: control reaches end of non-void function|

9 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Statikus tesztelés  Szemantikus ellenőrzés, ellentmondás- keresés (folytatás) : o azonosan igaz/hamis feltétel ( i>1 || i maxN ) o végtelen számlálós ciklus 9/36 Talán egy while -os ciklus átírása során jött ki: for (int n=0;n

10 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Statikus tesztelés  Szemantikus ellenőrzés, ellentmondás- keresés (folytatás) : o végtelen feltételes ciklus ( i

11 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Dinamikus tesztelés Tesztelési módszerek:  Fekete doboz módszerek (←nincs kimerítő be- menet halmaz– nem lehet minden lehetséges bemenetre kipróbálni): a teszteseteket a program specifikációja alapján optimálisan választjuk.  Fehér doboz módszerek (←nincs kimerítő út halmaz– nem lehet minden végrehajtási sor- rendre kipróbálni): a teszteseteket a program struktúrája alapján optimálisan választjuk. 11/36

12 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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! 12/36

13 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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 ): o N prímszám: 3 o N-nek egyetlen valódi osztója van: 4 =2*2 o N-nek több, különböző valódi osztója is van: 6 =2*3 o N páros o N nem természetes szám Érvényes adatokra Érvénytelen adatokra 13/36

14 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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: vi/PrM1felev/Pdf/PrTea7.p df vi/PrM1felev/Pdf/PrTea7.p df fejezetében vi/PrM1felev/Pdf/PrTea7.p df 14/36

15 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Dinamikus tesztelés: fehér 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… Utasítás lefedés: o i:=i+1 végrehajtandó: N=9 o O:=i végrehajtandó (  Van=Igaz ): N=9 Feltétel lefedés: o Ciklusfeltétel igaz: N=3 o Ciklusfeltétel hamis: N=3 ( i=3 esetén ) o Elágazásfeltétel igaz (  Van=Igaz ): N=4 o Elágazásfeltétel hamis (  Van=Hamis ): N=3 15/36

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

17 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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 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! 17/36

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

19 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibakeresé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,  … 19/36

20 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibakeresés Célja: a felfedett hibajelenség okának ( helyének ) 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 nem csinálja a prog- ram, amit várunk, illetve, hogy miért csinál olyat, amit nem várunk.  Csak akkor javítani, ha megtaláltuk a hibát. 20/36

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

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

23 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibakeresési módszerek Példa az indukciós módszerre: 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 legalább 40-re 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!  … 23/36 hibásak

24 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibakeresési módszerek Példa a dedukciós módszerre: 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 legalább 40-re?  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!  … 24/36 nem hibásak

25 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Hibajavítá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és megismé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 ). 25/36

26 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Dokumentációk Fajtái:  Felhasználói dokumentáció  Fejlesztői dokumentáció  Programismertető  … 26/36

27 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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 27/36

28 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás 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 28/36

29 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Szövegszerkesztési isme- retek a dokumentációhoz  Karakterformázás (szöveg, program)  Bekezdésformázás  Tabulátorok  Képbeillesztés (pl. a futás bemutatásához)  Oldalformázás  Táblázatok (struktogram, tesztek)  Egyenletszerkesztő (pl. a specifikációhoz)  Szervezeti diagram-készítő 29/36

30 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Programkészítési elvek  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. 30/36

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

32 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Taktikai elvek  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 ( pl. alprogramokba helyezéssel + paraméterezéssel + lokális adatok deklarálásával ) 32/36

33 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Technológiai elvek  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)Hungarian Notation 33/36

34 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Technikai elvek  Barátságosság  Biztonságosság  Jól olvashatóság 34/36

35 ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás Esztétikai/ergonómiai elvek  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 35/36

36 Programozási alapismeretek 9. előadás vége


Letölteni ppt "Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/362014. 07. 14.2014. 07. 14.2014. 07. 14."

Hasonló előadás


Google Hirdetések