Spis treúci WstÍp... 9 Praktyka czy teoria?... 9 PrzypowieúÊ... 9 Czy gorsze moøe byê lepsze?... 10 Czy stolarz zatrudni testera?... 11 ZawÛd ñ tester oprogramowania... 12 Juø staroøytni GrecyÖ... 12 Miliardy, ktûre posz y z dymem... 13 Nie trzeba katastrofy... 13 Jak to sprzedaê?... 14 Komu bije test?... 15 Dla kogo jest przeznaczona ta ksiπøka?... 15 PodziÍkowania... 17 1. Testowanie w cyklu øycia... 19 1.1. Czynnoúci... 20 1.2. Procesy... 23 1.3. Etapy testowania... 26 1.3.1. Poziomy i fazy testowania... 27 1.3.2. Test w rûønych modelach wytwarzania programûw... 27 1.3.3. Model kaskadowy... 28 1.3.4. Model V i model W... 29 1.3.5. Modele ewolucyjne... 30 1.3.6. Modele przyrostowe... 31 1.3.7. Weryfikacja wymagaò... 32 1.3.8. Weryfikacja projektu konstrukcji... 33 1.3.9. Ocena kodu... 34 1.3.10. Testowanie kodu... 36 1.4. Poziomy i typy testûw... 37 1.4.1. Dlaczego testujemy kilkakrotnie... 38 1.4.2. WybÛr liczby poziomûw testowania... 38 1.5. Wykrywanie b ÍdÛw... 46 1.6. Model testowania... 48
4 Teoria i praktyka testowania programûw 2. Modele dzia ania programu... 53 2.1. Przep yw sterowania... 57 2.2. Zdarzenia...63 2.3. Przep yw danych... 68 2.4. Tranzycje stanu... 74 2.5. Model sk adniowy... 78 2.6. Model decyzyjny... 85 2.7. Model aksjomatyczny... 89 3. Modele b Ídu... 95 3.1. B Ídy w przep ywie sterowania... 96 3.1.1. B πd obliczenia úcieøki... 102 3.1.2. B πd domeny... 103 3.1.3. B πd braku úcieøki... 104 3.2. B Ídy w przep ywie danych... 106 3.2.1. B πd przypisania... 109 3.2.2. B πd wyznaczenia wartoúci... 111 3.3. B Ídy stanu... 112 3.3.1. Zakleszczenia... 113 3.3.2. Wyúcigi... 115 3.4. Anomalie tekstowe... 119 3.4.1. Interpretacja sk adni... 119 3.4.2. Efekty uboczne... 121 3.4.3. Niejawne konwersje typu... 122 3.4.4. Model programowania... 124 4. Modele úrodowiska... 127 4.1. Strumieniowe przetwarzanie sekwencyjne... 129 4.2. Przetwarzanie sekwencyjne sterowane zdarzeniami... 132 4.2.1. Przerwania... 133 4.2.2. Obs uga sytuacji wyjπtkowych... 137 4.3. Przetwarzanie wspû bieøne... 140 4.4. Przetwarzanie rûwnoleg e... 144 4.4.1. Zdarzenia jeden do jednego... 148 4.4.2. Zdarzenia wielu do jednego... 150 4.4.3. Zdarzenia jeden do wielu... 151 4.5. Przetwarzanie rozproszone... 153 4.5.1. Zarzπdzanie komunikatami... 155 4.5.2. Zarzπdzanie czasem... 156 5. Implementacja testu... 159 5.1. Dynamiczna instrumentacja kodu... 162 5.1.1. Zawieszanie wykonania... 164 5.1.2. Wznawianie wykonania... 168 5.1.3. Sygna y... 169
Spis treúci 5 5.1.4. Rejestrowanie danych... 170 5.1.5. Rejestrowanie zdarzeò... 172 5.1.6. Wymuszanie dzia ania programu... 173 5.2. Przypadek testowy... 174 5.2.1. Skrypt testowy... 174 5.2.2. Atrybuty przypadkûw testowych... 186 5.3. Scenariusz testowy... 195 5.3.1. Tryby wykonania... 197 5.3.2. Klasy scenariuszy... 200 6. Strategie testowania... 205 6.1. Strategie czarnej skrzynki... 206 6.1.1. Wartoúci specjalne... 208 6.1.2. Wartoúci transcendentne... 212 6.1.3. RÛwnowaønoúÊ wielomianûw... 215 6.1.4. Wartoúci losowe... 218 6.2. Strategie bia ej skrzynki... 225 6.2.1. Testowanie úcieøek... 226 6.2.2. Konteksty uøycia danych... 243 6.2.3. Testowanie mutacyjne... 248 7. Organizacja procesu testowania... 255 7.1. Testowanie w kontekúcie... 255 7.1.1. Zarzπdzanie testowaniem a zapewnienie jakoúci... 256 7.1.2. Zarzπdzanie testowaniem a zarzπdzanie projektem... 259 7.2. Proces testowy... 261 7.2.1. Testowanie przy braku zdefiniowanego procesu testowego... 263 7.2.2. Testowanie rûønymi metodami... 263 7.2.3. Testowanie Ñw poúpiechuî... 264 7.3. Rola kierownika i menedøera testûw... 267 7.3.1. Struktury organizacyjne... 268 7.3.2. Motywacja testerûw... 269 7.3.3. Kierownik testûw... 271 7.4. Planowanie testowania... 272 7.4.1. Okreúlenie zakresu... 273 7.4.2. Planowanie metodyki... 274 7.4.3. Planowanie kryteriûw zakoòczenia testûw... 275 7.4.4. Produkty... 276 7.4.5. Planowanie úrodowiska testowego... 277 7.4.6. Okreúlenie czynnoúci... 278 7.4.7. Planowanie czasu... 280 7.4.8. Oszacowanie kosztûw... 282 7.4.9. Oszacowanie ryzyka... 283 7.5. Dokumentacja testowa... 284 7.5.1. RÛøne struktury dokumentacji... 285
6 Teoria i praktyka testowania programûw 7.6. Testy wykonywane wielokrotnie... 292 7.6.1. Kiedy wykonuje sií testy regresji... 292 7.6.2. DobÛr testûw regresji... 293 7.6.3. Ograniczanie liczby testûw regresji... 294 7.6.4. Ograniczenie czasoch onnoúci wykonywania testûw regresji... 295 7.7. Zarzπdzanie zmianami... 297 7.7.1. Zarzπdzanie konfiguracjπ... 298 7.7.2. åledzenie powiπzaò miídzy wymaganiami a testami... 298 7.7.3. åledzenie b ÍdÛw... 299 7.7.4. TreúÊ zg oszenia b Ídu... 302 7.7.5. Zarzπdzanie b Ídami... 303 7.8. Zarzπdzanie testowaniem... 303 7.8.1. Liczba zg oszeò b ÍdÛw... 304 7.8.2. Liczba otwartych zg oszeò b ÍdÛw... 304 7.8.3. Liczba b ÍdÛw na podsystem... 305 7.8.4. Statystyka wykonanych testûw... 307 7.8.5. Oszacowanie liczby pozosta ych b ÍdÛw... 308 8. Zastosowania... 311 8.1. Automatyczne generowanie testûw na podstawie modeli UML... 313 8.1.1. Powiπzania miídzy specyfikacjπ w UML a dokumentacjπ planu testûw... 314 8.1.2. Zagadnienia automatycznej generacji testûw... 316 8.1.3. Generowanie testûw i wiarygodnoúê rezultatûw... 319 8.1.4. Specyfikacje dodatkowe, algorytmy i szablony do generowania testûw... 321 8.1.5. Projekt AGEDIS... 325 8.1.6. Profil testowy UML... 328 8.1.7. Perspektywa automatycznego wykonywania testûw i testowania opartego na modelach... 331 8.1.8. Ocena efektywnoúci automatycznego generowania testûw... 332 8.2. Testowanie zgodnoúci... 334 8.2.1. Zalecenia standardu ISO/IEC 13210... 336 8.2.2. Problem maskujπcych sií b ÍdÛw... 341 8.3. Testowanie i debugowanie rozproszonych aplikacji obiektowych... 344 8.3.1. Klasy b ÍdÛw w RAO... 344 8.3.2. NarzÍdzia i mechanizmy wspomagajπce testowanie RAO... 345 8.3.3. Wydajne programowanie... 346 8.3.4. Metoda TestByRep... 350 9. NarzÍdzia CAST... 359 9.1. Typy narzídzi wspomagajπcych testowanie... 361 9.1.1. Zarzπdzanie testami... 362 9.1.2. Zarzπdzanie zmianami... 363 9.1.3. Testy wymagaò... 366 9.1.4. Analiza statyczna... 368 9.1.5. Testy modu owe... 369 9.1.6. Testy wydajnoúci... 371
Spis treúci 7 9.2. Automatyczne wykonywanie testûw... 373 9.2.1. Automatyczne wykonywanie testûw: komparatory... 375 9.2.2. Sterowniki i jarzma testowe... 376 9.3. Analiza dynamiczna... 376 9.3.1. Przygotowanie danych testowych... 377 9.3.2. Testy statystyczne... 378 9.3.3. Generowanie testûw... 379 9.3.4. Zintegrowane úrodowisko testowe... 381 9.3.5. NarzÍdzia w rûønych fazach cyklu øycia... 384 9.3.6. Automatyzacja rûønych rodzajûw testûw... 387 9.4. Op acalnoúê, wybûr, wdroøenie... 388 9.4.1. Oszacowanie op acalnoúci... 388 9.4.2. Proces... 393 9.4.3. Architektura i utrzymanie skryptûw... 397 9.5. Testowanie systemûw wbudowanych... 401 9.5.1. Specyfika systemûw wbudowanych... 402 9.5.2. Sposoby kontroli przebiegu testûw systemu wbudowanego... 403 9.5.3. Techniki pomiaru pokrycia strukturalnego... 405 9.5.4. Automatyzacja testûw systemûw wbudowanych... 407 9.5.5. Testy produkcyjne... 408 9.5.6. Testowanie, gdy brak platformy sprzítowej... 408 9.5.7. Testowanie systemûw bezpiecznych... 409 10. Normy, standardy i szkolenia... 411 10.1. Testowanie w kontekúcie... 411 10.1.1. Testowanie w inøynierii systemûw... 411 10.1.2. Testowanie a zapewnienie jakoúci... 412 10.2. Terminologia testowa... 413 10.3. Organizacje standaryzujπce... 414 10.4. Testowanie w rûønych normach... 414 10.5. Udoskonalanie procesu testowego... 417 10.5.1. Metody oceny jakoúci procesu testowego... 418 10.6. Szkolenia, certyfikaty, organizacje... 420 10.6.1. Sens certyfikacji w przemyúle informatycznym... 420 10.6.2. Certyfikacja w dziedzinie zapewnienia jakoúci... 421 10.6.3. Popularne systemy certyfikacji... 423 10.7. Konferencje... 430 Literatura... 433 Skorowidz... 447