Testowanie i jakość oprogramowania

Modele, techniki, narzędzia

4 oceny

Autor:

Adam Roman

Format:

epub, mobi, ibuk

DODAJ DO ABONAMENTU

WYBIERZ RODZAJ DOSTĘPU

143,10  159,00

Format: epub, mobi

 

Dostęp online przez myIBUK

WYBIERZ DŁUGOŚĆ DOSTĘPU

Cena początkowa: 159,00 zł (-10%)

Najniższa cena z 30 dni: 79,50 zł  


143,10

w tym VAT

TA KSIĄŻKA JEST W ABONAMENCIE

Już od 24,90 zł miesięcznie za 5 ebooków!

WYBIERZ SWÓJ ABONAMENT

Testowanie oprogramowania, choć kluczowe dla powodzenia projektów IT, wciąż jest niedocenianą dziedziną inżynierii oprogramowania. Jednym z powodów jest brak rzetelnych i wiarygodnych źródeł informacji o tej dyscyplinie. Niniejsza pozycja stanowi nowoczesne, obszerne kompendium wiedzy w zakresie testowania i jakości oprogramowania. Wykorzystanie opisanych w książce metod pozwala na znaczne usprawnienie i profesjonalizację procesu testowego, czyniąc go bardziej efektywnym w znajdowaniu defektów. Podręcznik przeznaczony jest w szczególności dla: • początkujących testerów – aby mogli szybko zapoznać się z podstawami testowania, • zawodowych testerów – aby ugruntowali i poszerzyli swoją wiedzę o zaawansowane techniki testowania, • inżynierów jakości – aby nauczyli się skutecznie wykorzystywać wartościowe modele i narzędzia zapewniania jakości, • kierowników i menedżerów testów – aby poznali techniki sprawnego i efektywnego zarządzania procesem testowym w organizacji oraz metody jego doskonalenia, • osób przygotowujących się do egzaminów ISTQB na wszystkich poziomach (podstawowym, zaawansowanym i eksperckim) – aby otrzymali zwarte źródło materiałów pomocnych w nauce do egzaminu, • pracowników naukowych prowadzących badania lub zajęcia dydaktyczne w obszarze inżynierii jakości. Zaletą książki jest wiele praktycznych przykładów. Ilustrują one zastosowanie wprowadzonych metod i narzędzi m.in. w takich obszarach, jak: projektowanie testów, analiza ryzyka, dokumentowanie procesu testowego, zarządzanie zespołem testerów, automatyzacja testów, doskonalenie procesu testowego, raportowanie, pomiar i zapewnianie jakości oprogramowania. W wielu książkach poświęconych testowaniu fundamentalne pojęcia czy techniki często są wprowadzane w sposób niejasny, niedbały lub wręcz błędny. Autor niniejszej pozycji dołożył szczególnej staranności w precyzyjnym ich definiowaniu. Stają się przez to zrozumiałe dla czytelnika, a dzięki dobrze dobranym przykładom – łatwe do zastosowania w praktyce.


Rok wydania2015
Liczba stron1126
KategoriaProgramowanie
WydawcaWydawnictwo Naukowe PWN
ISBN-13978-83-01-18392-9
Numer wydania1
Język publikacjipolski
Informacja o sprzedawcyePWN sp. z o.o.

Ciekawe propozycje

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. Słynne 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. Proces 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 oraz raportowanie    49
  3.1.8. Czynności zamykające testowanie    50
  3.2. Proces 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 poziomy testów    80
  4.4. Typy testów    82
  4.4.1. Testy funkcjonalne    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. Cechy dobrego modelu    89
  5.2. Taksonomia modeli    91
  5.3. Przykład wykorzystania modelu    93
  5.4. Modele działania oprogramowania    96
  5.4.1. Graf przepływu sterowania    97
  5.4.2. Ograniczenia w stosowaniu grafu przepływu sterowania    102
  5.4.3. Graf przepływu danych    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 oraz możliwe 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 wydajnoś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 procesu testowego    169
  8.2. Analiza wartości brzegowych    171
  8.2.1. Opis metody    171
  8.2.2. Metody dwóch oraz 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 mię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ść między stanami    202
  8.5.1. Opis metody    202
  8.5.2. Tabelaryczne 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 przez 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 zalety testowania losowego    266
  8.13.3. Automatyzacja i problem wyroczni    267
  8.13.4. Adaptive Random Testing (ART)    268
  8.13.5. Losowanie danych 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. Rozszerzenie 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 kombinacje warunków    305
  9.6.4. Przykład    306
  9.7. Testowanie warunków znaczących (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 znaczących    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 oraz 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 wszystkich ś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 danych    348
  9.13.1. Wstęp    348
  9.13.2. Pokrycie wszystkich definicji (all-defs)    350
  9.13.3. Pokrycie wszystkich użyć (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. Rodzaje mutantów    361
  9.15.3. Proces 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. Wybór odpowiednich 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 efektywnoś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 produktu    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. Stosowność funkcjonalności (functional appropriateness)    408
  16.2. Testowanie wydajnoś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. Pojemność (capacity)    410
  16.2.4. Techniki testowania wydajnoś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 użyteczności (usability)    415
  16.4.1. Zrozumiałość (appropriateness recognizability)    417
  16.4.2. Łatwość nauki (learnability)    418
  16.4.3. Łatwość użycia (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 użytecznoś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. Odporność 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. Poufność (confidentiality)    433
  16.7.2. Integralność (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 użycie (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 danych    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. Wydajność (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. Zalety testowania opartego na ryzyku    466
  19.3. Rodzaje ryzyka    468
  19.4. Zarządzanie ryzykiem w cyklu życia    469
  19.5. Identyfikacja ryzyka    471
  19.5.1. Analiza interesariuszy (stakeholder analysis)    471
  19.5.2. Technika „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 przez 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 oraz 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: zastosowanie SST do systemu ELROJ    499
  19.9.4. PRisMa (Product Risk Management)    500
  19.9.5. Przykład: zastosowanie 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: zastosowanie FMEA do systemu ELROJ    517
  19.9.10. QFD (Quality Function Deployment)    518
  19.9.11. Przykład: zastosowanie QFD do systemu ELROJ    521
  19.9.12. FTA (Fault Tree Analysis)    523
  19.9.13. Przykład: zastosowanie 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 wymaganiach    533
  20.1.1. Testowanie wymagań    534
  20.1.2. Projektowanie testów opartych na wymaganiach    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 procesu 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. Wymagania co do danych testowych (test data requirements)    579
  21.3.8. Przykład wymagania co do danych testowych    580
  21.3.9. Wymagania 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 przez analogię    591
  22.2.3. Struktura podziału prac (Work Breakdown Structure, WBS)    591
  22.2.4. Estymacja grupowa    592
  22.2.5. Dane przemysłowe    593
  22.2.6. Analiza punktów testowych (Test Point Analysis)    594
  22.2.7. Modele matematyczne (parametryczne)    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 technologiczny 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. Atrybuty 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. Indywidualny 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. Indywidualne 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. Cechy 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. Poziomy niezależności zespołu testowego    662
  28.5. Komunikacja    664
  29. Techniki pracy grupowej    665
  29.1. Proces 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 lub 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 użyciem narzędzi    683
  30.1.1. Wybór odpowiedniego 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 wymiana 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. Automatyczna generacja danych testowych    697
  30.5. Metody i techniki automatyzacji testów    699
  30.5.1. Kroki procesu 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 danych    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 wykonywania/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 wydajnościowych    733
  30.6.8. Narzędzia typu 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. Cykl życia narzędzia    736
  30.7.2. Użycie narzędzi open source    736
  30.7.3. Przykładowe problemy związane z użyciem narzędzi    738
  
  CZĘŚĆ VI. UDOSKONALANIE PROCESU TESTOWEGO    739
  
  31. Kontekst udoskonalania procesu    741
  31.1. Po co udoskonalać?    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 proces 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 udoskonalania procesu testowego    755
  32. Udoskonalanie oparte na modelu    758
  32.1. Wprowadzenie    758
  32.2. Udoskonalanie 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. Udoskonalanie procesu 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. Udoskonalanie procesu testowego – modele referencyjne procesu    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. Udoskonalanie procesu 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 elementów do analizy przyczynowej    793
  33.2.3. Zebranie i zorganizowanie informacji    801
  33.2.4. Identyfikacja przyczyny źródłowej przez analizę zebranych 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 udoskonalania    812
  35.1. Wprowadzenie    812
  35.2. Rozpoczęcie procesu 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 procesu udoskonalania    818
  35.3. Diagnozowanie aktualnej sytuacji    819
  35.3.1. Scharakteryzowanie obecnego oraz pożądanego stanu procesu    819
  35.3.2. Rekomendacje akcji naprawczych    821
  35.4. Ustanowienie planu doskonalenia procesu 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. Wyciąganie 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 procesu testowego    828
  36.1.3. Właściwości Grupy procesu testowego    829
  36.2. Role i umiejętności    829
  36.2.1. Doskonalący proces 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ść procesu 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 odpowiedniość pomiaru    852
  39.5. Błędy pomiarowe    854
  39.6. Podstawowe zasady analizy danych    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. Rodzaje 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 cyklu    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 produktywnoś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 rozszerzone punkty obiektowe    897
  41.2.3. Punkty cech    897
  41.2.4. Punkty przypadków użycia    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 użyteczności    903
  42.4. Metryki dla wydajnoś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 parametryczne    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 niezawodności i funkcja awarii    970
  46.2.2. Metryka MTTF (średniego czasu do awarii)    970
  46.2.3. Rozkłady prawdopodobieństwa modelują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 oraz 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 dostępność wysoka     984
  47.1.2. Metody zwiększające dostępność systemu     985
  47.1.3. Ilościowa miara dostę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 dostępność systemu     988
  48. Metryki dla procesu testowego     990
  49. Metryki zadowolenia klienta     994
  49.1. Proces pomiaru zadowolenia klienta     994
  49.1.1. Wybór metody i sposobu przeprowadzenia badania     994
  49.1.2. Opracowanie ankiety/kwestionariusza lub innego narzędzia badań    996
  49.1.3. Wybór metody próbkowania     996
  49.1.4. Wybór rozmiaru próby     997
  49.1.5. Zebranie, opracowanie i analiza danych     999
  49.2. Dział wsparcia klienta     1001
  50. Sposób prezentowania danych     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
RozwińZwiń