Szoftvertesztelés

Ficsor Lajos(4,5,7 fejezet)

Dr. Kovács László (1, 10 fejezet)

Krizsán Zoltán (8, 11 fejezet)

Dr. Kusper Gábor (1, 2, 3, 6, 9 fejezet)

Új Széchenyi Terv logó.

Kelet-Magyarországi Informatika Tananyag Tárház

Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638

Lektor

Dr. Johanyák Zsolt Csaba

Kecskeméti Főiskola, főiskolai docens.

A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával a TÁMOP-4.1.2-08/1/A-2009-0046 számú Kelet-Magyarországi Informatika Tananyag Tárház projekt keretében valósult meg.


Tartalom

1. A tesztelés alapfogalmai
1.1. A tesztelés alapelvei
1.2. Tesztelési technikák
1.3. A tesztelés szintjei
1.4. A tesztelési tevékenység
1.5. A programkód formális modellje
1.5.1. A forráskód szintaktikai ellenőrzése
1.5.2. Forráskód szemantikai ellenőrzése
2. A tesztelés helye a szoftver életciklusában
2.1. A szoftverkrízis
2.2. A szoftver életciklusa
2.3. Módszertanok
2.3.1. V-modell
2.3.2. Prototípus modell
2.3.3. Iteratív és inkrementális módszertanok
2.3.4. Gyors alkalmazásfejlesztés – RAD
2.3.5. Agilis szoftverfejlesztés
2.3.6. Scrum
2.3.7. Extrém programozás
3. Statikus tesztelési technikák
3.1. Felülvizsgálat
3.1.1. Informális felülvizsgálat
3.1.2. Átvizsgálás
3.1.3. Technikai felülvizsgálat
3.1.4. Inspekció
3.2. Statikus elemzés
3.2.1. Statikus elemzés csak a forráskód alapján
3.2.2. Statikus elemzés a forráskód és modell alapján
4. Teszt tervezési technikák
4.1. Alapfogalmak
4.1.1. Tesztelés alanya (test condition)
4.1.2. Teszteset
4.1.3. Teszt specifikáció
4.1.4. Tesztkészlet
4.1.5. Hibamodell
4.1.6. Teszt folyamat
4.1.7. Teszt lefedettség
4.2. A teszt tervezési technikák fajtái
4.3. Specifikáció alapú technikák
4.3.1. Ekvivalencia particionálás (Equivalence partitioning)
4.3.2. Határérték analízis (Boundary value analysis)
4.3.3. Ok-hatás analízis (Cause-effect analysis)
4.3.4. Véletlenszerű adatok generálása
4.3.5. Használati eset (use case) tesztelés
4.3.6. Az elvárt eredmény előállításának problémája
4.4. Struktúra alapú technikák
4.4.1. A struktúra alapú technikák alkalmazási területei
4.4.2. A vezérlési folyamat gráf
4.4.3. A strukturális tesztgenerálás lépései
4.4.4. Tesztminőségi mérőszámok
4.4.5. A struktúra alapú tesztek szerepe
4.5. Gyakorlat alapú technikák
4.5.1. Hiba becslés (Error guessing)
4.5.2. Felderítő tesztelés (Exploratory testing)
5. Integrációs tesztek
5.1. Integration Level Testing (ILT)
5.1.1. Integrációs stratégiák
5.2. System Level Testing (SLT)
5.2.1. Szolgáltatás tesztelés
5.2.2. Mennyiségi tesztelés
5.2.3. Terheléses tesztelés (Stressz-tesztelés)
5.2.4. Használhatósági tesztelés
5.2.5. Biztonsági tesztelés
5.2.6. Teljesítménytesztelés
5.2.7. Konfigurációtesztelés
5.2.8. Megbízhatósági tesztelés
5.2.9. Dokumentációtesztelés
5.3. User Acceptance Testing (UAT)
6. Biztonsági tesztelés
6.1. Működés ellehetetlenítése – Cache Mérgezés
6.2. Adatszerkezet támadás - Bináris forrás fájl túltöltése
6.2.1. Leírás
6.2.2. Példák
6.3. Kártékony kód beágyazása – Logikai/Időzített bomba
6.3.1. Leírás
6.3.2. Kockázati tényezők
6.4. Trójai
6.4.1. Leírás
6.4.2. A Trójai 7 fő típusa
6.4.3. Tünetek
6.4.4. Kockázati tényezők
6.5. Azonosítási folyamat kihasználása – Account kizárási támadás
6.5.1. Leírás
6.5.2. Például: eBay támadás
6.6. Befecskendezés – Közvetlen statikus kód befecskendezése
6.6.1. Leírás
6.6.2. Példák
6.7. „Útkeresztezési támadás” (Path Traversal Attack)
6.7.1. Áttekintés
6.7.2. Leírás
6.7.3. Példák
6.7.4. „Abszolút útkeresztezés” (Absolute Path Traversal)
6.8. „Próbálgatásos technikák – Nyers Erő támadás” (Probabilistic Techniques - Brute force attack)
6.8.1. Leírás
6.8.2. Példák
6.9. „Protokol Manipuláció – http Válasz Elosztás” (Protocol Manipulation - Http Response Splitting)
6.9.1. Leírás
6.9.2. Példák
6.10. „Erőforrás kimerítés” (Resource Depletion - Asymmetric resource consumption (amplification))
6.10.1. Leírás
6.10.2. PÉLDÁK
6.11. „Erőforrás Manipuláció – Kémprogram” (Resource Manipulation – Spyware)
6.11.1. Leírás
6.11.2. Kockázati tényezők
6.12. „Szimatoló támadás – Hálózati Lehallgatás” (Sniffing Attacks - Network Eavesdropping)
6.12.1. Leírás
6.12.2. PÉLDÁK
6.13. „Átverés – oldalakon keresztüli kérelem hamisítás” (Spoofing - Cross-Site Request Forgery (CSRF))
6.13.1. Áttekintés
6.13.2. Vonatkozó biztonsági intézkedések
7. Teszt menedzsment
7.1. A tesztelés szervezeti keretei
7.2. A tesztmérnök és a tesztelő feladatai
7.2.1. A tesztelés résztvevői számára szükséges képességek
7.3. Teszt tervek, becslések és stratégiák
7.4. A tesztfolyamat ellenőrzése és követése
7.4.1. Teszt jegyzőkönyvek
7.4.2. Teszt folyamat ellenőrzése
7.5. Incidens menedzsment
7.6. Konfiguráció menedzsment
8. Tesztelés támogatás
8.1. JMeter
8.1.1. A JMeter telepítése és futtatása
8.1.2. Teszt eset fogalma, készítése és értelmezése JMeter segítségével
8.1.3. JMeter eszközök
8.1.4. Elosztott terheléses tesztelés
8.1.5. Teszt eredmények értelmezése
8.1.6. Mi a teendő a teljesítmény tesztelése után
8.1.7. Összefoglalás
9. Hibakövetés
9.1. Bugzilla
9.2. Mantis
10. Adatbázisok tesztelése
10.1. Adatbázis tesztelés sajátosságai
10.2. TDD alapú adatbázis fejlesztés
10.2.1. Fokozatos adatmodellezés
10.2.2. Visszirányú adatmodellezés
10.2.3. Verzió követés biztosítása
10.2.4. Adatbázis homokozók, munkakörnyezetek biztosítása
10.3. Adatbázis újratervezés folyamata
10.3.1. Séma elemek törlése
10.3.2. Új sémaelem felvitele
10.3.3. Védelmi tesztek
10.4. Adatbázis tesztelési segédprogramok
10.4.1. DBUnit tesztkörnyezet használata
10.4.2. TestComplete rendszer
10.4.3. DTM DB Stress rendszer
10.5. Kérdések
11. Esettanulmány
11.1. Bevezetés
11.2. Server oldal tesztelése
11.2.1. Egységteszt
11.2.2. Integrációs teszt (Cactus)
11.2.3. Jmeter teljesítmény teszt
11.2.4. Hudson rendszer
11.3. Kliens oldal tesztelése
11.3.1. Egységteszt

Az ábrák listája

9.1. A Bugzilla rendszer állapot gépe
9.2. A Mantis rendszer állapot gépe
9.3. Hiba rögzítése a Mantis rendszerben
9.4. Hibák listája
9.5. Egy hiba leírása
9.6. Egy konkrét hiba életútja
10.1. A TDD alapú fejlesztés lépései
10.2. Adatbázis változatok, homokozók
10.3. Felhasználói GUI tevékenységek naplózása
10.4. A DTM DBStress keretrendszer GUI elemei
11.1. A SZTAKI Openrtm kiterjesztésének felépítése
11.2. Grafikus szerkesztő rendszerünk főbb komponensei és kommunikácós csatornái
11.3. Tesztkészlet létrehozása Netbeans alatt
11.4. Egységtesztek generálása Netbeans segítségével
11.5. Egységteszt eredményének ablaka Netbeans alatt
11.6. Cactus Ecosystem felépítés
11.7. Cactus tesz metódus futtatásának folyamata
11.8. Cactus szervlet tesztünk eredménye a böngészőben
11.9. Egységteszt eredményének ablaka

A példák listája

11.1. A JUNIT teszt setUp() függvénye, ami kiolvassa a JVM paramétereket
11.2. Cactus szervletek beállítása Tomcat rendszerbe
11.3. Cactus szervletek beállítása Tomcat rendszerbe
11.4. Cactus servlet teszt eset osztály (részlet)
11.5. Cactus szervlet teszt futtatása
11.6. Cactus teszt futtatása futtatható alkalmazás formájában
11.7. Metainformációk megadásának módja a Fluit teszt eset függvényhez
11.8. A Fluit grafikus teszt futtató alkalmazásának kódja
11.9. Grafikus elem tesztelése Fluint segítségével
11.10. A mellékhatást megszüntetető tearDown metódus a Fluit rendszerben
11.11. Vezérlő tartalmának beállítása és ellenőrzése