Specifikáció
Az első teendő a feladat pontos meghatározása, a specifikáció. Ez a feladat szöveges és normalizált, matematikai leírásán túl tartalmazza a megoldással szemben támasztott követelményeket, környezeti igényeket is. A specifikáció alapján meg lehet tervezni a programot, elkészülhet a megoldás algoritmusa és az algoritmus által használt adatok leírása. Az algoritmus és az adatszerkezet finomítása egymással párhuzamosan halad, egészen addig a szintig, amelyet a programozó ismeretei alapján már könnyen, hibamentesen képes kódolni. Gyakran előfordul, hogy a tervezés során derül fény a specifikáció hiányosságaira, így itt visszalépésekre számíthatunk.
Kódolás
Az algoritmusírás után következhet a kódolás. Ha a feladat kitűzője nem rögzítette, akkor ez előtt választhatunk a megoldáshoz programozási nyelvet. A kódolás eredménye a programozási nyelven leírt program.
Kódolási szabályok:
Lapozás, lapozás technika, funkcióbillentyűk, Ablaktechnika, Menütechnika, Ikontechnika, Help, Naplózás.
Programtesztelés
A program az első változatban általában nem hibátlan, ezért minden esetben szükséges a program helyes működésének vizsgálata, a programtesztelés. Ennek során próbaadatokkal próbáljuk ki a programot, s az ezekre adott eredményből következtetünk a program működésének helyességére.
Tesztelés:
A tesztelés célja, hogy a programban megtaláljuk a hibákat. A tesztelés során a legcélszerűbb lenne a programot kipróbálni az összes bemenő adattal, erre azonban a legtöbbször nincsen lehetőség. A tesztelésnek két típusát ismerjük a statikus és a dinamikus tesztelés.
1. Kódellenőrzés
2. Formai ellenőrzés
3. Tartalmi ellenőrzés
A kódellenőrzés során a program szövegét kell leellenőrizni, és összehasonlítani az algoritmussal. Az ellenőrzés folyamán fény derülhet a logikai hibákra.
A formai ellenőrzés esetében a programban előforduló szintaktikai, és szemantikai hibákat derítjük fel. Készíthetünk a programhoz kereszthivatkozási táblázatokat is, leggyakrabban a programban szereplő változókhoz szoktunk kereszthivatkozási táblázatot készíteni, amely többlet információkat nyújt a programkóddal kapcsolatban.
A tartalmi ellenőrzés során a figyelmetlenségből eredő elírásokat térképezzük fel, ezek a hibák a formailag helyes programokban fordulnak elő.
2.1. Fekete doboz módszer
2.1.1. Ekvivalencia osztályok keresése
2.1.2. Határeset elemzés
2.2. Fehér doboz módszerek
2.2.1. Kipróbálási stratégiák
2.2.2. Tesztesetgeneráló módszerek
A fekete doboz módszer esetében a tesztelést úgy végezzük, hogy nem ismerjük a teljes programszöveget.
A bemeneti adatokat részekre kell osztani úgy, hogy ha az adott részből egy elemre leteszteltük a programot, akkor az a többi elemre is igaz legyen. Az így kialakított részeket hívjuk ekvivalencia osztályoknak. Az ekvivalencia osztályokat nemcsak az érvényes, hanem az érvénytelen adatok köréből is ki kell alakítani.
A határeset elemzés módszere az ekvivalencia osztályok keresése módszer kiegészítésének tekinthető. A módszer az ekvivalencia osztály kiválasztott elemének mindig a határon levő elemet válassza. A határeset elemzés módszere a kimenő adatokat is vizsgálja.
A fehér doboz módszer esetében a tesztelést a programszöveg ismeretében végezzük el.
A kipróbálási stratégiák esetében azt kell eldönteni, hogy a melyik utasítássorozat mentén végezzük el tesztelést.
A tesztesetgeneráló módszer során azt kell feljegyezni, hogy az adott tesztadatokkal a programgráf melyik részét jártuk be, hol található a hiba.
A speciális tesztek esetében nem az a cél, hogy az egész programot bejárjuk, hanem hogy néhány feltételnek megfeleljen a teszteredmény.
A speciális tesztek típusai:
Elfogadhatósági teszt, Funkcióteszt, Biztonsági teszt, Stressz teszt, Volumen teszt, Hatékonysági teszt, Modulteszt, Összeépítési teszt.
Hibakeresés
Hibajelenségek:
A hibakeresés során az alábbi hibajelenségekkel találkozhatunk:
Szintaktikus hiba:
A szintaktikus hibát a fordítási fázisban kijelzi a program, nem engedi a javítás befejeztéig a futtatható verziót elkészíteni.
Végrehajtási hiba:
A végrehajtási hiba esetén a fordítóprogram által beépített hibafigyelő által fellelt hiba, ilyen például a nullával való osztás vagy a túlcsordulás. A javítás során meg kell keresni, hogy melyik változó okozza.
Végtelen program:
Általában ez a hibajelenség a végtelen ciklusoknál jelentkezik, ebben az esetben ki kell javítani a hibás ciklus feltételt.
A program nem ír ki eredményt:
A program befejezte a futását, de eredmény nem jelenik meg, ebben az esetben meg kell vizsgálni a kiíró utasításokat, vagy a hiányukat.
Hibakeresés
A tesztelés során a hibákat kutattuk fel, a hibakeresés esetében a hibák behatárolásával, és kijavításával foglalkozunk.
Hibakeresési módszerek:
1. Indukciós módszer
Az indukciós módszer esetében a rendelkezésre álló tesztadatok által nyújtott eredményeket vizsgáljuk, és így próbáljuk meg feltérképezni a hiba forrását.
2. Dedukciós módszer
A dedukciós módszer segítségével egyre szűkítjük azoknak a tesztadatoknak a körét, ahol a hiba még fellép, egészen addig a pontig, ahol megtaláljuk a konkrét hibát.
3. Visszalépéses technika
A visszalépése technika segítségével a programban a hiba helyétől indulunk el visszafelé a programban egész addig a pontig, amíg a helyes eredményt nem kaptunk, akkor ugyanis megtaláltuk a hiba forrását.
4. Teszteléssel segített hibakeresés
A tesztelés esetében megkülönböztetjük a teszteseteket aszerint, hogy hibát akarunk-e feltárni, illetve hogy hibát akarunk–e előidézni. A tesztesettel előidézett hibakeresést hívjuk teszteléssel segített hibakeresésnek, amit a többi módszer kiegészítéseként használhatunk.
Ha a tesztelés során hibajelenséggel találkozunk, akkor következhet a hibakeresés, a hibajelenséget okozó utasítás megtalálása, majd pedig a hibajavítás. A hiba kijavítása több fázisba is visszanyúlhat. Elképzelhető, hogy kódolási hibát kell javítanunk, de az is lehet, hogy a hibát már a tervezésnél követtük el. Javítás után újra tesztelni kell, hiszen nem kizárt, hogy hibásan javítunk, illetőleg a javítás újabb hibákat fed fel.
Folyamat végeredménye
A folyamat végeredménye a helyes program. Ezzel azonban még korántsem fejeződik be a programkészítés. Most következnek a minőségi követelmények. Egyrészt a hatékonyságot kell vizsgálnunk (végrehajtási idő, helyfoglalás), másrészt a kényelmes használhatóságot. Itt újra visszaléphetünk a kódolási, illetve a tervezési fázisba is. Ezzel elérkeztünk a jó programhoz. Egyetlen program sem használható megfelelő leírások, dokumentáció nélkül. Ezt a folyamat végén említjük, de korántsem jelenti azt, hogy időben is a végén kell elvégezni. A dokumentálást már a feladat meghatározásnál el kell kezdeni, s folyamatosan a befejezésig kell készíteni. A professzionális programoknál még ezután kezdődik egy igen nagy fontosságú munka, a karbantartás.
A feladat pontos meghatározása, a specifikáció. Ez a feladat szöveges és normalizált, matematikai leírásán túl tartalmazza a megoldással szemben támasztott követelményeket, környezeti igényeket is. A specifikáció alapján meg lehet tervezni a programot.
Az indukciós módszer esetében a rendelkezésre álló tesztadatok által nyújtott eredményeket vizsgáljuk, és így próbáljuk meg feltérképezni a hiba forrását.
Az dedukciós módszer segítségével egyre szűkítjük azoknak a tesztadatoknak a körét, ahol a hiba még fellép, egészen addig a pontig, ahol megtaláljuk a konkrét hibát.
A visszalépése technika segítségével a programban a hiba helyétől indulunk el visszafelé a programban egész addig a pontig, amíg a helyes eredményt nem kaptunk, akkor ugyanis megtaláltuk a hiba forrását.
A tesztelés esetében megkülönböztetjük a teszteseteket aszerint, hogy hibát akarunk-e feltárni, illetve hogy hibát akarunk-e előidézni. A tesztesettel előidézett hibakeresést hívjuk teszteléssel segített hibakeresésnek, amit a többi módszer kiegészítéseként használhatunk.
1. Kódellenőrzés
2. Formai ellenőrzés
3. Tartalmi ellenőrzés
A kódellenőrzés során a program szövegét kell leellenőrizni, és összehasonlítani az algoritmussal. Az ellenőrzés folyamán fény derülhet a logikai hibákra.
A formai ellenőrzés esetében a programban előforduló szintaktikai, és szemantikai hibákat derítjük fel. Készíthetünk a programhoz kereszthivatkozási táblázatokat is, leggyakrabban a programban szereplő változókhoz szoktunk kereszthivatkozási táblázatot készíteni, amely többlet információkat nyújt a programkóddal kapcsolatban.
A tartalmi ellenőrzés során a figyelmetlenségből eredő elírásokat térképezzük fel, ezek a hibák a formailag helyes programokban fordulnak elő.
2.1. Fekete doboz módszer
2.1.1. Ekvivalencia osztályok keresése
2.1.2. Határeset elemzés
2.2. Fehér doboz módszerek
2.2.1. Kipróbálási stratégiák
2.2.2. Tesztesetgeneráló módszerek
A fekete doboz módszer esetében a tesztelést úgy végezzük, hogy nem ismerjük a teljes programszöveget.
A bemeneti adatokat részekre kell osztani úgy, hogy ha az adott részből egy elemre leteszteltük a programot, akkor az a többi elemre is igaz legyen. Az így kialakított részeket hívjuk ekvivalencia osztályoknak. Az ekvivalencia osztályokat nemcsak az érvényes, hanem az érvénytelen adatok köréből is ki kell alakítani.
A határeset elemzés módszere az ekvivalencia osztályok keresése módszer kiegészítésének tekinthető. A módszer az ekvivalencia osztály kiválasztott elemének mindig a határon levő elemet válassza. A határeset elemzés módszere a kimenő adatokat is vizsgálja.
A fehér doboz módszer esetében a tesztelést a programszöveg ismeretében végezzük el.
A kipróbálási stratégiák esetében azt kell eldönteni, hogy a melyik utasítássorozat mentén végezzük el tesztelést.
A tesztesetgeneráló módszer során azt kell feljegyezni, hogy az adott tesztadatokkal a programgráf melyik részét jártuk be, hol található a hiba.
A speciális tesztek esetében nem az a cél, hogy az egész programot bejárjuk, hanem hogy néhány feltételnek megfeleljen a teszteredmény.
A speciális tesztek típusai:
Elfogadhatósági teszt, Funkcióteszt, Biztonsági teszt, Stressz teszt, Volumen teszt, Hatékonysági teszt, Modulteszt, Összeépítési teszt.