- -5%
ebook Testowanie i jakość oprogramowania
Adam Roman
Wydawca:
Wydawnictwo Naukowe PWN
Rok wydania:
2015
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.
Spis treści ebooka Testowanie i jakość oprogramowania
Spis ilustracji XXVIISpis 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
Szczegóły ebooka Testowanie i jakość oprogramowania
- Wydawca:
- Wydawnictwo Naukowe PWN
- Rok wydania:
- 2015
- Typ publikacji:
- Ebook
- Język:
- polski
- Format:
- mobi,epub
- ISBN:
- 978-83-01-18392-9
- ISBN wersji papierowej:
- 978-83-01-18160-4
- Wydanie:
- 1
- Autorzy:
- Adam Roman
- Miejsce wydania:
- Warszawa
- Liczba Stron:
- 1126
Recenzje ebooka Testowanie i jakość oprogramowania
-
Reviews (0)
Na jakich urządzeniach mogę czytać ebooki?
Na czytnikach Kindle, PocketBook, Kobo i innych
Na komputerach stacjonarnych i laptopach
Na telefonach z systemem ANDROID lub iOS
Na wszystkich urządzeniach obsługujących format plików PDF, Mobi, EPub
- -5%
-5%
159,00 zł
151,25 zł
@CUSTOMER_NAME@
@COMMENT_TITLE@
@COMMENT_COMMENT@