Programozsi alapismeretek 9 elads Tartalom Tesztels elvek mdszerek

  • Slides: 36
Download presentation
Programozási alapismeretek 9. előadás

Programozási alapismeretek 9. előadás

Tartalom Ø Tesztelés – elvek + módszerek Ø Futtatás adatfájllal – C++ ELTE Ø

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

Tesztelési fogalmak: Ø Teszteset ELTE = bemenet + kimenet Ø Próba = teszteset-halmaz Ø

Tesztelési fogalmak: Ø Teszteset ELTE = 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. 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 3/36

Tesztelési elvek: Ø Érvényes (megengedett) ELTE 10/21/2021 és érvénytelen (hibás) bemenetre is kell tesztelni.

Tesztelési elvek: Ø Érvényes (megengedett) ELTE 10/21/2021 é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. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 4/36

Tesztelési módszerek: Ø Statikus ELTE tesztelés: a programszöveget vizs-gáljuk, a program futtatása nélkül. Ø

Tesztelési módszerek: Ø Statikus ELTE 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. 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 5/36

Statikus tesztelés Ø Kódellenőrzés: o o ELTE algoritmus kód megfeleltetés algoritmus+kód elmagyarázása másnak Ø

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

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o inicializálatlan változó i=1; while (i<=n) …

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; …)…) ELTE „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 } 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 7/36

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o érték nélküli fv. Szintaktikusan hibás C++-ban

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

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o ELTE o azonosan igaz/hamis feltétel (

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o ELTE o azonosan igaz/hamis feltétel ( i>1 || i<100 ) / ( i<1 && i>max. N végtelen számlálós ciklus ) Talán egy while-os ciklus átírása során jött ki: for (int n=0; n<max. N; ++n) { …; --n; ← sajnos nem okoz fordítási hibaüzenetet } 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 9/36

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o ELTE végtelen feltételes ciklus (i<N feltételű

Statikus tesztelés Ø Szemantikus ellenőrzés, ellentmondás-keresés (folytatás): o ELTE végtelen feltételes ciklus (i<N feltételű ciklusban sem i, sem N nem vagy „szin-kronban” változik) i=1; while (i<=N) { … i=1; ← talán i+=1 akart lenni? } o konstans értékű, (bár) változókat tartalmazó kifejezés y=sin(x)*cos(x)-sin(2*x)/2 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 10/36

Dinamikus tesztelés Tesztelési módszerek: Ø Fekete ELTE 10/21/2021 doboz módszerek (←nincs kimerítő be-menet halmaz–

Dinamikus tesztelés Tesztelési módszerek: Ø Fekete ELTE 10/21/2021 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. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 11/36

Dinamikus tesztelés: fekete doboz módszerek Ø Ekvivalencia-osztályok módszere: a bemeneteket (vagy a ELTE kimeneteket)

Dinamikus tesztelés: fekete doboz módszerek Ø Ekvivalencia-osztályok módszere: a bemeneteket (vagy a ELTE kimeneteket) soroljuk olyan osztályokba, amelyekre a program várható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! 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 12/36

Dinamikus tesztelés: fekete doboz módszerek Ø Feladat: Egy N természetes szám valódi (1 -től

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… ELTE Érvényes adatokra Ekvivalencia osztályok (bemenet alapján): o o Érvénytelen adatokra 10/21/2021 o o N prímszám: 3 N-nek egyetlen valódi osztója van: 4=2*2 N-nek több, különböző valódi osztója is van: 6=2*3 N páros Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 13/36

Dinamikus tesztelés: fehér doboz módszerek Kipróbálási stratégiák: Ø utasítás ELTE lefedés: minden utasítást legalább

Dinamikus tesztelés: fehér doboz módszerek Kipróbálási stratégiák: Ø utasítás ELTE 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! Ezekhez továbbiakat talál Tesztadat-generálás: 10/21/2021 Ezekhez továbbiakat talál itt: http: //people. inf. elte. hu/szla vi/Pr. M 1 felev/Pdf/Pr. Tea 7. pd f 1. 3. 2. fejezetében Ø automatikus tesztbemenet-előállítás Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 14/36

Dinamikus tesztelés: fehér doboz módszerek Ø Feladat: Egy N természetes szám valódi (1 -től

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

Speciális tesztelések Ø Biztonsági ELTE 10/21/2021 teszt: ellenőrzések vannak? Ø Hatékonysági teszt Speciális programokhoz

Speciális tesztelések Ø Biztonsági ELTE 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 16/36

Futtatás adatfájllal (C++) Elv: ELTE Figyelem! Ha van outputfájl, akkor a kérdés szövege is

Futtatás adatfájllal (C++) Elv: ELTE Figyelem! Ha van outputfájl, akkor a kérdés szövege is abban „jelenik meg”. prog. exe >>outputfájlhoz írás! 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. 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 17/36

Futtatás adatfájllal (C++) Demo: Készítsen néhány bemeneti adatot tartalmazó fájlt (a konzol inputnak megfelelő

Futtatás adatfájllal (C++) Demo: 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. ELTE 1. prog. exe <1. be >1. ki 2. prog. exe <2. be >2. ki 3. … Ellenőrizze a kimeneti fájlok tartalmát: olyan-e, amilyennek várta Megjegyzés: tovább egyszerűsítheti a Kód jegyzettesztelést, ha egy batch állománnyal ként automatizálja a 2. -t! 3. 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 18/36

Hibakeresés Hibajelenségek a tesztelés során… Ø hibás ELTE 10/21/2021 az eredmény, Ø futási hiba

Hibakeresés Hibajelenségek a tesztelés során… Ø hibás ELTE 10/21/2021 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, Ø… Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 19/36

Hibakeresés Célja: a felfedett hibajelenség okának (helyének) megtalálása. ELTE Elvek: Ø Eszközök 10/21/2021 használata

Hibakeresés Célja: a felfedett hibajelenség okának (helyének) megtalálása. ELTE Elvek: Ø Eszközök 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 20/36

Hibakeresési eszközök: Ø Változó-, memória-kiírás (feltételes fordítás) ELTE Ø Nyomkövetés (hibától visszafelé is) ØA

Hibakeresési eszközök: Ø Változó-, memória-kiírás (feltételes fordítás) ELTE Ø Nyomkövetés (hibától visszafelé is) ØA 10/21/2021 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) Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 21/36

Hibakeresési módszerek Célja: Ø hibásak ELTE Ø A bemenetnek mely része, amire hibásan működik

Hibakeresési módszerek Célja: Ø hibásak ELTE Ø A bemenetnek mely 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: nem hibásak 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 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 22/36

Hibakeresési módszerek hibásak ELTE 10/21/2021 Példa az indukciós módszerre: Feladat: 1 és 99 közötti

Hibakeresési módszerek hibásak ELTE 10/21/2021 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. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 23/36

nem hibásak ELTE 10/21/2021 Hibakeresési módszerek Példa a dedukciós módszerre: Feladat: 1 és 99

nem hibásak ELTE 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 24/36

Hibajavítás Célja: a megtalált hiba kijavítása. Elvek: ØA ELTE 10/21/2021 hiba kijavítása a program

Hibajavítás Célja: a megtalált hiba kijavítása. Elvek: ØA ELTE 10/21/2021 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). Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 25/36

Dokumentációk ELTE 10/21/2021 Fajtái: Ø Felhasználói dokumentáció Ø Fejlesztői dokumentáció Ø Programismertető Ø… Horváth-Papné-Szlávi-Zsakó:

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

Felhasználói dokumentáció Tartalma: Ø feladat ELTE 10/21/2021 (összefoglaló és részletes is) Ø környezetleírás Ø

Felhasználói dokumentáció Tartalma: Ø feladat ELTE 10/21/2021 (ö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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 27/36

Fejlesztői dokumentáció Tartalma: Ø specifikáció, ELTE 10/21/2021 követelményanalízis Ø környezetleírás Ø adatleírás (feladatparaméterek reprezentálá-sa)

Fejlesztői dokumentáció Tartalma: Ø specifikáció, ELTE 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 28/36

Szövegszerkesztési isme-retek a dokumentációhoz Ø Karakterformázás ELTE 10/21/2021 (szöveg, program) Ø Bekezdésformázás Ø Tabulátorok

Szövegszerkesztési isme-retek a dokumentációhoz Ø Karakterformázás ELTE 10/21/2021 (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ő Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 29/36

Programkészítési elvek Ø Stratégiai ELTE 10/21/2021 elv: a problémamegoldás logikája – a lépésenkénti finomítás.

Programkészítési elvek Ø Stratégiai ELTE 10/21/2021 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. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 30/36

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)

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) = Nem alternatívák! probléma–szintézis. ELTE 1. szint 2. szint 3. szint 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 31/36

Taktikai elvek Ø Párhuzamos ELTE 10/21/2021 finomítás Ø Döntések elhalasztása Ø Döntések nyilvántartása Ø

Taktikai elvek Ø Párhuzamos ELTE 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. deklarálásával ) 32/36

Technológiai elvek Ø Struktúrák ELTE 10/21/2021 zárójelezése Ø Bekezdéses struktúrák Ø Kevés algoritmusleíró szabály

Technológiai elvek Ø Struktúrák ELTE 10/21/2021 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) Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 33/36

Technikai elvek Ø Barátságosság Ø Biztonságosság Ø Jól olvashatóság ELTE 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek

Technikai elvek Ø Barátságosság Ø Biztonságosság Ø Jól olvashatóság ELTE 10/21/2021 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 34/36

Esztétikai/ergonómiai elvek Ø Lapokra ELTE 10/21/2021 tagolás, kiemelés, elkülönítés Ø Menütechnika Ø Ikontechnika, választás

Esztétikai/ergonómiai elvek Ø Lapokra ELTE 10/21/2021 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 Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. 35/36

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

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