Algoritmizálás, adatmodellezés tanítása 6. előadás

Hasonló dokumentumok
Programtervezés. Dr. Iványi Péter

Algoritmizálás, adatmodellezés tanítása 1. előadás

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

Kivételkezelés. Tesztelés, hibakeresés, kivételkezelés. Programozás II. előadás. Szénási Sándor

Bevezetés az informatikába

Algoritmizálás és adatmodellezés tanítása 2. előadás

Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Algoritmizálás és adatmodellezés tanítása 3. előadás

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Algoritmizálás és adatmodellezés tanítása 1. előadás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Szoftver karbantartási lépések ellenőrzése

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Algoritmizálás, adatmodellezés tanítása 8. előadás

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Algoritmizálás, adatmodellezés tanítása 1. előadás

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Algoritmizálás, adatmodellezés 1. előadás

Programozási alapismeretek 1. előadás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Algoritmizálás, adatmodellezés tanítása 2. előadás

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Algoritmizálás és adatmodellezés 2. előadás

Modellek ellenőrzése és tesztelése

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Kompetens szoftvertesztelés a gyakorlatban II. zárthelyi dolgozat

Algoritmizálás és adatmodellezés tanítása 6. előadás

Multihalmaz, intervallumhalmaz

Szoftver értékelés és karbantartás

Időjárási csúcsok. Bemenet. Kimenet. Példa. Korlátok. Nemes Tihamér Nemzetközi Informatikai Tanulmányi Verseny, 2-3. korcsoport

Szoftverminőségbiztosítás

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Programozás Minta programterv a 1. házi feladathoz 1.

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

Bevezetés a programozásba I.

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Algoritmusok és adatszerkezetek I. 4. előadás

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Szoftver karbantartás

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Webprogramozás szakkör

Kiterjesztések sek szemantikája

INFORMATIKAI ALAPISMERETEK

Programozási nyelvek 6. előadás

7.4. A programkonstrukciók és a kiszámíthatóság

Fordítóprogramok. Aszalós László szeptember 7.

Programozási módszertan. Mohó algoritmusok

Algoritmusok, adatszerkezetek, objektumok

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozási Módszertan definíciók, stb.

BME MOGI Gépészeti informatika 4.

Fordítás Kódoptimalizálás

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Diszkrét matematika I.

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Informatika tanítási módszerek

Automatikus tesztgenerálás modell ellenőrző segítségével

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

KOVÁCS BÉLA, MATEMATIKA I.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

S0-02 Típusmodellek (Programozás elmélet)

Algoritmizálás és adatmodellezés tanítása 9. előadás

Maximum kiválasztás tömbben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

29. Visszalépéses keresés 1.

Diszkrét matematika I.

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

A matematika nyelvéről bevezetés

Számítógép és programozás 2

Algoritmizálás és adatmodellezés tanítása 4. előadás

A félév során előkerülő témakörök

Adatszerkezetek II. 2. előadás

Szoftvertesztelés - Bevezető

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Mérési struktúrák

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Programozási alapismeretek 3. előadás

Matematikai logika és halmazelmélet

Szoftverminőségbiztosítás

Matematika A1a Analízis

Programozás Minta programterv a 2. házi feladathoz 1.

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

Átírás:

Algoritmizálás, adatmodellezés tanítása 6. előadás

Tesztelési módszerek statikus tesztelés kódellenőrzés szintaktikus ellenőrzés szemantikus ellenőrzés dinamikus tesztelés fekete doboz módszerek fehér doboz módszerek 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 2/22

Dinamikus tesztelés Fekete doboz módszerek (nincs kimerítő bemenet nem lehet minden lehetséges bemenetre kipróbálni): a teszteseteket a program specifiká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 struktúrája alapján választjuk. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 3/22

Fekete doboz módszerek Ekvivalencia-osztályok módszere: a bemeneteket (vagy a 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 ekvivalencia-osztályok határáról válasszunk tesztesetet! Ok-hatás analízis: bemeneti feltételek (okok) és kimeneti feltételek (hatások) kombinálása. Véletlenszerű adatok generálása. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 4/22

Ekvivalencia osztályok módszere Ha a bemeneti feltétel értéktartományt definiál, az érvényes ekvivalencia osztály legyen a megengedett bemenő értékek halmaza, az érvénytelen ekvivalencia osztályok pedig az alsó és a felső határoló tartomány. Pl. ha az adatok osztályzatok (értékük 1 és 5 között van), akkor ezek az ekvivalencia osztályok rendre: {1 i 5}, {i<1} és {i>5}. Ha a bemeneti feltétel értékek számát határozza meg, akkor az előzőhöz hasonlóan járjunk el. Pl. ha be kell olvassunk legfeljebb 6 karaktert, akkor az érvényes ekvivalencia osztály: 0-6 karakter beolvasása, az érvénytelen ekvivalencia osztály: 6-nál több karakter beolvasása. (0-nál kevesebb nem fordulhat elő.) 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 5/22

Ekvivalencia osztályok módszere Ha a bemenet feltétele azt mondja ki, hogy a bemenő adatnak valamilyen meghatározott jellemzővel kell rendelkezni, akkor két ekvivalencia osztályt kell felvenni: egy érvényeset és egy érvénytelent. Ha okunk van feltételezni, hogy a program valamelyik ekvivalencia osztályba eső elemeket különféleképpen kezeli, akkor a feltételezésnek megfelelően bontsuk az ekvivalencia osztályt további osztályokra. Alkalmazzuk ugyanezeket az elveket a kimeneti ekvivalencia osztályokra is! 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 6/22

A teszteseteket a következő két elv alapján határozhatjuk meg: Amíg az érvényes ekvivalencia osztályokat le nem fedtük, addig készítsünk olyan teszteseteket, amelyek minél több érvényes ekvivalencia osztályt lefednek! Minden érvénytelen ekvivalencia osztályra írjunk egy-egy, az osztályt lefedő tesztesetet. Több hiba esetén ugyanis előfordulhat, hogy a hibás adatok lefedik egymást, a második hiba kijelzésére az első hibajelzés miatt már nem kerül sor. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 7/22

Határeset elemzés módszere Ha a bemeneti feltétel egy értéktartományt jelöl meg, írjunk teszteseteket az érvényes tartomány alsó és felső határára és az érvénytelen tartománynak a határ közelébe eső elemére! Pl.: ha a bemeneti tartomány a (0,1) nyílt intervallum, akkor a 0, 1, 0.01, 0.99 értékekre érdemes kipróbálni a programot. Ha egy bemeneti feltétel értékek számosságát adja meg, akkor hasonlóan járjunk el, mint az előző esetben. Pl.: ha rendeznünk kell 1-128 nevet, akkor célszerű a programot kipróbálni 0, 1, 128, 129 névvel. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 8/22

Fehér doboz módszerek egy kipróbálási stratégiát választunk a program szerkezete alapján, a stratégia alapján megadott teszt-utakhoz teszt-predikátumokat rendelünk, a tesztpredikátumok ekvivalencia osztályokat jelölnek ki, amelyekből egy-egy tesztesetet választunk. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 9/22

Fehér doboz módszerek kipróbálási stratégiák utasítás lefedés: minden utasítást legalább egyszer hajt-sunk 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! 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 10/22

Fehér doboz módszerek teszteset generálás Bázisútnak nevezzük a programgráf olyan útját, amely a kezdőponttól a legelső elágazás- vagy ciklusfeltétel kiértékeléséig tart, elágazás- vagy ciklusfeltételtől a következő elágazás- vagy ciklusfeltétel helyéig vezet, elágazás- vagy ciklusfeltételtől a program végéig tart, s közben más feltétel kiértékelés nincs. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 11/22

Fehér doboz módszerek teszteset generálás Tesztutaknak nevezzük a programgráfon átvezető, a kezdőponttól a végpontig haladó olyan utakat, amelyek minden bennük szereplő élt pontosan egyszer tartalmaznak. Tesztpredikátumnak nevezzük azokat a bemenő adatokra vonatkozó feltételeket, amelyek teljesülése esetén pontosan egy tesztúton kell végighaladni. A teszteset generálás első lépése tehát a minimális számú olyan tesztút meghatározása, amelyek lefedik a kipróbálási stratégiának megfelelően a programgráfot. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 12/22

Fehér doboz módszerek teszteset generálás A tesztpredikátum előállítása: Ehhez a program szimbolikus végrehajtására van szükség. Induljunk ki az előfeltételből! Haladjunk a programban az első elágazás- vagy ciklusfeltételig, s a formulát a közbülső műveleteknek megfelelően transzformáljuk! A tesztútnak megfelelő ág feltételét és kapcsolattal kapcsoljuk hozzá a tesztpredikátumhoz, majd folytassuk a szimbolikus végrehajtást egészen a program végpontjáig! 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 13/22

Hibakeresési eszközök Memória-, változó-kiírás Nyomkövetés (hibától visszafelé is) Adat-nyomkövetés Állapot-nyomkövetés (pl. paraméterek) 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) 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 14/22

Hibakeresési módszerek Célja: A bemenetnek mi az a 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é 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 15/22

Helyességbizonyítás Helyességbizonyítás Egy U program az x bemenő adatokra felírt ef(x) előfeltétel, valamint az uf(x,y) utófeltétel mellett parciálisan (részlegesen) helyes, ha x-re, amelyre a program futása befejeződik: ef(x) uf(x,y). Jelölése: {ef(x)} U(x,y) {uf(x,y)}. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 16/22

Helyességbizonyítás Egy U program az x bemenő adatokra felírt ef(x) előfeltétel, valamint az uf(x,y) utófeltétel mellett befejeződik, ha x-re: ef(x) a program eljut a végpontjához. Egy U program az x bemenő adatokra felírt ef(x) előfeltétel, valamint az uf(x,y) utófeltétel mellett teljesen helyes, ha parciálisan helyes és befejeződik. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 17/22

Helyességbizonyítás Axiómák 1. Az értékadás axiómája: {ef(x)} y:=f(x) {ef(x) és y=f(x)} {ef(x,f(x))} y:=f(x) {uf(x,y)} 2. Az üres utasítás axiómája: {ef(x)} üres {ef(x)}. 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 18/22

Helyességbizonyítás Következtetési szabályok 1. Szekvencia bizonyítása: U=U 1 ; U 2 {ef(x)} U 1 {P(x)} és {P(x)} U 2 {uf(x)} {ef(x)} U 1 ; U 2 {uf(x)} 2. Elágazás bizonyítása: U= Ha P(x) akkor U 1 különben U 2 {ef(x) és P(x)} U 1 {uf(x)} és {ef(x) és nem P(x)} U2 {uf(x)} {ef(x)} Ha P(x) akkor U 1 különben U 2 {uf(x)} 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 19/22

Helyességbizonyítás Következtetési szabályok 3. Ciklus bizonyítása: U= Ciklus amíg cf(x) Cm(x) Ciklus vége Definiáljunk a ciklushoz egy I(x) invariáns állítást! ef(x) I(x) és {I(x) és cf(x)} Cm(x) {I(x)} és (I(x) és nem cf(x)) uf(x) {ef(x)} Ciklus amíg cf(x) Cm(x) Ciklus vége {uf(x)} 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 20/22

Helyességbizonyítás Következtetési szabályok 4. Ciklus befejeződése: U= Ciklus amíg cf(x) Cm(x) Ciklus vége Definiáljunk a ciklushoz egy t(x) variáns függvényt! I(x) t(x) N és {I(x) és cf(x) és t(x)=t 0 } Cm(x) {t(x)<t 0 } a ciklus befejeződik 2015.10.04. 18:33 Zsakó László: Algoritmizálás, adatmodellezés tanítása 21/22

Algoritmizálás, adatmodellezés tanítása 6. előadás vége