Adam Roman
Testowanie i jakość oprogramowania. Modele, techniki, narzędzia
Wydawnictwo Naukowe PWN, 2015, xlvi+1100 pp.
ISBN 978-83-01-18160-4
Książkę tę napisałem, aby wypełnić lukę na rodzimym rynku literatury testerskiej. Polscy testerzy do tej pory nie mieli książki, która zbierałaby i przedstawiała w zrozumiały sposób współczesne osiągnięcia inżynierii jakości oprogramowania. Większość dostępnych pozycji albo traktuje o testowaniu wyrywkowo, skupiając się na niewielkim jego obszarze, albo dotyczy wykorzystania konkretnych narzędzi i technologii. Co więcej, testowanie oprogramowania to istna dżungla: pojęć, narzędzi, metod, podejść, technologii i paradygmatów. Bardzo łatwo się w tym gąszczu informacji zagubić. W istniejącej literaturze testerskiej wciąż panuje zamęt terminologiczny. Nawet w oficjalnych materiałach organizacji takich jak ISTQB można spotkać nieścisłości czy nawet błędy, co jest dosyć ironiczne biorąc pod uwagę, że testowanie powinno być precyzyjne i dokładne. Wielu autorów opisuje techniki projektowania testów ogólnikowo, często trywializując je i sprowadzając do banalnych przykładów. To sprawia (mylne!) wrażenie, że techniki te są bezużyteczne.
Niniejszy podręcznik jest próbą zaradzenia tym problemom. Ma być swego rodzaju przewodnikiem po rozległym (i grząskim) świecie testowania i jakości oprogramowania. Zawartość książki abstrahuje od konkretnych technologii czy aplikacji, choć w jednym z rozdziałów prezentowany jest bogaty katalog konkretnych narzędzi testowych. Zależało mi na tym, aby przede wszystkim skupić się na wyczerpującym, dokładnym i rzetelnym opisaniu podstaw tej - wbrew pozorom trudnej! - dziedziny. Dzięki temu wiedza prezentowana w książce jest uniwersalna. Podręcznik pozwala Czytelnikowi na spojrzenie na inżynierię jakości "z lotu ptaka", poznanie różnych jej obszarów oraz relacji pomiędzy nimi. Opisany materiał starałem się wyłożyć z jednej strony w sposób prosty i zrozumiały nawet dla początkującego testera, z drugiej - w sposób precyzyjny, formalny i wyczerpujący. Książka jest bogato ilustrowana przykładami, które pokazują praktyczne wykorzystanie opisanej teorii. W szczególności, w kontekście technik projektowania testów, podane są nietrywialne przykłady zastosowania tych technik.
Zobacz również: oferta Instytutu Informatyki UJ studiów podyplomowych z testowania.
Książka pisana była z myślą o szerokim gronie odbiorców. W szczególności przeznaczona jest dla:
Życzyłbym sobie, aby każdy Czytelnik, niezależnie od tego jaką rolę pełni w swojej organizacji, po przeczytaniu tej książki przekonał się do tego, że testowanie jest fascynującą dziedziną inżynierii oprogramowania, a bycie testerem może być wspaniałą przygodą. Chciałbym, aby miał świadomość tego jak ważną rolę pełni testowanie w procesie wytwarzania oprogramowania. I że najważniejszą cechą, jaką powinien posiadać tester nie jest znajomość technik, metod czy standardów, ale umiejętność zdroworozsądkowego MYŚLENIA.
Poniżej trochę statystyki typu "książka w liczbach":
Duża liczba umieszczonych na końcu książki, wartościowych pozycji bibliograficznych (książki, artykuły, dokumentacja, linki do stron) sprawia, że książka jest bardzo dobrym źródłem referencyjnym. Czytelnik zainteresowany określonym zagadnieniem znajdzie odnośniki do odpowiedniej literatury, której lektura pozwoli na poszerzenie wiedzy w danej tematyce.
Książka otrzymała tytuł Informatycznej Książki Roku 2016 , przyznany przez Polskie Towarzystwo Informatyczne
.
Książka została wyróżniona podczas 10. Targów Książki Akademickiej wyróżnieniem ACADEMIA 2016.
Recenzja magazynu Quale
Recenzja portalu testerzy.pl (część 1)
Recenzja dla portalu it.pwn.pl
Recenzja na stronie kjarocka.pl
Tutaj można pobrać dokument opisujący mapowanie treści książki na treść sylabusa "ISTQB Certyfikowany Tester - Poziom Podstawowy" wraz z szczegółowymi komentarzami dotyczącymi różnic pomiędzy sylabusem a książką.
Poniżej przedstawiony jest spis treści książki.
Spis ilustracji
Spis tabel
Spis listingów
Znaki handlowe
Wstęp
CZĘŚĆ I. PODSTAWY TESTOWANIA
1 Wprowadzenie do testowania
1.1 Dlaczego testowanie jest niezbędne
1.2 Definicja testowania
1.3 Słynne przykłady awarii oprogramowania
1.4 Rys historyczny
1.5 Ogólne zasady testowania
1.6 Jak dużo testować i kiedy skończyć?
1.7 Psychologia testowania
1.8 Kodeks etyczny testera
1.9 Role związane z testowaniem
2 Podstawowe definicje
3 Proces testowy
3.1 Podstawowy Proces Testowy
3.1.1 Planowanie
3.1.2 Monitorowanie i nadzór
3.1.3 Analiza testów
3.1.4 Projektowanie testów
3.1.5 Implementacja testów
3.1.6 Wykonanie testów
3.1.7 Ocena spełnienia kryteriów wyjścia oraz raportowanie
3.1.8 Czynności zamykające testowanie
3.2 Proces testowy wg ISO/IEC/IEEE 29119
4 Testowanie w cyklu życia oprogramowania
4.1 Modele wytwarzania oprogramowania
4.1.1 Model kaskadowy
4.1.2 Model V
4.1.3 Model W
4.1.4 Rational Unified Process
4.1.5 Rapid Application Development (RAD)
4.1.6 Model spiralny Boehma
4.1.7 Metodyki zwinne
4.1.8 Metodologia Cleanroom
4.2 Weryfikacja i walidacja
4.3 Poziomy testów
4.3.1 Testy jednostkowe
4.3.2 Testy integracyjne
4.3.3 Testy systemowe
4.3.4 Testy akceptacyjne
4.3.5 Pozostałe poziomy testów
4.4 Typy testów
4.4.1 Testy funkcjonalne
4.4.2 Testy niefunkcjonalne
4.4.3 Testy strukturalne
4.4.4 Testy związane ze zmianami
4.5 Poziomy a typy testów
CZĘŚĆ II. TECHNIKI PROJEKTOWANIA TESTÓW
5 Testowanie oparte na modelu
5.1 Cechy dobrego modelu
5.2 Taksnomia modeli
5.3 Przykład wykorzystania modelu
5.4 Modele działania oprogramowania
5.4.1 Graf przepływu sterowania
5.4.2 Ograniczenia w stosowaniu grafu przepływu sterowania
5.4.3 Graf przepływu danych
5.4.4 Ścieżki, ścieżki testowe i ścieżki nieosiągalne
6 Techniki testowania statycznego
6.1 Przeglądy
6.1.1 Proces dla testowania statycznego
6.1.2 Metody sprawdzania oraz możliwe wyniki przeglądu
6.1.3 Role
6.1.4 Aspekt psychologiczny przeglądów
6.1.5 Typy przeglądów
6.1.6 Biznesowa wartość przeglądów
6.1.7 Wdrażanie przeglądów
6.1.8 Kryteria sukcesu przeglądów
6.2 Analiza statyczna
6.2.1 Analiza przepływu sterowania
6.2.2 Poprawność sekwencji operacji
6.2.3 Analiza przepływu danych
6.2.4 Narzędzia do parsowania kodu
6.2.5 Testowanie zgodności ze standardami oprogramowania
6.2.6 Metryki złożoności kodu
6.2.7 Formalne dowodzenie poprawności
6.2.8 Symboliczne wykonywanie kodu
6.2.9 Analiza statyczna strony webowej
6.2.10 Grafy wywołań
7 Analiza dynamiczna
7.1 Wykrywanie wycieków pamięci
7.2 Wykrywanie dzikich i wiszących wskaźników
7.3 Błędy API
7.4 Analiza wydajności (profiling)
8 Techniki oparte na specyfikacji (czarnoskrzynkowe)
8.1 Podział na klasy równoważności
8.1.1 Opis metody
8.1.2 Formalna definicja podziału
8.1.3 Poprawne i niepoprawne klasy równoważności
8.1.4 Procedura tworzenia przypadków testowych
8.1.5 Przykład
8.1.6 Przykład śledzenia artefaktów procesu testowego
8.2 Analiza wartości brzegowych
8.2.1 Opis metody
8.2.2 Metody dwóch oraz trzech wartości granicznych
8.2.3 Które wartości rozważać jako brzegowe?
8.2.4 Przypadek zmiennych ciągłych
8.2.5 Przykład
8.3 Tablice decyzyjne
8.3.1 Opis metody
8.3.2 Wartości nieistotne i minimalizacja tablicy decyzyjnej
8.3.3 Przykład
8.4 Grafy przyczynowo-skutkowe
8.4.1 Opis metody
8.4.2 Przekształcanie pomiędzy grafami P-S i tablicami decyzyjnymi
8.4.3 Metoda śledzenia wstecznego – redukcja liczby testów
8.4.4 Przykład
8.5 Testowanie przejść pomiędzy stanami
8.5.1 Opis metody
8.5.2 Tabelaryczne reprezentacje przejść
8.5.3 Kryteria pokrycia dla maszyny stanowej
8.5.4 Diagram maszyny stanowej w UML
8.5.5 Przykład
8.6 Kategoria-podział (Category-Partition)
8.6.1 Opis metody
8.6.2 Przykład
8.7 Drzewa klasyfikacji
8.7.1 Opis metody
8.7.2 Budowa drzewa klasyfikacji
8.7.3 Asortyment produktów programowych i model cech
8.7.4 Przykład
8.8 Metody kombinacyjne
8.8.1 Opis metody
8.8.2 Each Choice
8.8.3 Base Choice
8.8.4 Multiple Base Choice
8.8.5 Pair-wise testing
8.8.6 Pokrycie n-tupletów (n-wise)
8.8.7 Pełne pokrycie kombinatoryczne
8.8.8 Subsumpcja kryteriów kombinacyjnych
8.9 Testowanie dziedziny
8.9.1 Opis metody
8.9.2 Hiperpłaszczyzny i podprzestrzenie
8.9.3 Wyznaczanie hiperpłaszczyzny przez punkty
8.9.4 Punkty IN, OUT, ON i OFF
8.9.5 Strategia IN-OUT dla testowania dziedziny
8.9.6 Strategia N-ON ×M-OFF dla testowania wartości brzegowych
8.9.7 Ograniczenia nieliniowe
8.9.8 Przykład
8.10 Testowanie w oparciu o przypadki użycia
8.10.1 Opis metody
8.10.2 Przykład
8.11 Testowanie w oparciu o scenariusze
8.11.1 Opis metody
8.11.2 Przykład
8.12 Testowanie w oparciu o historyjki użytkownika
8.12.1 Opis metody
8.12.2 Przykład
8.13 Testowanie losowe
8.13.1 Opis metody
8.13.2 Wady i zalety testowania losowego
8.13.3 Automatyzacja i problem wyroczni
8.13.4 Adaptive Random Testing
8.13.5 Losowanie danych wejściowych
8.13.6 Przykład
8.14 Testowanie oparte na składni
8.14.1 Opis metody
8.14.2 Notacja Backusa-Naura (BNF)
8.14.3 Tworzenie przypadków testowych
8.14.4 Przykład
8.15 Testowanie CRUD
8.15.1 Opis metody
8.15.2 Rozszerzenie metody
8.15.3 Przykład
8.16 Wybór i łączenie technik ze sobą
9 Techniki oparte na strukturze (białoskrzynkowe)
9.1 Testowanie instrukcji
9.1.1 Opis metody
9.1.2 Przykład
9.2 Testowanie gałęzi
9.2.1 Opis metody
9.2.2 Przykład
9.3 Testowanie decyzji
9.3.1 Opis metody
9.3.2 Testowanie decyzji a testowanie gałęzi
9.3.3 Przykład
9.4 Testowanie warunków
9.4.1 Opis metody
9.4.2 Przykład
9.5 Testowanie warunków/decyzji
9.5.1 Opis metody
9.5.2 Przykład
9.6 Testowanie wielokrotnych warunków
9.6.1
Opis metody
9.6.2
Zwarcie (semantyka short-circuit)
9.6.3
Nieosiągalne kombinacje warunków
9.6.4
Przykład
9.7 Testowanie
warunków znaczących (MC/DC)
9.7.1
Opis metody
9.7.2
Dwa warianty kryterium MC/DC
9.7.3
Skorelowane a ścisłe pokrycie warunków znaczących
9.7.4
Wyznaczanie wartości warunków pobocznych dla warunku znaczącego
9.7.5
Przykład
9.8 Pokrycie
MUMCUT oraz kryteria z nim związane
9.8.1
Opis metody
9.8.2
Kryteria MUTP, MNFP, CUTPNFP i MUMCUT
9.8.3
Przykład
9.8.4
Zdolność metody MUMCUT do wykrywania określonych typów błędów
9.9 Testowanie
pętli
9.9.1
Opis metody
9.9.2
Pętle zagnieżdżone
9.9.3
Testowanie wzorców pętli
9.9.4
Przykład
9.10 Liniowa
sekwencja kodu i skok (LSKiS)
9.10.1
Opis metody
9.10.2
Przykład
9.10.3
LSKiS a DD-ścieżki i bloki podstawowe
9.11 Testowanie
ścieżek pierwszych
9.11.1
Opis metody
9.11.2
Algorytm wyznaczania ścieżek pierwszych
9.11.3
Przykład
9.12 Analiza
ścieżek
9.12.1
Wstęp
9.12.2
Testowanie wszystkich ścieżek
9.12.3
Ścieżki liniowo niezależne i testowanie ścieżek bazowych
9.12.4
Wyznaczanie ścieżek bazowych
9.12.5
Przykład
9.12.6
Inne kryteria pokrycia związane z testowaniem ścieżek
9.13 Testowanie
przepływu danych
9.13.1
Wstęp
9.13.2
Pokrycie wszystkich definicji (all-defs)
9.13.3
Pokrycie wszystkich użyć (all-uses)
9.13.4
Pokrycie wszystkich du-ścieżek (all-du-paths)
9.13.5
Uwagi o kryteriach pokrycia przepływu danych
9.13.6
Przykład
9.14 Objazdy i
ścieżki poboczne (detours, sidetrips)
9.15 Testowanie
mutacyjne
9.15.1
Wstęp
9.15.2
Rodzaje mutantów
9.15.3
Proces testowania mutacyjnego
9.15.4
Operatory mutacyjne
9.16 Subsumpcja
kryteriów
10
Techniki oparte na defektach i na
doświadczeniu
10.1 Wstrzykiwanie
błędów
10.2 Taksonomie
10.3 Zgadywanie
błędów
10.3.1
Opis metody
10.3.2
Przykład
10.4 Testowanie
oparte na liście kontrolnej
10.5 Testowanie
eksploracyjne
10.5.1
Opis metody
10.5.2
Przykład sesji testowania eksploracyjnego
10.6 Ataki
usterkowe
10.7 Testowanie
ad-hoc
11
Wybór odpowiednich technik
12
Priorytetyzacja przypadków testowych
12.1 Wprowadzenie
12.2 Ocena
priorytetyzacji – miara APFD
12.3 Techniki
priorytetyzacji
CZĘŚĆ III. TESTOWANIE CHARAKTERYSTYK JAKOŚCIOWYCH
13
Model jakości wg ISO 9126
14
Modele jakości wg ISO 25010
15
Testowanie jakości użytkowej
15.1 Testowanie
efektywności (effectiveness)
15.2 Testowanie
wydajności (efficiency)
15.3 Testowanie
satysfakcji (satisfaction)
15.3.1
Przydatność (usefulness)
15.3.2
Zaufanie (trust)
15.3.3
Przyjemność (pleasure)
15.3.4
Komfort (comfort)
15.4 Testowanie
wolności od ryzyka (freedom from risk)
15.4.1
Ryzyko ekonomiczne (economic risk)
15.4.2
Ryzyko dotyczące zdrowia i bezpieczeństwa (health and safety
risk)
15.4.3
Ryzyko związane ze środowiskiem (environmental risk)
15.5 Testowanie
kontekstu użycia (context coverage)
15.5.1
Zupełność kontekstu (context completeness)
15.5.2
Elastyczność (flexibility)
16
Testowanie jakości produktu
16.1 Testowanie
funkcjonalnej przydatności (functional suitability)
16.1.1
Zupełność funkcjonalności (functional complexity)
16.1.2
Poprawność funkcjonalności (functional correctness)
16.1.3
Stosowność funkcjonalności (functional appropriateness)
16.2 Testowanie
wydajności w działaniu (performance efficiency)
16.2.1
Zachowanie w czasie (time behaviour)
16.2.2
Zużycie zasobów (resource utilisation)
16.2.3
Pojemność (capacity)
16.2.4
Techniki testowania wydajności
16.3 Testowanie
zgodności (compatibility)
16.3.1
Współistnienie (co-existence)
16.3.2
Współdziałanie (interoperability)
16.3.3
Przykład
16.4 Testowanie
użyteczności (usability)
16.4.1
Zrozumiałość (appropriateness recognizability)
16.4.2
Łatwość nauki (learnability)
16.4.3
Łatwość użycia (operability)
16.4.4
Ochrona przed błędami użytkownika (user error prediction)
16.4.5
Estetyka interfejsu użytkownika (user interface aesthetics)
16.4.6
Dostęp (accessibility)
16.5 Heurystyki
dotyczące użyteczności
16.5.1
Heurystyki Nielsena
16.5.2
Laboratorium badania użyteczności (usability lab)
16.6 Testowanie
niezawodności (reliability)
16.6.1
Dojrzałość (maturity)
16.6.2
Odporność na błędy (fault tolerance, robustness)
16.6.3
Odtwarzalność (recoverability)
16.6.4
Dostępność (availability)
16.7 Testowanie
zabezpieczeń (security)
16.7.1
Poufność (confidentiality)
16.7.2
Integralność (integrity)
16.7.3
Niezaprzeczalność (non-repudiation)
16.7.4
Odpowiedzialność (accountability)
16.7.5
Uwierzytelnianie (authenticity)
16.8 Testowanie
pielęgnowalności (maintainability)
16.8.1
Modularność (modularity)
16.8.2
Powtórne użycie (reusability)
16.8.3
Analizowalność (analyzability)
16.8.4
Modyfikowalność (modifiability)
16.8.5
Testowalność (testability)
16.9 Testowanie
przenaszalności (portability)
16.9.1
Adaptowalność (adaptability)
16.9.2
Instalowalność (installability)
16.9.3
Zastępowalność (replaceability)
17
Testowanie jakości danych
17.1 Model
jakości danych
17.2 Charakterystyki
inherentne
17.2.1
Dokładność (accuracy)
17.2.2
Zupełność (completeness)
17.2.3
Spójność (consistency)
17.2.4
Wiarygodność (credibility)
17.2.5
Aktualność (currentness)
17.3 Charakterystyki
inherentne i zależne od systemu
17.3.1 Dostęp
(accessibility)
17.3.2 Zgodność
(compliance)
17.3.3 Poufność
(confidentiality)
17.3.4
Wydajność (efficiency)
17.3.5
Precyzja (precision)
17.3.6
Identyfikowalność (traceability)
17.3.7
Zrozumiałość (understandability)
17.4 Charakterystyki
zależne od systemu
17.4.1
Dostępność (availability)
17.4.2
Przenaszalność (portability)
17.4.3
Odtwarzalność (recoverability)
CZĘŚĆ IV. ZARZĄDZANIE TESTOWANIEM
18
Zarządzanie testowaniem w kontekście
18.1 Kontekst
ograniczeń projektowych
18.2 Kontekst
interesariuszy procesu testowego
18.3 Kontekst
produkcji oprogramowania
18.4 Kontekst
cyklu życia oprogramowania
18.5 Kontekst
testów
18.6 Kontekst
czynnika ludzkiego
19
Testowanie oparte na ryzyku
19.1 Czym jest
ryzyko?
19.2 Zalety
testowania opartego o ryzyko
19.3 Rodzaje
ryzyka
19.4 Zarządzanie
ryzykiem w cyklu życia
19.5 Identyfikacja
ryzyka
19.5.1
Analiza interesariuszy (stakeholder analysis)
19.5.2
Technika "władza versus zainteresowanie"
19.5.3
Techniki identyfikacji ryzyk
19.5.4
Przykłady ryzyk produktowych
19.6 Analiza
ryzyka
19.6.1
Klasyfikacja ryzyk
19.6.2
Czynniki wpływające na prawdopodobieństwo i wpływ ryzyka
19.6.3
Ilościowa i jakościowa ocena ryzyka produktowego
19.6.4
Osiąganie konsensusu w procesie decyzyjnym
19.6.5
Priorytetyzacja ryzyk
19.7 Łagodzenie
ryzyka
19.7.1
Sposoby łagodzenia ryzyka
19.7.2
Łagodzenie ryzyka przez testowanie
19.7.3
Estymacja kosztów łagodzenia ryzyka
19.8 Monitorowanie
ryzyka
19.8.1
Macierz identyfikowalności ryzyk
19.8.2
Aktualizacja ryzyk oraz ich parametrów
19.8.3
Raportowanie
19.9 Techniki
analizy ryzyka
19.9.1
PRAM - Pragmatic Risk Analysis and Management
19.9.2
SST - Systematic Software Testing
19.9.3
Przykład: zastosowanie SST do systemu ELROJ
19.9.4
PRisMa - Product Risk Management
19.9.5
Przykład: zastosowanie PRisMa do systemu ELROJ
19.9.6 Hazard
analysis
19.9.7 Cost
of exposure
19.9.8 FMEA
- Failure Mode and Effect Analysis
19.9.9 Przykład: zastosowanie FMEA do systemu ELROJ
19.9.10 QFD - Quality Function Deployment
19.9.11
Przykład: zastosowanie QFD do systemu ELROJ
19.9.12
FTA - Fault Tree Analysis
19.9.13
Przykład: zastosowanie FTA do systemu ELROJ
19.10 TMap – Test Management Approach
19.11 TestGoal – testowanie oparte na wynikach
20
Pozostałe strategie testowania
20.1 Testowanie
oparte na wymaganiach
20.1.1
Testowanie wymagań
20.1.2
Projektowanie testów opartych na wymaganiach
20.1.3
Przykład: obliczanie punktacji w grze w kręgle
20.2 Podejście
oparte na modelu (profile operacyjne)
20.3 Podejście
metodyczne (listy kontrolne)
20.4 Podejście
oparte na standardzie
20.5 Inne
podejścia
20.5.1
Podejście reaktywne
20.5.2
Podejście "good enough"
20.5.3
Podejście konsultacyjne
21
Dokumentacja w zarządzaniu
testowaniem
21.1 Dokumenty
organizacyjnego procesu testowego
21.1.1
Polityka testów
21.1.2
Przykład polityki testów
21.1.3
Organizacyjna strategia testowania
21.1.4
Przykład organizacyjnej strategii testowania
21.2 Dokumenty
procesu zarządzania testowaniem
21.2.1
Plan testów (test plan)
21.2.2
Przykład planu testów
21.2.3
Jednopoziomowy plan testów (level test plan)
21.2.4
Przykład jednopoziomowego planu testów
21.2.5
Raport o stanie testów (test status report)
21.2.6
Przykład raportu o stanie testów
21.2.7
Raport końcowy z testowania (test completion report)
21.2.8
Przykład raportu końcowego z testowania
21.3 Dokumenty
dynamicznych procesów testowych
21.3.1 Specyfikacja
testów (test design specification)
21.3.2
Przykład specyfikacji testów
21.3.3
Specyfikacja przypadku testowego (test case specification)
21.3.4
Przykład specyfikacji przypadku testowego
21.3.5
Specyfikacja procedury testowej (test procedure specification)
21.3.6
Przykład specyfikacji procedury testowej
21.3.7
Wymagania na dane testowe (test data requirements)
21.3.8
Przykład wymagania na dane testowe
21.3.9
Wymagania na środowisko testowe (test environment requirements)
21.3.10
Przykład wymagań na środowisko testowe
21.3.11
Raport o gotowości danych testowych (test data readiness report)
21.3.12
Raport o gotowości środowiska testowego (test environment readiness
report)
21.3.13
Otrzymane wyniki (actual results)
21.3.14
Wynik testu (test result)
21.3.15
Dziennik wykonania testów (test execution log)
21.3.16 Raport
o incydencie (test incident report)
21.3.17
Raport z sesji testowania eksploracyjnego (exploratory testing
session report)
21.3.18
Przykład raportu z sesji testowania eksploracyjnego
22
Szacowanie testów
22.1 Czynniki
wpływające na szacowanie
22.2 Techniki
szacowania
22.2.1
Intuicja, zgadywanie, doświadczenie
22.2.2
Estymacja przez analogię
22.2.3
Struktura podziału prac (WBS – Work Breakdown Structure)
22.2.4
Estymacja grupowa
22.2.5
Dane przemysłowe
22.2.6
Analiza Punktów Testowych (Test Point Analysis)
22.2.7
Modele matematyczne (parametryczne)
22.3 Negocjacje
i redukcja zakresu testów
23
Nadzór i kontrola postępu testów
23.1 Wprowadzenie
23.2 Przykłady
metryk
23.2.1
Metryki ryzyka produktowego
23.2.2
Metryki defektów
23.2.3
Metryki przypadków testowych
23.2.4
Metryki pokrycia
23.2.5
Metryki pewności
23.3 Zarządzanie
testowaniem opartym o sesję
24
Biznesowa wartość testowania
24.1 Wprowadzenie
24.2 Koszt
jakości
24.3 Wartość
ekonomiczna oprogramowania i problemy z nią związane
24.4. Dług
technologiczny w kontekście testowania
25
Testowanie rozproszone,
zakontraktowane i zewnętrzne
25.1 Zespoły w
ramach organizacji
25.2 Zespoły w
ramach innych oddziałów organizacji
25.3 Dostawcy
sprzętu i oprogramowania
25.4 Dostawcy
usług testowych
25.5 TaaS (Testing as a Service)
26
Zarządzanie wdrażaniem standardów
przemysłowych
27
Zarządzanie incydentami
27.1 Cykl
życia defektu
27.2 Atrybuty
defektu i ODC
27.2.1
Atrybuty defektów
27.2.2
Orthogonal Defect Classification
27.2.3
Przykładowe analizy przy użyciu ODC
27.3 Metryki
zarządzania incydentami
27.4 Zawartość
raportu o incydencie
27.5 Komunikowanie
incydentów
CZĘŚĆ V. LUDZIE I NARZĘDZIA
28
Ludzie i ich kompetencje – tworzenie
zespołu
28.1 Budowanie
zespołu testowego
28.1.1
Opis stanowiska
28.1.2
Analiza CV
28.1.3
Rozmowa kwalifikacyjna
28.1.4
Asymilacja nowego członka zespołu
28.1.5
Zakończenie zatrudnienia
28.2 Rozwój
zespołu testowego
28.2.1
Indywidualny rozwój poszczególnych członków zespołu
28.2.2
Wyznaczanie celów
28.2.3
Dynamika zespołu testowego
28.2.4
Określanie ról i odpowiedzialności
28.2.5
Umiejętności zespołu jako całości: gap analysis
28.2.6
Indywidualne osobowości i role w zespole
28.2.7
Rozwój umiejętności i szkolenia
28.2.8
Mentoring
28.2.9
Okresowa ocena członków zespołu
28.3 Przywództwo
28.3.1
Zarządzanie a przywództwo
28.3.2
Model zmiany wg Satir
28.3.3
Cechy charakteru lidera i zasady przywództwa
28.3.4
Informowanie i komunikacja
28.3.5
Lojalność, zaufanie i odpowiedzialność
28.3.6
Budowanie zespołu
28.4 Poziomy
niezależności zespołu testowego
28.5 Komunikacja
29
Techniki pracy grupowej
29.1 Proces
podejmowania decyzji
29.2 Techniki
wspomagania kreatywności
29.2.1
Burza mózgów
29.2.2
Nominal Group Technique
29.2.3 Metoda
analogii
29.2.4 Joint
Application Development (JAD)
29.3 Techniki
porządkowania i priorytetyzacji
29.3.1
Diagram podobieństwa (affinity diagram)
29.3.2
Macierz i graf priorytetyzacji
29.3.3
Mapa myśli
29.4 Techniki
szacowania i oceny
29.4.1
Wielokrotne głosowanie
29.4.2
Metoda Delficka i Wideband Delphi
29.4.3
Poker planistyczny
29.4.4
Model Saaty'ego (Analytic Hierarchy Process)
29.5 Definiowanie
problemu, przyczyny źródłowej lub możliwości
29.5.1 Analiza
Pola Sił (force field analysis)
29.5.2
Immersja
29.5.3
Diagram rybiej ości (diagram Ishikawy)
30
Testowanie wspierane narzędziami
30.1 Podstawowe
zagadnienia związane z użyciem narzędzi
30.1.1
Wybór odpowiedniego narzędzia
30.1.2
Koszty wdrożenia narzędzia
30.1.3
Ryzyka związane z wdrożeniem narzędzia
30.1.4
Korzyści z wdrożenia narzędzia
30.1.5
Strategie wdrażania automatyzacji
30.1.6
Integracja i wymiana informacji pomiędzy narzędziami
30.1.7
Klasyfikacja narzędzi testowych
30.2 Automatyzacja
testów
30.2.1
Czynniki sukcesu udanej automatyzacji
30.2.2
Metryki dla automatyzacji testów
30.3 Generyczna
architektura automatyzacji testów
30.3.1
Warstwa generowania testów
30.3.2
Warstwa definiowania testów
30.3.3
Warstwa wykonania testów
30.3.4
Warstwa adaptacji testów
30.3.5
Zarządzanie konfiguracją
30.4 Automatyczna
generacja danych testowych
30.5 Metody i
techniki automatyzacji testów
30.5.1
Kroki procesu projektowania architektury
30.5.2
Podejścia do automatyzacji przypadków testowych
30.5.3
Podejście "nagraj i odtwórz"
30.5.4
Skrypty linearne
30.5.5
Skrypty zorganizowane
30.5.6
Testowanie oparte na danych
30.5.7
Testowanie oparte na słowach kluczowych
30.5.8
Testowanie oparte na procesie
30.5.9
Testowanie oparte na modelu
30.5.10
Języki i notacje dla definicji testów
30.6 Katalog
narzędzi testowych
30.6.1
Narzędzia do zarządzania testami
30.6.2
Narzędzia do wykonywania/organizacji testów
30.6.3
Narzędzia do testowania mutacyjnego, posiewu usterek i
wstrzykiwania błędów
30.6.4
Narzędzia do testów bezpieczeństwa
30.6.5
Symulatory i emulatory
30.6.6
Narzędzia do analizy statycznej i dynamicznej
30.6.7
Narzędzia do testów wydajnościowych
30.6.8
Narzędzia typu capture&replay
30.6.9
Narzędzia do testów jednostkowych
30.6.10
Testowanie w metodyce BDD
30.6.11
Narzędzia dla testowania opartego o model
30.6.12
Narzędzia do śledzenia defektów, zarządzania incydentami i
raportowania
30.7 Wdrażanie
narzędzi w organizacji
30.7.1
Cykl życia narzędzia
30.7.2
Użycie narzędzi 'open source'
30.7.3
Przykładowe problemy związane z użyciem narzędzi
CZĘŚĆ VI. UDOSKONALANIE PROCESU TESTOWEGO
31
Kontekst udoskonalania procesu
31.1 Po co
udoskonalać?
31.2 Co można
udoskonalić?
31.3 Spojrzenia
na jakość
31.3.1
Jakość oparta na produkcie
31.3.2
Jakość oparta na użytkowniku
31.3.3
Jakość oparta na wytwarzaniu
31.3.4
Jakość oparta na wartośćci
31.3.5
Jakość transcendentna
31.4 Generyczny
proces udoskonalania
31.4.1
Cykl Deminga-Shewarta (PDCA)
31.4.2
IDEAL
31.4.3
Fundamental Concepts of Excellence
31.5 Przegląd
podejść do udoskonalania
31.5.1
Podejścia oparte na modelu
31.5.2
Podejścia analityczne
31.5.3
Podejścia hybrydowe
31.5.4
Inne podejścia do udoskonalania procesu testowego
32
Udoskonalanie oparte na modelu
32.1 Wprowadzenie
32.2 Udoskonalanie
procesów organizacyjnych i biznesowych
32.2.1 TQM
(Total Quality Management)
32.2.2 ISO
9000
32.2.3 EFQM
Excellence Model
32.2.4 Six
Sigma
32.2.5 Lean
32.3 Udoskonalanie
procesu produkcji oprogramowania
32.3.1
CMMI
32.3.2
ISO/IEC 15504
32.3.3 ITIL
(Information Technology Infrastructure Library)
32.3.4
TSP (Team Software Process)
32.3.5
BOOTSTRAP
32.4 Udoskonalanie
procesu testowego – modele referencyjne procesu
32.4.1 TPI
Next - Test Process Improvement
32.4.2 TMMi
- Test Maturity Model Integration
32.4.3
Porównanie TPI Next i TMMi
32.5 Udoskonalanie
procesu testowego – modele referencyjne zawartości
32.5.1 STEP
(Systematic Test and Evaluation Process)
32.5.2
CTP (Critical Testing Processes)
33
Podejście analityczne
33.1 Wprowadzenie
33.2 Analiza
przyczynowa
33.2.1
Opis metody
33.2.2
Wybór elementów do analizy przyczynowej
33.2.3
Zebranie i zorganizowanie informacji
33.2.4
Identyfikacja przyczyny źródłowej poprzez analizę zebranych
informacji
33.2.5
Wyciągnięcie wniosków
33.3 Podejście
GQM (Goal-Question-Metric)
33.3.1
Opis metody
33.3.2
Fazy GQM
33.3.3
Dwa paradygmaty metody GQM
33.3.4
Wzorzec definiowania celu
33.3.5
Siedem pytań
33.3.6
Przykład
33.4 Miary,
metryki i wskaźniki
34
Wybór metody usprawniania
35
Proces udoskonalania
35.1 Wprowadzenie
35.2 Rozpoczęcie
procesu doskonalenia
35.2.1
Określenie powodu doskonalenia (stymulacja do zmiany)
35.2.2
Ustanowienie celów dla doskonalenia testowania
35.2.3
Określenie kontekstu
35.2.4
Pozyskanie wsparcia
35.2.5
Stworzenie infrastruktury dla procesu udoskonalania
35.3 Diagnozowanie
aktualnej sytuacji
35.3.1
Scharakteryzowanie obecnego oraz pożądanego stanu procesu
35.3.2
Rekomendacje akcji naprawczych
35.4 Ustanowienie
planu doskonalenia procesu testowego
35.4.1
Ustanowienie priorytetów dla wdrażania planu doskonalenia
35.4.2
Opracowanie podejścia do wdrożenia
35.4.3
Zaplanowanie działań związanych z wdrożeniem
35.5 Działanie
w celu wdrożenia udoskonaleń
35.5.1
Stworzenie rozwiązania
35.5.2
Rozwiązania pilotażowe/testowe
35.5.3
Doprecyzowanie rozwiązania
35.5.4
Zaimplementowanie rozwiązania
35.6 Wyciąganie
wniosków z projektu doskonalenia testów
35.6.1
Analiza i weryfikacja przeprowadzonych działań
35.6.2
Propozycje przyszłych rozwiązań
36
Organizacja, role i umiejętności
36.1 Organizacja
36.1.1
Zakres działań GPT
36.1.2
Organizacja Grupy Procesu Testowego
36.1.3
Właściwości Grupy Procesu Testowego
36.2 Role i
umiejętności
36.2.1
Doskonalący proces testowy
36.2.2
Główny oceniający
36.2.3
Oceniający
36.2.4
Umiejętności doskonalącego proces testowy
37
Czynniki sukcesu
CZĘŚĆ VII. JAKOŚĆ OPROGRAMOWANIA
38
Czym jest jakość oprogramowania?
38.1 Testowanie
oprogramowania a jakość oprogramowania
38.2 Model
Kano
38.3 Dojrzałość
procesu i standardy jakości
38.3.1
SPR
38.3.2
Ocena Malcolma Baldridge'a
38.4 Co
mierzyć, jak mierzyć i po co mierzyć?
39
Podstawy teorii pomiarów
39.1 Metryka,
miara, wskaźnik, pomiar
39.2 Skale
pomiarowe
39.2.1
Skala nominalna
39.2.2
Skala porządkowa
39.2.3
Skala interwałowa
39.2.4
Skala stosunkowa
39.2.5
Podsumowanie rodzajów skal pomiarowych
39.3 Typy
metryk
39.3.1
Metryka bezpośrednia (podstawowa)
39.3.2
Suma/różnica
39.3.3
Stosunek
39.3.4
Proporcja
39.3.5
Odsetek
39.3.6
Miary iloczynowe
39.3.7
Tempo
39.4 Spójność
i odpowiedniość pomiaru
39.5 Błędy
pomiarowe
39.6 Podstawowe
zasady analizy danych
39.6.1
Miary tendencji centralnej
39.6.2
Miary rozproszenia
39.6.3
Korelacja i regresja liniowa
39.6.4
Przyczynowość
40
Narzędzia kontroli jakości
40.1 Klasyfikacja
narzędzi
40.2 Rodzaje narzędzi
oraz obszary ich zastosowań
40.3 Statystyczna
kontrola procesu
40.3.1
Wykres przebiegu
40.3.2
Karty kontrolne
40.4 Wykres
czasu cyklu
40.5 Narzędzia
analizy i zapobiegania przyczynom źródłowym
40.5.1
5 pytań "dlaczego?" i diagram "why-why"
40.5.2
Macierz "jest-nie jest"
40.5.3
Kaizen
40.5.4
Poka yoke
41
Metryki wielkości oprogramowania
41.1 Metryki
wolumenowe
41.1.1
LOC
41.1.2
Współczynnik produktywności języka
41.1.3
Pomiar specyfikacji i projektu
41.2 Metryki
funkcjonalności
41.2.1
Punkty funkcyjne
41.2.2
Punkty obiektowe i rozszerzone punkty obiektowe
41.2.3
Punkty cech
41.2.4
Punkty przypadków użycia
42
Metryki charakterystyk jakościowych
42.1 Metryki
dla funkcjonalności
42.2 Metryki
dla niezawodności
42.3 Metryki
dla użyteczności
42.4 Metryki
dla wydajności
42.5 Metryki
dla pielęgnowalności
42.6 Metryki
dla przenaszalności
43
Metryki złożoności oprogramowania
43.1 Metryki
Halsteada
43.2 Złożoność
cyklomatyczna McCabe'a
43.2.1
Gęstość złożoności cyklomatycznej
43.2.2
ECC (Essential Cyclomatic Complexity)
43.3 Konstrukcje
składniowe
43.4 Metryki
struktur
43.5 Metryki
złożoności systemu
43.5.1
Indeks utrzymywalności
43.5.2
Metryka złożoności systemu Agrestiego-Carda-Glassa
43.6 Metryki
obiektowe
43.6.1
Metryki Lorenza
43.6.2
Metryki CK
43.7 Metryki
złożoności dokumentacji
43.8 Metryki
złożoności algorytmicznej
44
Metryki i modele wysiłku
44.1 Modele
oparte na zgadywaniu i intuicji
44.2 Modele
oparte na dekompozycji
44.3 Modele
oparte na wiedzy eksperckiej
44.4 Modele
oparte na benchmarkach
44.5 Modele oparte
na porównaniu
44.5.1
Porównanie proste (naiwne)
44.5.2
Porównanie z uwzględnieniem różnic
44.6 Modele
parametryczne
44.6.1
Tworzenie własnego modelu
44.6.2
Model COCOMO II
44.7 Łączenie
modeli i uwagi na temat estymacji
45
Metryki i modele dla defektów
45.1 Natura
defektów
45.2 Metryki
defektów
45.3 Modele
statyczne defektów
45.3.1
Model wprowadzania/usuwania defektów
45.3.2
Model fazowy
45.3.3
Model dwufazowy
45.3.4
Efektywność usuwania defektów i powstrzymanie fazowe
45.3.5
Modele zmian w kodzie
45.4 Modele
dynamiczne defektów
45.4.1
Model Rayleigha
45.4.2
Model wykładniczy i S-kształtny
45.4.3
Model COQUALMO
45.5 Analiza
mutacyjna
45.6 Metryki
dynamicznej stylometrii
46
Metryki i modele przyrostu
niezawodności
46.1 Wprowadzenie
46.2 Matematyczne
podstawy teorii niezawodności
46.2.1
Funkcja niezawodności i funkcja awarii
46.2.2
Metryka MTTF (średniego czasu do awarii)
46.2.3
Rozkłady prawdopodobieństwa modelujące występowanie awarii
46.2.4
Rozkład wykładniczy i jego związek z metryką MTTF
46.2.5
Funkcja częstości awarii oraz ryzyko (hazard rate)
46.2.6
Prawdopodobieństwo awarii do czasu t
46.3 Modele
przyrostu niezawodności
46.3.1
Model Jelinskiego-Morandy
46.3.2
Model niedoskonałego debugowania Goela-Okumoto
46.3.3
Niejednorodny model procesu Poissona Goela-Okumoto
46.3.4
Logarytmiczny model Poissona czasu wykonywania Musy-Okumoto
46.3.5
Model S-kształtny
46.3.6
Inne modele niezawodności
47
Metryki i modele dostępności
47.1 Dostępność
47.1.1
Dostępność ciągła a dostępność wysoka
47.1.2
Metody zwiększające dostępność systemu
47.1.3
Ilościowa miara dostępności i jej obliczanie
47.2 Odmładzanie
oprogramowania
47.2.1
Powody degradacji i sposoby odmładzania oprogramowania
47.2.2
Wpływ odmładzania na dostępność systemu
48
Metryki dla procesu testowego
49
Metryki zadowolenia klienta
49.1 Proces
pomiaru zadowolenia klienta
49.1.1
Wybór metody i sposobu przeprowadzenia badania
49.1.2
Opracowanie ankiety/kwestionariusza lub innego narzędzia badań
49.1.3
Wybór metody próbkowania
49.1.4
Wybór rozmiaru próby
49.1.5
Zebranie, opracowanie i analiza danych
49.2 Dział
wsparcia klienta
50
Sposób prezentowania danych
50.1
Prezentowanie danych graficznych
50.2
Prezentowanie metryk
A.
Specyfikacja programu ELROJ
B. Normy i standardy
C. Dodatek matematyczny i teoretyczno-informatyczny
D. Informacja o certyfikacji i egzaminach
Bibliografia
Indeks