programozási alapismeretek 9. előadás
Post on 22-Jan-2016
57 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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!
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
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
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
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
Programozási alapismeretek
9. előadás vége
top related