programozási alapismeretek 9. előadás

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

Upload: palti

Post on 22-Jan-2016

57 views

Category:

Documents


8 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

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

Programozási alapismeretek

9. előadás

Page 2: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás 22/30/3023.04.21.23.04.21.

Tesztelés – elvek + módszerek

Futtatás adatfájllal – C++

HibakeresésHibajavításDokumentálás +

szövegszerkesztési minimum Programkészítési elvek

Tartalom

Page 3: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Tesztelés

Tesztelési fogalmak, elvek:1. Teszteset = bemenet + kimenet2. Ideális próba: minden hibát kimutat Megbízható próba: nagy

valószínűséggel min-den hibát kimutat3. Jó teszteset: nagy valószínűséggel

felfedetlen hibát mutat ki4. Rossz a meg nem ismételhető teszteset5. Érvényes és érvénytelen adatokra is

kell6. Minden teszteset maximális

kihasználása7. Csak más tudja jól tesztelni a

programot33/30/30

Page 4: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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.

44/30/30

Page 5: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Statikus tesztelés

Kódellenőrzés:o algoritmus-kód megfeleltetéso algoritmus+kód elmagyarázása

másnakSzintaktikus ellenőrzés:

o fordítóprogram vagy értelmező esetén futtatással

Szemantikus ellenőrzés, ellentmondás-keresés:

o inicializálatlan változó, érték nélküli fv.

o felhasználatlan érték ( i=1;for(i=2;… ) vagy változó

o önmagának értékadás ( i=1*i+0 )55/30/30

Page 6: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Statikus tesztelés

Szemantikus ellenőrzés, ellentmondás-keresés (folytatás):

o azonosan igaz elágazás-feltétel( i>1 || i<100 )

o végtelen számlálós ciklus(i=1..100 ciklusmagban i=1 tán az i+=1 helyett)

o végtelen feltételes ciklus (i<N feltételű ciklusban sem i, sem N nem vagy „szin-kronban” változik)

o konstans értékű, változókat tartalmazó kifejezés ( y=tan(x)–sin(x)/cos(x) ) 66/30/30

Page 7: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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án vá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.

77/30/30

Page 8: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Dinamikus tesztelés:

fekete doboz módszerekEkvivalencia-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!

88/30/30

Page 9: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Dinamikus tesztelés:

fekete doboz módszerekFeladat: 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ámo N-nek egyetlen valódi osztója vano N-nek több, különböző valódi

osztója is vano N pároso N nem természetes szám

Érvényes Érvényes adatokraadatokra

Érvénytelen Érvénytelen adatokraadatokra

99/30/30

Page 10: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Dinamikus tesztelés:

fehér doboz módszerekKipró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 Ezekhez továbbiakat talál itt:talál itt:http://http://

people.inf.elte.hu/people.inf.elte.hu/szlavi/PrM1felev/Pdf/szlavi/PrM1felev/Pdf/

PrTea7.pdfPrTea7.pdf 1.3.2. 1.3.2. fejezetébenfejezetében

1010/30/30

Page 11: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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

1111/30/30

Page 12: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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 Figyelem! Ha van outputfájl, akkor a outputfájl, akkor a kérdés szövege is kérdés szövege is

abban „jelenik meg”.abban „jelenik meg”.

prog.exe >>outputfájloutputfájlhoz írás!

1212/30/30

Page 13: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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.be >1.ki2.prog.exe <2.be >2.ki3.…

3.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 Kód jegyzet-jegyzet-

kéntként

Kód Kód jegyzet-jegyzet-

kéntként1313/30/30

Page 14: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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, …

1414/30/30

Page 15: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Hibakeresé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 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.

1515/30/30

Page 16: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Hibakeresé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)

1616/30/30

Page 17: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Hibakeresési módszerek

Célja: A bemenetnekbemenetnek melymely része, amire

hibásan működik a program? Hol Hol található a programbanprogramban a hibát

okozó utasítás?Módszerfajták:1. 1. Indukciós módszer (hibásak körének

bővítése)2. 2. Dedukciós módszer (hibásak körének

szűkítése)3. 3. Hibakeresés hibától visszafelé4. 4. Teszteléssel segített hibakeresés (olyan

teszteset kell, amely az ismert hiba helyét fedi fel)

hibásakhibásak

nem hibásaknem hibásak

1717/30/30

Page 18: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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 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!

1818/30/30

hibásakhibásak

Page 19: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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 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!

…1919/30/30

nem hibásaknem hibásak

Page 20: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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).

2020/30/30

Page 21: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Dokumentációk

Fajtái:Felhasználói dokumentációFejlesztői dokumentációProgramismertető…

2121/30/30

Page 22: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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

2222/30/30

Page 23: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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

2323/30/30

Page 24: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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ő

2424/30/30

Page 25: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

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.

2525/30/30

Page 26: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Stratégiai elv:lépésenkénti

finomításFelü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

2626/30/30

Nem Nem alternatíváalternatívá

k!k!

Nem Nem alternatíváalternatívá

k!k!

Page 27: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Taktikai elvek

Párhuzamos finomításDöntések elhalasztásaDöntések nyilvántartásaVissza az ősökhözNyílt rendszer felépítés (általánosítás)

Párhuzamos ágak függetlensége

Szintenkénti teljes kifejtésAdatok elszigetelése

2727/30/30

Page 28: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Technológiai elvek

Struktúrák zárójelezéseBekezdéses struktúrákKevés algoritmusleíró szabályÉrtelmes sorokra tördelésBeszédes azonosítók, kifejező névkon-venciók (pl. Hungarian Notation)

2828/30/30

Page 29: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Technikai elvek

BarátságosságBiztonságosságJól olvashatóság

2929/30/30

Page 30: Programozási alapismeretek  9. előadás

ELTEELTE

Szlávi-Zsakó: Programozási alapismeretek 9. előadásSzlávi-Zsakó: Programozási alapismeretek 9. előadás23.04.21.23.04.21.

Esztétikai/ergonómiai elvek

Lapokra tagolás, kiemelés, elkülönítés

MenütechnikaIkontechnika, választás egérrelKö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éseNaplózás

3030/30/30

Page 31: Programozási alapismeretek  9. előadás

Programozási alapismeretek

9. előadás vége