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

Slides:



Advertisements
Hasonló előadás
T ESZTELÉS. C ÉLJA Minél több hibát találjunk meg! Ahhoz, hogy az összes hibát fölfedezzük, kézenfekvőnek tűnik a programot az összes lehetséges bemenő.
Advertisements

Készítette: Kosztyán Zsolt Tibor
H IBAKERESÉS, HIBAJAVÍTÁS. H IBAJELENSÉGEK Szintaktikai hiba:  Csak értelmezés esetén fordul elő, hiszen a fordítóprogramok korábban, még a fordítási.
Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Algoritmusok.
Adatelemzés számítógéppel
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Programozási alapismeretek 9. előadás
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Algoritmizálás, adatmodellezés tanítása 4. előadás
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Kocsisné Dr. Szilágyi Gyöngyi. Elérehet ő ség: aszt.inf.elte.hu/~szilagyi/ aszt.inf.elte.hu/~szilagyi Fogadó óra: hétf ő
Visual Basic for Application (VBA)
Programozási alapismeretek 3. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Bernoulli Egyenlőtlenség
MI 2003/7 - 1 Az egyesítési algoritmus Minden kapitalista kizsákmányoló. Mr. Smith kapitalista. Mr. Smith kizsákmányoló.
C A C nyelv utasításai.
Bizonyítási stratégiák
Programozás módszertan
Algoritmizálás Göncziné Kapros Katalin humaninformatika.ektf.hu.
Logika 5. Logikai állítások Miskolci Egyetem Állam- és Jogtudományi Kar Jogelméleti és Jogszociológiai Tanszék március 10.
Differenciál számítás
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Programozás I. Ciklusok
Halmazelmélet és matematikai logika
A problémamegoldás lépései
Programtesztelés. Hibák keletkezésének okai nem egyértelmű vagy hiányos kommunikáció fejlesztés közben maga a szoftver bonyolultsága programozói (kódolási)
Szintaktikai, szemantikai szabályok
3.2. A program készítés folyamata Adatelemzés, adatszerkezetek felépítése Típus, változó, konstans fogalma, szerepe, deklarációja.
A Birodalmi lépegetőtől… Egy játék matematikája. Egyszer volt… Ha megnőnek a gyerekek, akkor a matematikusnak marad a solitaire :( Van k darab doboz 1-től.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Algoritmus szerkezetek
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Algoritmusok.
Logikai programozás 2..
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Algoritmizálás, adatmodellezés tanítása 7. előadás
Copyright, 1999 © Szlávi Péter Sor típuskonstrukció Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Programozás, programtervezés
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Programozási alapismeretek 11. előadás
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Programozási nyelvek típusossága.
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Formális módszerek a programozásban
Algoritmusok és Adatszerkezetek I.
Algoritmus készítés.
Előadás másolata:

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

Tesztelés, hibakeresé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 Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Dinamikus tesztelés  Fekete doboz módszerek (nincs kimerítő bemenet – nem lehet minden lehetséges bemenet-re 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 min- den végrehajtási sorrendre kipróbálni): a teszteseteket a program struktúrája alapján választjuk Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Fekete doboz módszerek  Ekvivalencia-osztályok módszere: a bemeneteket (vagy a kimeneteket) soroljuk olyan osztályokba, amelyekre a prog- ram 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! Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Ekvivalencia osztályok módszere  Ha a bemeneti feltétel értéktartományt definiál, az érvényes ekviva- lencia osztály legyen a megengedett bemenő értékek halmaza, az ér- vénytelen ekvivalencia osztályok pedig az alsó és a felső határoló tar- tomány. Pl. ha az adatok osztályzatok (értékük 1 és 5 között van), ak- kor ezek az ekvivalencia osztályok rendre: {1≤i≤5}, {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 karak- tert, 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ő.) Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Ekvivalencia osztályok módszere  Ha a bemenet feltétele azt mondja ki, hogy a bemenő adatnak vala- milyen meghatározott jellemzővel kell rendelkezni, akkor két ekvi- valencia 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és- nek megfelelően bontsuk az ekvivalencia osztályt további osztályokra.  Alkalmazzuk ugyanezeket az elveket a kimeneti ekvivalencia osztá- lyokra is! Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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 ekviva- lencia 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 hi- bás adatok lefedik egymást, a második hiba kijelzésére az első hiba- jelzés miatt már nem kerül sor Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Határeset elemzés módszere  Ha a bemeneti feltétel egy értéktartományt jelöl meg, írjunk tesztese- teket 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 tarto- mány a (0,1) nyílt intervallum, akkor a 0, 1, 0.01, 0.99 értékekre érde- mes kipróbálni a programot.  Ha egy bemeneti feltétel értékek számosságát adja meg, akkor hason- lóan járjunk el, mint az előző esetben. Pl.: ha rendeznünk kell nevet, akkor célszerű a programot kipróbálni 0, 1, 128, 129 névvel Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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átu- mokat rendelünk,  a tesztpredikátumok ekvivalencia osztályokat jelölnek ki, amelyekből egy-egy tesztesetet választunk Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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! Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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ér- té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öz- ben más feltétel kiértékelés nincs Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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ér- té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öz- ben más feltétel kiértékelés nincs Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés Fehér doboz módszerek – teszteset generálás Tesztutaknak nevezzük a programgráfon átvezető, a kez- dő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 Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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űvele- teknek 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! Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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) Zsakó László: Algoritmizálás, adatmodellezés tanítása

Tesztelés, hibakeresés 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é Zsakó László: Algoritmizálás, adatmodellezés tanítása

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áli- san (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)} Zsakó László: Algoritmizálás, adatmodellezés tanítása

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 befeje- ző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 Zsakó László: Algoritmizálás, adatmodellezés tanítása

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)} Zsakó László: Algoritmizálás, adatmodellezés tanítása

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)} Zsakó László: Algoritmizálás, adatmodellezés tanítása

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)} Zsakó László: Algoritmizálás, adatmodellezés tanítása

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 Zsakó László: Algoritmizálás, adatmodellezés tanítása

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