Tytuł Testowanie i jakość oprogramowania Podtytuł Modele, techniki, narzędzia Autor Adam Roman Język polski Wydawnictwo Wydawnictwo Naukowe PWN ISBN 978-83-01-18392-9 kolekcja Testowanie oprogramowania w praktyce Rok wydania 2015 Warszawa Wydanie 1 liczba stron 1126 Format mobi, epub Spis treści Spis ilustracji XXVII Spis tabel XXXIV Spis listingów XXXIX Znaki handlowe XLI Wstęp XLIII CZĘŚĆ I. PODSTAWY TESTOWANIA 1 1. Wprowadzenie do testowania 3 1.1. Dlaczego testowanie jest niezbędne 3 1.2. Definicja testowania 4 1.3. Znane przykłady awarii oprogramowania 7 1.4. Rys historyczny 11 1.5. Ogólne zasady testowania 14 1.6. Jak dużo testować i kiedy skończyć? 18 1.7. Psychologia testowania 19 1.8. Kodeks etyczny testera 21 1.9. Role związane z testowaniem 22 2. Podstawowe definicje 25 3. Cykl testowy 32 3.1. Podstawowy proces testowy 33 3.1.1. Planowanie 34 3.1.2. Monitorowanie i nadzór 36 3.1.3. Analiza testów 36 3.1.4. Projektowanie testów 39 3.1.5. Implementacja testów 43 3.1.6. Wykonanie testów 46 3.1.7. Ocena spełnienia kryteriów wyjścia i raportowanie 49 3.1.8. Czynności zamykające testowanie 50 3.2. Cykl testowy wg ISO/IEC/IEEE 29119 52 4. Testowanie w cyklu życia oprogramowania 55 4.1. Modele wytwarzania oprogramowania 55 4.1.1. Model kaskadowy 56 4.1.2. Model V 57 4.1.3. Model W 58 4.1.4. Rational Unified Process (RUP) 59 4.1.5. Rapid Application Development (RAD) 60 4.1.6. Model spiralny Boehma 61 4.1.7. Metodyki zwinne 62 4.1.8. Metodologia Cleanroom 68 4.2. Weryfikacja i walidacja 70 4.3. Poziomy testów 72 4.3.1. Testy jednostkowe 73 4.3.2. Testy integracyjne 74 4.3.3. Testy systemowe 78 4.3.4. Testy akceptacyjne 79 4.3.5. Pozostałe stopnie testów 80 4.4. Typy testów 82 4.4.1. Testy praktyczne 83 4.4.2. Testy niefunkcjonalne 83 4.4.3. Testy strukturalne 84 4.4.4. Testy związane ze zmianami 85 4.5. Poziomy a typy testów 86 CZĘŚĆ II. TECHNIKI PROJEKTOWANIA TESTÓW 87 5. Testowanie oparte na modelu 89 5.1. Parametry prawidłowego modelu 89 5.2. Taksonomia modeli 91 5.3. Przykład użycia modelu 93 5.4. Modele działania oprogramowania 96 5.4.1. Graf przepływu sterowania 97 5.4.2. Ograniczenia w użytkowaniu grafu przepływu sterowania 102 5.4.3. Graf przepływu informacji 103 5.4.4. Ścieżki, ścieżki testowe i ścieżki nieosiągalne 105 6. Techniki testowania statycznego 107 6.1. Przeglądy 108 6.1.1. Proces dla testowania statycznego 110 6.1.2. Metody sprawdzania, a także realne wyniki przeglądu 111 6.1.3. Role 112 6.1.4. Aspekt psychologiczny przeglądów 113 6.1.5. Typy przeglądów 114 6.1.6. Biznesowa wartość przeglądów 123 6.1.7. Wdrażanie przeglądów 124 6.1.8. Kryteria sukcesu przeglądów 126 6.2. Analiza statyczna 127 6.2.1. Analiza przepływu sterowania 127 6.2.2. Poprawność sekwencji operacji 128 6.2.3. Analiza przepływu danych 130 6.2.4. Narzędzia do parsowania kodu 132 6.2.5. Testowanie zgodności ze standardami oprogramowania 134 6.2.6. Metryki złożoności kodu 134 6.2.7. Formalne dowodzenie poprawności 137 6.2.8. Symboliczne wykonywanie kodu 140 6.2.9 Analiza statyczna strony internetowej 143 6.2.10. Grafy wywołań 144 7. Analiza dynamiczna 149 7.1. Wykrywanie wycieków pamięci 151 7.2. Wykrywanie dzikich i wiszących wskaźników 152 7.3. Błędy API 153 7.4. Analiza produktywności (profiling) 154 8. Techniki oparte na specyfikacji (czarnoskrzynkowe) 158 8.1. Podział na klasy równoważności 159 8.1.1. Opis metody 159 8.1.2. Formalna definicja podziału 161 8.1.3. Poprawne i niepoprawne klasy równoważności 162 8.1.4. Procedura tworzenia przypadków testowych 163 8.1.5. Przykład 165 8.1.6. Przykład śledzenia artefaktów cyklu testowego 169 8.2. Analiza wartości brzegowych 171 8.2.1. Opis metody 171 8.2.2. Metody dwóch, a także trzech wartości granicznych 172 8.2.3. Które wartości rozważać jako brzegowe? 175 8.2.4. Przypadek zmiennych ciągłych 178 8.2.5. Przykład 178 8.3. Tablice decyzyjne 181 8.3.1. Opis metody 181 8.3.2. Wartości nieistotne i minimalizacja tablicy decyzyjnej 185 8.3.3. Przykład 189 8.4. Grafy przyczynowo-skutkowe 191 8.4.1. Opis metody 191 8.4.2. Przekształcanie pomiędzy grafami P-S i tablicami decyzyjnymi 194 8.4.3. Metoda śledzenia wstecznego – redukcja liczby testów 197 8.4.4. Przykład 201 8.5. Testowanie przejść pomiędzy stanami 202 8.5.1. Opis metody 202 8.5.2. Tablicaryczne reprezentacje przejść 206 8.5.3. Kryteria pokrycia dla maszyny stanowej 208 8.5.4. Diagram maszyny stanowej w UML 212 8.5.5. Przykład 213 8.6. Kategoria-podział (Category-Partition) 216 8.6.1. Opis metody 216 8.6.2. Przykład 217 8.7. Drzewa klasyfikacji 222 8.7.1. Opis metody 222 8.7.2. Budowa drzewa klasyfikacji 222 8.7.3. Asortyment produktów programowych i model cech 224 8.7.4. Przykład 227 8.8. Metody kombinacyjne 229 8.8.1. Opis metody 229 8.8.2. Each Choice 230 8.8.3. Base Choice 231 8.8.4. Multiple Base Choice 232 8.8.5. Pair-wise testing 233 8.8.6. Pokrycie n-tupletów (n-wise) 239 8.8.7. Pełne pokrycie kombinatoryczne 240 8.8.8. Subsumpcja kryteriów kombinacyjnych 240 8.9. Testowanie dziedziny 241 8.9.1. Opis metody 241 8.9.2. Hiperpłaszczyzny i podprzestrzenie 242 8.9.3. Wyznaczanie hiperpłaszczyzny poprzez punkty 243 8.9.4. Punkty IN, OUT, ON i OFF 244 8.9.5. Strategia IN-OUT dla testowania dziedziny 245 8.9.6. Strategia N-ON × M-OFF dla testowania wartości brzegowych 245 8.9.7. Ograniczenia nieliniowe 247 8.9.8. Przykład 248 8.10. Testowanie oparte na przypadkach użycia 251 8.10.1. Opis metody 251 8.10.2. Przykład 252 8.11. Testowanie oparte na scenariuszach 257 8.11.1. Opis metody 257 8.11.2. Przykład 257 8.12. Testowanie oparte na historyjkach użytkownika 262 8.12.1. Opis metody 262 8.12.2. Przykład 264 8.13. Testowanie losowe 266 8.13.1. Opis metody 266 8.13.2. Wady i mocne strony testowania losowego 266 8.13.3. Automatyzacja i problem wyroczni 267 8.13.4. Adaptive Random Testing (ART) 268 8.13.5. Losowanie informacji wejściowych 269 8.13.6. Przykład 270 8.14. Testowanie oparte na składni 272 8.14.1. Opis metody 272 8.14.2. Notacja Backusa–Naura (BNF) 273 8.14.3. Tworzenie przypadków testowych 274 8.14.4. Przykład 275 8.15. Testowanie CRUD 277 8.15.1. Opis metody 277 8.15.2. Zwiększenie metody 278 8.15.3. Przykład 280 8.16. Wybór i łączenie technik ze sobą 283 9. Techniki oparte na strukturze (białoskrzynkowe) 284 9.1. Testowanie instrukcji 285 9.1.1. Opis metody 285 9.1.2. Przykład 287 9.2. Testowanie gałęzi 289 9.2.1. Opis metody 289 9.2.2. Przykład 290 9.3. Testowanie decyzji 292 9.3.1. Opis metody 292 9.3.2. Testowanie decyzji a testowanie gałęzi 294 9.3.3. Przykład 295 9.4. Testowanie warunków 298 9.4.1. Opis metody 298 9.4.2. Przykład 300 9.5. Testowanie warunków/decyzji 301 9.5.1. Opis metody 301 9.5.2. Przykład 302 9.6. Testowanie wielokrotnych warunków 303 9.6.1. Opis metody 303 9.6.2. Zwarcie (semantyka short-circuit) 304 9.6.3. Nieosiągalne kompozycje warunków 305 9.6.4. Przykład 306 9.7. Testowanie warunków zasadniczych (MC/DC) 308 9.7.1. Opis metody 308 9.7.2. Dwa warianty kryterium MC/DC 309 9.7.3. Skorelowane a ścisłe pokrycie warunków stanowczych 311 9.7.4. Wyznaczanie wartości warunków pobocznych dla warunku znaczącego 313 9.7.5. Przykład 315 9.8. Pokrycie MUMCUT i kryteria z nim związane 317 9.8.1. Opis metody 317 9.8.2. Kryteria MUTP, MNFP, CUTPNFP i MUMCUT 317 9.8.3. Przykład 318 9.8.4. Zdolność metody MUMCUT do wykrywania określonych typów błędów 319 9.9. Testowanie pętli 320 9.9.1. Opis metody 320 9.9.2. Pętle zagnieżdżone 321 9.9.3. Testowanie wzorców pętli 321 9.9.4. Przykład 324 9.10. Liniowa sekwencja kodu i skok (LSKiS) 326 9.10.1. Opis metody 326 9.10.2. Przykład 328 9.10.3. LSKiS a DD-ścieżki i bloki podstawowe 330 9.11. Testowanie ścieżek pierwszych 332 9.11.1. Opis metody 332 9.11.2. Algorytm wyznaczania ścieżek pierwszych 334 9.11.3. Przykład 335 9.12. Analiza ścieżek 338 9.12.1. Wstęp 338 9.12.2. Testowanie wszelkich ścieżek 339 9.12.3. Ścieżki liniowo niezależne i testowanie ścieżek bazowych 339 9.12.4. Wyznaczanie ścieżek bazowych 343 9.12.5. Przykład 345 9.12.6. Inne kryteria pokrycia związane z testowaniem ścieżek 347 9.13. Testowanie przepływu informacji 348 9.13.1. Wstęp 348 9.13.2. Pokrycie wszystkich definicji (all-defs) 350 9.13.3. Pokrycie wszystkich zastosować (all-uses) 351 9.13.4. Pokrycie wszystkich du-ścieżek (all-du-paths) 351 9.13.5. Uwagi o kryteriach pokrycia przepływu danych 352 9.13.6. Przykład 352 9.14. Objazdy i ścieżki poboczne (detours, sidetrips) 356 9.15. Testowanie mutacyjne 357 9.15.1. Wstęp 357 9.15.2. Typy mutantów 361 9.15.3. Cykl testowania mutacyjnego 362 9.15.4. Operatory mutacyjne 363 9.16. Subsumpcja kryteriów 368 10. Techniki oparte na defektach i na doświadczeniu 369 10.1. Wstrzykiwanie błędów 370 10.2. Taksonomie 372 10.3. Zgadywanie błędów 375 10.3.1. Opis metody 375 10.3.2. Przykład 375 10.4. Testowanie oparte na liście kontrolnej 376 10.5. Testowanie eksploracyjne 377 10.5.1. Opis metody 377 10.5.2. Przykład sesji testowania eksploracyjnego 379 10.6. Ataki usterkowe 382 10.7. Testowanie ad hoc 384 11. Dobór stosownych technik 385 12. Priorytetyzacja przypadków testowych 388 12.1. Wprowadzenie 388 12.2. Ocena priorytetyzacji – miara APFD 389 12.3. Techniki priorytetyzacji 391 CZĘŚĆ III. TESTOWANIE CHARAKTERYSTYK JAKOŚCIOWYCH 393 13. Model jakości według ISO 9126 395 14. Modele jakości według ISO 25010 397 15. Testowanie jakości użytkowej 401 15.1. Testowanie skuteczności (effectiveness) 401 15.2. Testowanie wydajności (efficiency) 401 15.3. Testowanie satysfakcji (satisfaction) 402 15.3.1. Przydatność (usefulness) 402 15.3.2. Zaufanie (trust) 402 15.3.3. Przyjemność (pleasure) 403 15.3.4. Komfort (comfort) 403 15.4. Testowanie wolności od ryzyka (freedom from risk) 403 15.4.1. Ryzyko ekonomiczne (economic risk) 403 15.4.2. Ryzyko dotyczące zdrowia i bezpieczeństwa (health and safety risk) 404 15.4.3. Ryzyko związane ze środowiskiem (environmental risk) 404 15.5. Testowanie kontekstu użycia (context coverage) 404 15.5.1. Zupełność kontekstu (context completeness) 404 15.5.2. Elastyczność (flexibility) 405 16. Testowanie jakości artykułu 406 16.1. Testowanie funkcjonalnej przydatności (functional suitability) 406 16.1.1. Zupełność funkcjonalności (functional completeness) 407 16.1.2. Poprawność funkcjonalności (functional correctness) 407 16.1.3. Optymalność funkcjonalności (functional appropriateness) 408 16.2. Testowanie produktywności w działaniu (performance efficiency) 408 16.2.1. Zachowanie w czasie (time behaviour) 409 16.2.2. Zużycie zasobów (resource utilization) 409 16.2.3. Objętość (capacity) 410 16.2.4. Techniki testowania sprawności 410 16.3. Testowanie zgodności (compatibility) 413 16.3.1. Współistnienie (co-existence) 413 16.3.2. Współdziałanie (interoperability) 414 16.3.3. Przykład 414 16.4. Testowanie funkcjonalności (usability) 415 16.4.1. Zrozumiałość (appropriateness recognizability) 417 16.4.2. Łatwość nauki (learnability) 418 16.4.3. Łatwość wykorzystania (operability) 418 16.4.4. Ochrona przed błędami użytkownika (user error protection) 418 16.4.5. Estetyka interfejsu użytkownika (user interface aesthetics) 419 16.4.6. Dostęp (accessibility) 419 16.5. Heurystyki dotyczące funkcjonalności 420 16.5.1. Heurystyki Nielsena 420 16.5.2. Laboratorium badania użyteczności (usability lab) 426 16.6. Testowanie niezawodności (reliability) 428 16.6.1. Dojrzałość (maturity) 429 16.6.2. Niepodatność na błędy (fault tolerance, robustness) 431 16.6.3. Odtwarzalność (recoverability) 431 16.6.4. Dostępność (availability) 432 16.7. Testowanie zabezpieczeń (security) 432 16.7.1. Prywatność (confidentiality) 433 16.7.2. Niepodzielność (integrity) 433 16.7.3. Niezaprzeczalność (non-repudiation) 433 16.7.4. Odpowiedzialność (accountability) 433 16.7.5. Uwierzytelnianie (authenticity) 434 16.8. Testowanie pielęgnowalności (maintainability) 434 16.8.1. Modularność (modularity) 434 16.8.2. Powtórne zastosowanie (reusability) 436 16.8.3. Analizowalność (analyzability) 436 16.8.4. Modyfikowalność (modifiability) 437 16.8.5. Testowalność (testability) 437 16.9. Testowanie przenaszalności (portability) 440 16.9.1. Adaptowalność (adaptability) 440 16.9.2. Instalowalność (installability) 441 16.9.3. Zastępowalność (replaceability) 442 17. Testowanie jakości danych 443 17.1. Model jakości informacji 443 17.2. Charakterystyki inherentne 444 17.2.1. Dokładność (accuracy) 444 17.2.2. Zupełność (completeness) 445 17.2.3. Spójność (consistency) 446 17.2.4. Wiarygodność (credibility) 446 17.2.5. Aktualność (currentness) 446 17.3. Charakterystyki inherentne i zależne od systemu 447 17.3.1. Dostępność (accessibility) 447 17.3.2. Zgodność (compliance) 447 17.3.3. Poufność (confidentiality) 448 17.3.4. Sprawność (efficiency) 448 17.3.5. Precyzja (precision) 449 17.3.6. Identyfikowalność (traceability) 449 17.3.7. Zrozumiałość (understandability) 450 17.4. Charakterystyki zależne od systemu 450 17.4.1. Dostępność (availability) 450 17.4.2. Przenaszalność (portability) 450 17.4.3. Odtwarzalność (recoverability) 450 CZĘŚĆ IV. ZARZĄDZANIE TESTOWANIEM 453 18. Zarządzanie testowaniem w kontekście 455 18.1. Kontekst ograniczeń projektowych 456 18.2. Kontekst interesariuszy procesu testowego 456 18.3. Kontekst produkcji oprogramowania 458 18.4. Kontekst cyklu życia oprogramowania 460 18.5. Kontekst testów 460 18.6. Kontekst czynnika ludzkiego 461 19. Testowanie oparte na ryzyku 462 19.1. Czym jest ryzyko? 463 19.2. Mocne strony testowania opartego na ryzyku 466 19.3. Typy ryzyka 468 19.4. Zarządzanie ryzykiem w procesu życia 469 19.5. Identyfikacja ryzyka 471 19.5.1. Analiza interesariuszy (stakeholder analysis) 471 19.5.2. Technologia „władza versus zainteresowanie" 473 19.5.3. Techniki identyfikacji ryzyk 474 19.5.4. Przykłady ryzyk produktowych 476 19.6. Analiza ryzyka 478 19.6.1. Klasyfikacja ryzyk 478 19.6.2. Czynniki wpływające na prawdopodobieństwo i wpływ ryzyka 479 19.6.3. Ilościowa i jakościowa ocena ryzyka produktowego 480 19.6.4. Osiąganie konsensusu w procesie decyzyjnym 481 19.6.5. Priorytetyzacja ryzyk 482 19.7. Łagodzenie ryzyka 484 19.7.1. Sposoby łagodzenia ryzyka 484 19.7.2. Łagodzenie ryzyka poprzez testowanie 485 19.7.3. Estymacja kosztów łagodzenia ryzyka 487 19.8. Monitorowanie ryzyka 489 19.8.1. Macierz identyfikowalności ryzyk 490 19.8.2. Aktualizacja ryzyk i ich parametrów 491 19.8.3. Raportowanie 492 19.9. Techniki analizy ryzyka 493 19.9.1. PRAM (Pragmatic Risk Analysis and Management) 494 19.9.2. SST (Systematic Software Testing) 496 19.9.3. Przykład: użycie SST do systemu ELROJ 499 19.9.4. PRisMa (Product Risk Management) 500 19.9.5. Przykład: wykorzystanie PRisMa do systemu ELROJ 508 19.9.6. Analiza zagrożeń (hazard analysis) 511 19.9.7. Koszt ekspozycji ryzyka (cost of exposure) 513 19.9.8. FMEA (Failure Mode and Effect Analysis) 515 19.9.9. Przykład: użycie FMEA do systemu ELROJ 517 19.9.10. QFD (Quality Function Deployment) 518 19.9.11. Przykład: wykorzystanie QFD do systemu ELROJ 521 19.9.12. FTA (Fault Tree Analysis) 523 19.9.13. Przykład: użycie FTA do systemu ELROJ 527 19.10. TMap (Test Management Approach) 529 19.11. TestGoal – testowanie oparte na wynikach 530 20. Pozostałe strategie testowania 533 20.1. Testowanie oparte na oczekiwaniach 533 20.1.1. Testowanie wymagań 534 20.1.2. Projektowanie testów opartych na kryteriach 537 20.1.3. Przykład: obliczanie punktacji w grze w kręgle 538 20.2. Podejście oparte na modelu (profile operacyjne) 540 20.3. Podejście metodyczne (listy kontrolne) 542 20.4. Podejście oparte na standardzie 543 20.5. Inne podejścia 545 20.5.1. Podejście reaktywne 545 20.5.2. Podejście good enough 546 20.5.3. Podejście konsultacyjne 546 21. Dokumentacja w zarządzaniu testowaniem 547 21.1. Dokumenty organizacyjnego cyklu testowego 550 21.1.1. Polityka testów 550 21.1.2. Przykład polityki testów 551 21.1.3. Organizacyjna strategia testowania 553 21.1.4. Przykład organizacyjnej strategii testowania 555 21.2. Dokumenty procesu zarządzania testowaniem 558 21.2.1. Plan testów (test plan) 558 21.2.2. Przykład planu testów 560 21.2.3. Jednopoziomowy plan testów (level test plan) 566 21.2.4. Przykład jednopoziomowego planu testów 568 21.2.5. Raport o stanie testów (test status report) 571 21.2.6. Przykład raportu o stanie testów 571 21.2.7. Raport końcowy z testowania (test completion report) 572 21.2.8. Przykład raportu końcowego z testowania 573 21.3. Dokumenty dynamicznych procesów testowych 574 21.3.1. Specyfikacja testów (test design specification) 574 21.3.2. Przykład specyfikacji testów 575 21.3.3. Specyfikacja przypadku testowego (test case specification) 576 21.3.4. Przykład specyfikacji przypadku testowego 577 21.3.5. Specyfikacja procedury testowej (test procedure specification) 577 21.3.6. Przykład specyfikacji procedury testowej 578 21.3.7. Oczekiwania co do informacji testowych (test data requirements) 579 21.3.8. Przykład wymagania co do danych testowych 580 21.3.9. Wymogi co do środowiska testowego (test environment requirements) 581 21.3.10. Przykład wymagań co do środowiska testowego 582 21.3.11. Raport o gotowości danych testowych (test data readiness report) 583 21.3.12. Raport o gotowości środowiska testowego (test environment readiness report) 583 21.3.13. Otrzymane wyniki (actual results) 583 21.3.14. Wynik testu (test result) 583 21.3.15. Dziennik wykonania testów (test execution log) 584 21.3.16. Raport o incydencie (test incident report) 584 21.3.17. Raport z sesji testowania eksploracyjnego (exploratory testing session report) 585 21.3.18. Przykład raportu z sesji testowania eksploracyjnego 585 22. Szacowanie testów 587 22.1. Czynniki wpływające na szacowanie 588 22.2. Techniki szacowania 590 22.2.1. Intuicja, zgadywanie, doświadczenie 590 22.2.2. Estymacja poprzez analogię 591 22.2.3. Struktura podziału prac (Work Breakdown Structure, WBS) 591 22.2.4. Estymacja grupowa 592 22.2.5. Informacje przemysłowe 593 22.2.6. Analiza punktów testowych (Test Point Analysis) 594 22.2.7. Modele matematyczne (cechyczne) 599 22.3. Negocjacje i redukcja zakresu testów 599 23. Nadzór i kontrola postępu testów 601 23.1. Wprowadzenie 601 23.2. Przykłady metryk 604 23.2.1. Metryki ryzyka produktowego 605 23.2.2. Metryki defektów 605 23.2.3. Metryki przypadków testowych 608 23.2.4. Metryki pokrycia 609 23.2.5. Metryki pewności 610 23.3. Zarządzanie testowaniem opartym na sesji 611 24. Biznesowa wartość testowania 613 24.1. Wprowadzenie 613 24.2. Koszt jakości 614 24.3. Wartość ekonomiczna oprogramowania i problemy z nią związane 617 24.4. Dług techniczny w kontekście testowania 618 25. Testowanie rozproszone, zakontraktowane i zewnętrzne 620 25.1. Zespoły w ramach organizacji 621 25.2. Zespoły w ramach innych oddziałów organizacji 622 25.3. Dostawcy sprzętu i oprogramowania 623 25.4. Dostawcy usług testowych 623 25.5. TaaS (Testing as a Service) 623 26. Zarządzanie wdrażaniem standardów przemysłowych 626 27. Zarządzanie incydentami 627 27.1. Cykl życia defektu 628 27.2. Atrybuty defektu i ODC 630 27.2.1. Parametry defektów 630 27.2.2. ODC (Orthogonal Defect Classification) 630 27.2.3. Przykładowe analizy przy użyciu ODC 631 27.3. Metryki zarządzania incydentami 633 27.4. Zawartość raportu o incydencie 635 27.5. Komunikowanie incydentów 636 CZĘŚĆ V. LUDZIE I NARZĘDZIA 637 28. Ludzie i ich kompetencje – tworzenie zespołu 639 28.1. Budowanie zespołu testowego 640 28.1.1. Opis stanowiska 641 28.1.2. Analiza CV 643 28.1.3. Rozmowa kwalifikacyjna 643 28.1.4. Asymilacja nowego członka zespołu 646 28.1.5. Zakończenie zatrudnienia 646 28.2. Rozwój zespołu testowego 647 28.2.1. Jednostkowy rozwój poszczególnych członków zespołu 647 28.2.2. Wyznaczanie celów 648 28.2.3. Dynamika zespołu testowego 649 28.2.4. Określanie ról i odpowiedzialności 651 28.2.5. Umiejętności zespołu jako całości: gap analysis 652 28.2.6. Jednostkowe osobowości i role w zespole 654 28.2.7. Rozwój umiejętności i szkolenia 657 28.2.8. Mentoring 658 28.2.9. Okresowa ocena członków zespołu 658 28.3. Przywództwo 659 28.3.1. Zarządzanie a przywództwo 659 28.3.2. Model zmiany według Satir 659 28.3.3. Atrybuty charakteru lidera i zasady przywództwa 660 28.3.4. Informowanie i komunikacja 661 28.3.5. Lojalność, zaufanie i odpowiedzialność 662 28.3.6. Budowanie zespołu 662 28.4. Stopnie niezależności zespołu testowego 662 28.5. Komunikacja 664 29. Techniki pracy grupowej 665 29.1. Cykl podejmowania decyzji 666 29.2. Techniki wspomagania kreatywności 666 29.2.1. Burza mózgów 666 29.2.2. NGT (Nominal Group Technique) 667 29.2.3. Metoda analogii 668 29.2.4. JAD (Joint Application Development) 668 29.3. Techniki porządkowania i priorytetyzacji 668 29.3.1. Diagram podobieństwa (affinity diagram) 668 29.3.2. Macierz i graf priorytetyzacji 669 29.3.3. Mapa myśli 671 29.4. Techniki szacowania i oceny 671 29.4.1. Wielokrotne głosowanie 671 29.4.2. Metoda delficka i Wideband Delphi 672 29.4.3. Poker planistyczny (planning poker) 675 29.4.4. Model Saaty’ego (Analytic Hierarchy Process) 676 29.5. Definiowanie problemu, przyczyny źródłowej albo możliwości 678 29.5.1. Analiza pola sił (force field analysis) 678 29.5.2. Immersja 679 29.5.3. Diagram rybiej ości (diagram Ishikawy) 680 30. Testowanie wspierane narzędziami 682 30.1. Podstawowe zagadnienia związane z zastosowaniem narzędzi 683 30.1.1. Dobór adekwatnego narzędzia 684 30.1.2. Koszty wdrożenia narzędzia 685 30.1.3. Ryzyka związane z wdrożeniem narzędzia 686 30.1.4. Korzyści z wdrożenia narzędzia 687 30.1.5. Strategie wdrażania automatyzacji 688 30.1.6. Integracja i podmiana informacji między narzędziami 688 30.1.7. Klasyfikacja narzędzi testowych 689 30.2. Automatyzacja testów 691 30.2.1. Czynniki sukcesu udanej automatyzacji 691 30.2.2. Metryki dla automatyzacji testów 692 30.3. Generyczna architektura automatyzacji testów 693 30.3.1. Warstwa generowania testów 695 30.3.2. Warstwa definiowania testów 695 30.3.3. Warstwa wykonania testów 695 30.3.4. Warstwa adaptacji testów 696 30.3.5. Zarządzanie konfiguracją 696 30.4. Samoczynna generacja danych testowych 697 30.5. Metody i techniki automatyzacji testów 699 30.5.1. Kroki cyklu projektowania architektury 699 30.5.2. Podejścia do automatyzacji przypadków testowych 703 30.5.3. Podejście nagraj i odtwórz 704 30.5.4. Skrypty linearne 708 30.5.5. Skrypty zorganizowane 711 30.5.6. Testowanie oparte na informacji 713 30.5.7. Testowanie oparte na słowach kluczowych 715 30.5.8. Testowanie oparte na procesie 719 30.5.9. Testowanie oparte na modelu 721 30.5.10. Języki i notacje dla definicji testów 722 30.6. Katalog narzędzi testowych 729 30.6.1. Narzędzia do zarządzania testami 730 30.6.2. Narzędzia do realizowania/organizacji testów 730 30.6.3. Narzędzia do testowania mutacyjnego, posiewu usterek i wstrzykiwania błędów 731 30.6.4. Narzędzia do testów bezpieczeństwa 731 30.6.5. Symulatory i emulatory 731 30.6.6. Narzędzia do analizy statycznej i dynamicznej 732 30.6.7. Narzędzia do testów sprawnościowych 733 30.6.8. Narzędzia rodzaju capture & replay 733 30.6.9. Narzędzia do testów jednostkowych 733 30.6.10. Testowanie w metodyce BDD 734 30.6.11. Narzędzia dla testowania opartego na modelu 735 30.6.12. Narzędzia do śledzenia defektów, zarządzania incydentami i raportowania 735 30.7. Wdrażanie narzędzi w organizacji 736 30.7.1. Proces życia narzędzia 736 30.7.2. Zastosowanie narzędzi open source 736 30.7.3. Przykładowe problemy związane z użyciem narzędzi 738 CZĘŚĆ VI. PolepszaNIE cyklu TESTOWEGO 739 31. Kontekst poprawiania procesu 741 31.1. Po co poprawiać? 741 31.2. Co można udoskonalić? 743 31.3. Spojrzenia na jakość 745 31.3.1. Jakość oparta na produkcie 745 31.3.2. Jakość oparta na użytkowniku 745 31.3.3. Jakość oparta na wytwarzaniu 746 31.3.4. Jakość oparta na wartości 746 31.3.5. Jakość transcendentna 746 31.4. Generyczny cykl udoskonalania 747 31.4.1. Cykl Deminga–Shewarta (PDCA) 747 31.4.2. IDEAL 749 31.4.3. Podstawowe zasady doskonałości (Fundamental Concepts of Excellence) 751 31.5. Przegląd podejść do udoskonalania 752 31.5.1. Podejścia oparte na modelu 752 31.5.2. Podejścia analityczne 755 31.5.3. Podejścia hybrydowe 755 31.5.4. Inne podejścia do poprawiania cyklu testowego 755 32. Udoskonalanie oparte na modelu 758 32.1. Wprowadzenie 758 32.2. Polepszanie procesów organizacyjnych i biznesowych 759 32.2.1. TQM (Total Quality Management) 760 32.2.2. ISO 9000 761 32.2.3. EFQM Excellence Model 761 32.2.4. Six Sigma 762 32.2.5. Lean 763 32.3. Poprawianie cyklu produkcji oprogramowania 764 32.3.1. CMMI 764 32.3.2. ISO/IEC 15504 766 32.3.3. ITIL (Information Technology Infrastructure Library) 766 32.3.4. TSP (Team Software Process) 767 32.3.5. BOOTSTRAP 767 32.4. Ulepszanie cyklu testowego – modele referencyjne cyklu 768 32.4.1. TPI Next (Test Process Improvement) 768 32.4.2. TMMi (Test Maturity Model integration) 776 32.4.3. Porównanie TPI Next i TMMi 786 32.5. Polepszanie cyklu testowego – modele referencyjne zawartości 786 32.5.1. STEP (Systematic Test and Evaluation Process) 786 32.5.2. CTP (Critical Testing Processes) 790 33. Podejście analityczne 792 33.1. Wprowadzenie 792 33.2. Analiza przyczynowa 792 33.2.1. Opis metody 792 33.2.2. Wybór składników do analizy przyczynowej 793 33.2.3. Zebranie i zorganizowanie danych 801 33.2.4. Identyfikacja przyczyny źródłowej poprzez analizę skategoryzowanych informacji 802 33.2.5. Wyciągnięcie wniosków 803 33.3. Podejście GQM (Goal–Question–Metric) 804 33.3.1. Opis metody 804 33.3.2. Fazy GQM 804 33.3.3. Dwa paradygmaty metody GQM 805 33.3.4. Wzorzec definiowania celu 807 33.3.5. Siedem pytań 807 33.3.6. Przykład 808 33.4. Miary, metryki i wskaźniki 809 34. Wybór metody usprawniania 810 35. Proces poprawiania 812 35.1. Wprowadzenie 812 35.2. Rozpoczęcie cyklu doskonalenia 813 35.2.1. Określenie powodu doskonalenia (stymulacja do zmiany) 813 35.2.2. Ustanowienie celów dla doskonalenia testowania 814 35.2.3. Określenie kontekstu 817 35.2.4. Pozyskanie wsparcia 818 35.2.5. Stworzenie infrastruktury dla cyklu poprawiania 818 35.3. Diagnozowanie aktualnej sytuacji 819 35.3.1. Scharakteryzowanie obecnego, a także pożądanego stanu cyklu 819 35.3.2. Rekomendacje akcji naprawczych 821 35.4. Ustanowienie planu doskonalenia cyklu testowego 821 35.4.1. Ustanowienie priorytetów dla wdrażania planu doskonalenia 821 35.4.2. Opracowanie podejścia do wdrożenia 822 35.4.3. Zaplanowanie działań związanych z wdrożeniem 823 35.5. Działanie w celu wdrożenia udoskonaleń 823 35.5.1. Stworzenie rozwiązania 824 35.5.2. Rozwiązania pilotażowe/testowe 824 35.5.3. Doprecyzowanie rozwiązania 825 35.5.4. Zaimplementowanie rozwiązania 825 35.6. Wydobywanie wniosków z projektu doskonalenia testów 825 35.6.1. Analiza i weryfikacja przeprowadzonych działań 825 35.6.2. Propozycje przyszłych rozwiązań 826 36. Organizacja, role i umiejętności 827 36.1. Organizacja 827 36.1.1. Zakres działań GPT 827 36.1.2. Organizacja Grupy cyklu testowego 828 36.1.3. Cechy Grupy cyklu testowego 829 36.2. Role i umiejętności 829 36.2.1. Doskonalący cykl testowy 829 36.2.2. Główny oceniający 831 36.2.3. Oceniający 831 36.2.4. Umiejętności doskonalącego proces testowy 832 37. Czynniki sukcesu 835 CZĘŚĆ VII. JAKOŚĆ OPROGRAMOWANIA 837 38. Czym jest jakość oprogramowania? 839 38.1. Testowanie oprogramowania a jakość oprogramowania 839 38.2. Model Kano 840 38.3. Dojrzałość cyklu i standardy jakości 841 38.3.1. SPR 842 38.3.2. Ocena Malcolma Baldridge’a 843 38.4. Co mierzyć, jak mierzyć i po co mierzyć? 843 39. Podstawy teorii pomiarów 845 39.1. Metryka, miara, wskaźnik, pomiar 845 39.2. Skale pomiarowe 847 39.2.1. Skala nominalna 847 39.2.2. Skala porządkowa 848 39.2.3. Skala interwałowa 849 39.2.4. Skala stosunkowa 849 39.2.5. Podsumowanie rodzajów skal pomiarowych 849 39.3. Typy metryk 850 39.3.1. Metryka bezpośrednia (podstawowa) 850 39.3.2. Suma/różnica 850 39.3.3. Stosunek 850 39.3.4. Proporcja 851 39.3.5. Odsetek 851 39.3.6. Miary iloczynowe 851 39.3.7. Tempo 852 39.4. Spójność i stosownieść pomiaru 852 39.5. Błędy pomiarowe 854 39.6. Podstawowe zasady analizy informacji 855 39.6.1. Miary tendencji centralnej 855 39.6.2. Miary rozproszenia 857 39.6.3. Korelacja i regresja liniowa 858 39.6.4. Przyczynowość 863 40. Narzędzia kontroli jakości 865 40.1. Klasyfikacja narzędzi 865 40.2. Typy narzędzi oraz obszary ich zastosowań 866 40.3. Statystyczna kontrola procesu 866 40.3.1. Wykres przebiegu 873 40.3.2. Karty kontrolne 874 40.4. Wykres czasu procesu 880 40.5. Narzędzia analizy i zapobiegania przyczynom źródłowym 880 40.5.1. 5 pytań „dlaczego?" i diagram „why–why" 881 40.5.2. Macierz „jest–nie jest" 882 40.5.3. Kaizen 883 40.5.4. Poka yoke 883 41. Metryki wielkości oprogramowania 885 41.1. Metryki wolumenowe 885 41.1.1. LOC 886 41.1.2. Współczynnik efektywności języka 888 41.1.3. Pomiar specyfikacji i projektu 889 41.2. Metryki funkcjonalności 890 41.2.1. Punkty funkcyjne 890 41.2.2. Punkty obiektowe i powiększone punkty obiektowe 897 41.2.3. Punkty cech 897 41.2.4. Punkty przypadków wykorzystania 898 42. Metryki charakterystyk jakościowych 901 42.1. Metryki dla funkcjonalności 901 42.2. Metryki dla niezawodności 902 42.3. Metryki dla ergonomiczności 903 42.4. Metryki dla produktywności 904 42.5. Metryki dla pielęgnowalności 905 42.6. Metryki dla przenaszalności 906 43. Metryki złożoności oprogramowania 907 43.1. Metryki Halsteada 907 43.2. Złożoność cyklomatyczna McCabe’a 909 43.2.1. Gęstość złożoności cyklomatycznej 911 43.2.2. ECC (Essential Cyclomatic Complexity) 911 43.3. Konstrukcje składniowe 914 43.4. Metryki struktur 914 43.5. Metryki złożoności systemu 915 43.5.1. Indeks utrzymywalności 915 43.5.2. Metryka złożoności systemu Agrestiego–Carda–Glassa 916 43.6. Metryki obiektowe 918 43.6.1. Metryki Lorenza 918 43.6.2. Metryki CK 918 43.7. Metryki złożoności dokumentacji 922 43.8. Metryki złożoności algorytmicznej 923 44. Metryki i modele wysiłku 924 44.1. Modele oparte na zgadywaniu i intuicji 925 44.2. Modele oparte na dekompozycji 925 44.3. Modele oparte na wiedzy eksperckiej 926 44.4. Modele oparte na benchmarkach 926 44.5. Modele oparte na porównaniu 928 44.5.1. Porównanie proste (naiwne) 928 44.5.2. Porównanie z uwzględnieniem różnic 929 44.6. Modele cechyczne 930 44.6.1. Tworzenie własnego modelu 932 44.6.2. Model COCOMO II 933 44.7. Łączenie modeli i uwagi na temat estymacji 936 45. Metryki i modele dla defektów 938 45.1. Natura defektów 940 45.2. Metryki defektów 941 45.3. Modele statyczne defektów 943 45.3.1. Model wprowadzania/usuwania defektów 943 45.3.2. Model fazowy 945 45.3.3. Model dwufazowy 946 45.3.4. Efektywność usuwania defektów i powstrzymanie fazowe 947 45.3.5. Modele zmian w kodzie 951 45.4. Modele dynamiczne defektów 953 45.4.1. Model Rayleigha 953 45.4.2. Model wykładniczy i S-kształtny 961 45.4.3. Model COQUALMO 962 45.5. Analiza mutacyjna 964 45.6. Metryki dynamicznej stylometrii 965 46. Metryki i modele przyrostu niezawodności 967 46.1. Wprowadzenie 967 46.2. Matematyczne podstawy teorii niezawodności 970 46.2.1. Funkcja bezawaryjności i funkcja awarii 970 46.2.2. Metryka MTTF (średniego czasu do awarii) 970 46.2.3. Rozkłady prawdopodobieństwa formujące występowanie awarii 971 46.2.4. Rozkład wykładniczy i jego związek z metryką MTTF 971 46.2.5. Funkcja częstości awarii, a także ryzyko (hazard rate) 972 46.2.6. Prawdopodobieństwo awarii do czasu t 973 46.3. Modele przyrostu niezawodności 974 46.3.1. Model Jelinskiego–Morandy 975 46.3.2. Model niedoskonałego debugowania Goela–Okumoto 979 46.3.3. Niejednorodny model procesu Poissona Goela–Okumoto 979 46.3.4. Logarytmiczny model Poissona czasu wykonywania Musy–Okumoto 980 46.3.5. Model S-kształtny 981 46.3.6. Inne modele niezawodności 981 47. Metryki i modele dostępności 983 47.1. Dostępność 983 47.1.1. Dostępność ciągła a przystępność wysoka 984 47.1.2. Metody powiększające przystępność systemu 985 47.1.3. Ilościowa miara przystępności i jej obliczanie 986 47.2. Odmładzanie oprogramowania 987 47.2.1. Powody degradacji i sposoby odmładzania oprogramowania 987 47.2.2. Wpływ odmładzania na przystępność systemu 988 48. Metryki dla cyklu testowego 990 49. Metryki zadowolenia klienta 994 49.1. Cykl pomiaru zadowolenia klienta 994 49.1.1. Wybór metody i sposobu przeprowadzenia badania 994 49.1.2. Opracowanie ankiety/kwestionariusza albo innego narzędzia badań 996 49.1.3. Dobór metody próbkowania 996 49.1.4. Wybór rozmiaru próby 997 49.1.5. Zebranie, opracowanie i analiza informacji 999 49.2. Dział wsparcia klienta 1001 50. Sposób prezentowania informacji 1003 50.1. Prezentowanie danych graficznych 1003 50.2. Prezentowanie metryk 1006 Dodatek A. Specyfikacja programu ELROJ 1009 Dodatek B. Normy i standardy 1013 Dodatek C. Matematyczny i teoretyczno-informatyczny 1017 Dodatek D. Informacja o certyfikacji i egzaminach 1029 Bibliografia 1031 Skorowidz 1047