Testowanie i jakość oprogramowania - ebook
Testowanie i jakość oprogramowania - ebook
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.
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-18393-6 |
Rozmiar pliku: | 13 MB |
FRAGMENT KSIĄŻKI
1.1. U-kształtna zależność gęstości defektów od rozmiaru modułu
1.2. Dwa przykłady skumulowanej liczby zgłoszonych i naprawionych defektów
3.1. Podstawowy proces testowy (wg ISTQB)
3.2. Przykład obustronnego śledzenia między artefaktami projektu
3.3. Przypadek testowy wysokiego poziomu
3.4. Przypadek testowy niskiego poziomu
3.5. Histogram odsetka wymagań pokrytych testami
3.6. Wielowarstwowy model procesu testowego wg ISO/IEC/IEEE 29119
3.7. Proces projektowania i implementacji testów wg ISO/IEC/IEEE 29119
4.1. Model kaskadowy (wodospadowy)
4.2. Model V
4.3. Model W
4.4. Model RUP
4.5. Model szybkiego prototypowania RAD
4.6. Model spiralny Boehma
4.7. Model Scrum
4.8. TDD
4.9. Metodologia Cleanroom
4.10. Hierarchia czynności weryfikacji i walidacji wg ISO/IEC/IEEE 29119
4.11. Projekt architektury przykładowego programu
5.1. Taksonomia modeli
5.2. Generacja kodu Graya o długości 3 z kodu o długości 2
5.3. Model 8-bitowego konwertera Gray2Order
5.4. Podstawowe elementy grafu przepływu sterowania
5.5. Transformacja konstrukcji algorytmicznych na grafy przepływu sterowania
5.6. Podział kodu na bloki podstawowe i odpowiadający mu graf przepływu sterowania
5.7. Problematyczne programy dla modelowania przepływu sterowania
5.8. Graf przepływu danych dla funkcji compute_prefix
5.9. Kod oraz odpowiadający mu CFG z nieosiągalną ścieżką
6.1. Porównanie miejsc powstawania i wykrywania defektu bez stosowania przeglądów (u góry) i z przeglądami (na dolej)
6.2. Podstawowy model inspekcji Fagana
6.3. Porównanie nakładu pracy w projekcie z inspekcjami i bez nich
6.4. Graf przepływu sterowania dla programu wykorzystującego kolejkę z ograniczoną pojemnością
6.5. Graf przepływu sterowania i jego złożoność cyklomatyczna
6.6. Przykład złego grafu przepływu sterowania oraz jego korekta
6.7. Wykonanie symboliczne kodu zamieniającego wartości zmiennych
6.8. Struktura strony www sklepu internetowego
6.9. Przykład niezrównoważonej i zrównoważonej struktury strony internetowej
6.10. Podstawowe typy wywołań między modułami
6.11. Graf wywołań dla programu grep.c
8.1. Podział dziedziny na klasy równoważności
8.2. Niepoprawny podział dziedziny
8.3. Obustronne śledzenie między artefaktami procesu testowego
8.4. Klasy równoważności i wartości brzegowe dla programu ZniżkaMPK
8.5. Metody dwóch oraz trzech wartości granicznych
8.6. Drzewo możliwych wartości wszystkich warunków
8.7. Ilustracja minimalizacji tablicy decyzyjnej
8.8. Opcje programu Word
8.9. Elementy składowe grafów przyczynowo-skutkowych
8.10. Wykorzystanie operatorów O i M dla reprezentacji przyczyn i skutków o więcej niż dwóch możliwych wartościach
8.11. Fragment grafu P-S odpowiadający jednej regule tablicy decyzyjnej
8.12. Graf P-S stworzony na podstawie tablicy decyzyjnej
8.13. Graficzna ilustracja reguł śledzenia wstecznego
8.14. Graf P-S do którego zastosowano śledzenie wsteczne
8.15. Ogólny model stanów oraz przejść między nimi. Dwie konwencje zapisu
8.16. Maszyna stanowa dla automatu biletowego
8.17. Graficzna reprezentacja różnych typów stanów
8.18. Maszyna stanowa z warunkami na niektórych przejściach
8.19. Przykładowa maszyna stanowa
8.20. Graf de Brujina dla ścieżek długości 2
8.21. Maszyna stanowa dla procesu opisującego pracę redakcji czasopisma
8.22. System komputerowego rozpoznawania obiektów
8.23. Typy wierzchołków w drzewie klasyfikacji
8.24. Drzewo klasyfikacji dla systemu SKRO wraz z macierzą testową
8.25. Notacja dla modelu cech
8.26. Model cech dla asortymentu produktu programowego smartfonu
8.27. Drzewo klasyfikacji wraz z tabelą kombinacji dla kryterium minimalistycznego
8.28. Etapy ręcznego tworzenia przypadków dla kryterium pokrycia par
8.29. 2-(4, 4, 1)-tablica ortogonalna i jej przekształcenie na zbiór przypadków testowych
8.30. Hierarchia subsumpcji dla kombinacyjnych kryteriów pokrycia
8.31. Hiperpłaszczyzny i podprzestrzenie w przestrzeni dwu- i trójwymiarowej
8.32. Obszar z brzegiem „otwartym”
8.33. Przykłady punktów IN, OUT, ON i OFF dla testowanego obszaru
8.34. Zdolność punktów ON-OFF do wykrywania błędów dziedziny
8.35. Redukcja liczby punktów ON i OFF dla kombinacji ograniczeń
8.36. Graficzna reprezentacja warunków dla kategoryzacji urządzeń ciśnieniowych
8.37. Warunki testowe na połączeniach linii
8.38. Model przepływu zdarzeń dla oprogramowania bankomatu
8.39. Typowe wzorce obszarów wejścia powodujących awarie
8.40. Ilustracja technik adaptacyjnego testowania losowego
8.41. Macierz CRUD
9.1. Kod i CFG dla programu SortBąbelkowe
9.2. Krawędzie CFG jako elementy pokrycia w testowaniu gałęzi
9.3. Graf przepływu sterowania dla programu Bisekcja
9.4. CFG i jego drzewo zagnieżdżeń pętli
9.5. Symboliczna reprezentacja LSKiS
9.6. DD-ścieżki a bloki podstawowe
9.7. Przykładowy CFG
9.8. CFG oraz ścieżki pierwsze dla funkcji CzyPierwsza
9.9. CFG z wykładniczą liczbą ścieżek testowych względem decyzji
9.10. Przykładowy CFG i jego zbiór ścieżek bazowych
9.11. CFG dla programu TypTrójkąta oraz dwa zbiory ścieżek bazowych
9.12. Przykładowy graf przepływu danych
9.13. Objazdy i ścieżki poboczne
9.14. Proces testowania mutacyjnego
9.15. Hierarchia subsumpcji dla białoskrzynkowych kryteriów pokrycia
10.1. Proces wstrzykiwania usterek i ulepszania zestawu testów (za )
10.2. Karta testu przed rozpoczęciem sesji testowania eksploracyjnego
10.3. Stworzenie etykiety w MS Word
10.4. Stworzenie podpisu tablicy w MS Word
10.5. Stworzenie w tekście odsyłacza do tablicy w MS Word
10.6. Karta testu po zakończeniu sesji testowania eksploracyjnego
10.7. Model usterki powodowanej interakcją programu i środowiska
11.1. Heurystyczny model strategii testowej
12.1. Geometryczna interpretacja miary APFD
13.1. Model jakości według ISO 9126
14.1. Model jakości McCalla
14.2. Model jakości użytkowej według ISO 25010
14.3. Model jakości produktu według ISO 25010
14.4. Model jakości danych według ISO 25012
16.1. Ekran programu ELROJ – przykład niepoprawnej funkcjonalności
16.2. Przykłady testowania obciążeniowego
16.3. Przykład złej skalowalności systemu
16.4. Przykładowy wynik analizy WAMMI (źródło: www.wammi.com/whatis.html)
16.5. Informowanie użytkownika o stanie systemu
16.6. Brak zgodności między systemem a rzeczywistością
16.7. Kontrola użytkownika nad systemem
16.8. Spójność interfejsów w obrębie rodziny produktów MS Office
16.9. Zapobieganie błędom: okno kalendarza zamiast pola na ręczne wpisanie daty
16.10. Wybór lokalizacji zamiast ręcznego wpisywania ścieżki
16.11. Zaawansowane opcje niewidoczne dla początkującego użytkownika
16.12. Prosty i estetyczny interfejs elektronicznego kalkulatora
16.13. Przykłady złych komunikatów o błędach
16.14. Laboratorium badania użyteczności (źródło: www.designperspectives.com/usability.html)
16.15. Mapa ciepła (heat map) dla śledzenia wzroku
16.16. Relacje między metrykami MTTR, MTTF i MTBF
16.17. Średni czas między awariami
16.18. Zależności między modułami i odpowiadająca im macierz struktury projektu
17.1. Przykład zgodności danych z zewnętrznymi regulacjami
17.2. Przykład poufności danych (hasło do poczty)
17.3. Przykład identyfikowalności danych
18.1. Klasyczny trójkąt ograniczeń projektowych
18.2. Skomplikowana struktura zależności między rolami w projekcie
19.1. Prawdopodobieństwo ryzyka a jego wpływ
19.2. Zależność między wielkością zużycia zasobów a osiąganym poziomem jakości
19.3. Model zarządzania ryzykiem
19.4. Macierz „władza versus zainteresowanie”
19.5. Czynniki wpływające na prawdopodobieństwo i wpływ ryzyka
19.6. Przykłady macierzy ryzyka produktowego
19.7. Poziom ryzyka według jego klasyfikacji
19.8. Przykład symulatora dla łagodzenia ryzyka
19.9. Macierz identyfikowalności ryzyka-testy
19.10. Przykład wysokopoziomowego raportu o ryzykach
19.11. Systemy o wysokiej i niskiej wierności
19.12. Czynności w analizie ryzyka według metody SST
19.13. Dwie postaci macierzy ryzyka produktowego w metodzie PRisMa
19.14. Proces PRisMa
19.15. Macierz ryzyka PRisMa i reguła koła
19.16. Techniki projektowania testów a kwadranty macierzy PRisMa
19.17. Macierz ryzyka produktowego dla systemu ELROJ
19.18. Związek między zagrożeniem, ryzykiem a awarią
19.19. Macierz QFD (tzw. dom jakości)
19.20. Macierz QFD dla systemu ELROJ
19.21. Notacja drzew awarii
19.22. Przykładowe drzewo awarii
19.23. Drzewo awarii dla systemu ELROJ
19.24. Model TMap
19.25. TestGoal – dziesięć zasad testowania sterowanego wynikami
20.1. Podział wymagań
20.2. Łańcuch Markowa jako model profilu operacyjnego
20.3. Wartość testowania w podejściu good enough
21.1. Hierarchia dokumentacji testowej wg ISO/IEE 29119-3
21.2. Przykładowy dziennik wykonania testów
22.1. Struktura podziału prac dla liczby testów systemu ELROJ
22.2. Schemat APT
23.1. Wymiary postępu testowania
23.2. Macierz identyfikowalności testy – ryzyka oraz historia testów przykładowego projektu
23.3. Raport z pokrycia ryzyk
23.4. Raport o defektach
23.5. Raport o defektach w podziale na ich umiejscowienie
23.6. Dwa raporty o testach i defektach dla modułu B
23.7. Raport o przypadkach testowych
23.8. Raport o testach uwzględniający wysiłek i podział na cechy jakościowe
23.9. Raport z pokrycia
24.1. Model kosztu jakości
24.2. Klasyczne i współczesne spojrzenie na ekonomiczny model kosztu jakości
25.1. Testowanie rozproszone, zakontraktowane i zewnętrzne
25.2. Klasyfikacja usług TaaS
27.1. Cykl życia incydentu
27.2. ODC: rozkład defektów dla atrybutu „wpływ”
27.3. Raport z narzędzia do zarządzania incydentami
27.4. Raporty na podstawie danych z dziennika incydentów
28.1. Przykładowe ogłoszenie o pracę dla testera
28.2. Hierarchia potrzeb – piramida Maslowa
28.3. Model Tuckmana dynamiki zespołu
28.4. Matryca RACI
28.5. Inwentarz umiejętności i gap-analysis
28.6. Wskaźnik osobowości Myers–Briggs
28.7. Model analizy transakcyjnej Wagnera
28.8. Style uczenia się według Honeya i Mumforda
28.9. Model zmiany według V. Satir
28.10. Cechy charakteru lidera
28.11. Komunikacja kierownika testów z innymi podmiotami
29.1. Generyczny proces podejmowania decyzji
29.2. Diagram podobieństwa – przykład
29.3. Graf priorytetyzacji – przykład
29.4. Mapa myśli – przykład
29.5. Wielokrotne głosowanie – przykład
29.6. Metoda delficka – przykład
29.7. Proces metody Wideband Delphi
29.8. Poker planistyczny w formie aplikacji na smartfona
29.9. AHP – struktura przykładowego problemu decyzyjnego
29.10. Analiza pola sił dla problemu zmiany w organizacji
29.11. Diagram rybiej ości (Ishikawy) – przykład
30.1. Automatyzacja vs testowanie ręczne – koszty
30.2. Koszty związane z wdrożeniem narzędzia
30.3. Ryzyka związane z wykorzystaniem narzędzi w testowaniu
30.4. Model generycznej architektury automatyzacji testów
30.5. Proces projektowania architektury automatyzacji testów
30.6. Różne sposoby reprezentacji elementów GUI: a) check-box; b) radio button; c) lista rozwijana
30.7. Formularz ze strony www obliczającej indeks BMI
30.8. Widok okna Selenium po nagraniu przypadku testowego
30.9. Selenium – odtworzenie nagranych akcji przypadku testowego
30.10. Oczekiwana informacja na ekranie systemu ELROJ
30.11. Skrypt oparty na słowach kluczowych z wykorzystaniem programu Excel
30.12. Języki i notacje stosowane w automatyzacji testów
30.13. Diagramy UML 2.5
30.14. Cykl życia narzędzia
31.1. Kontekst udoskonalania procesu testowego
31.2. Przykładowe obszary udoskonalania testowania
31.3. Cykl Deminga i jego zastosowanie w kontekście udoskonalania
31.4. Model IDEAL
31.5. Przegląd metod udoskonalania
31.6. Model People CMM
32.1. Model doskonałości EFQM (Excellence Model)
32.2. Six Sigma – rozkład normalny i zmienność procesu
32.3. CMMI – model z reprezentacją etapową
32.4. Obszary procesowe CMMI: weryfikacja i walidacja
32.5. Model TPI Next
32.6. TPI Next – macierz dojrzałości testów
32.7. TPI Next – macierz dojrzałości dla przykładowego procesu
32.8. TPI Next – bazowy układ klastrów
32.9. TPI Next – przykładowa sekwencja doskonalenia oparta na klastrach
32.10. TMMi – poziomy dojrzałości i odpowiadające im obszary procesów
32.11. TMMi – struktura modelu
32.12. STEP – elementy modelu
32.13. STEP – struktura aktywności w podziale na poziomy testów
32.14. CTP – model procesu
33.1. Analiza Pareto
33.2. Przestrzenna i czasowa identyfikacja grup defektów
33.3. Rozkład normalny
33.4. Wykres X–Y dla identyfikacji defektów do analizy przyczynowej
33.5. Techniki zbierania i organizacji informacji
33.6. Rozszerzenie diagramu Ishikawy w celu przeprowadzenia analizy
33.7. GQM – schemat modelu
33.8. Paradygmat GQM – koncepcja pomiaru
33.9. Paradygmat QIP – koncepcja udoskonalania
33.10. GQM – wzorzec definiowania celu
35.1. Korporacyjna tablica rozdzielcza – przykład
35.2. Zrównoważona karta wyników – przykład
36.1. Struktura Grupy procesu testowego dla dużej organizacji
36.2. Umiejętności doskonalącego proces testowy
38.1. Model Kano
39.1. Hierarchia abstrakcji pojęć w teorii pomiaru
39.2. Przykład zastosowania skali nominalnej
39.3. Graficzna reprezentacja spójności i odpowiedniości pomiaru
39.4. Rozkład dobrze opisywany przez modę
39.5. Różne stopnie korelacji
39.6. Model liniowy zależności defektów od punktów funkcyjnych
39.7. Podatność korelacji na wartości odstające
39.8. Kwartet Anscombe’a
40.1. Wykres przebiegu dla dostępności systemu
40.2. S-kształtny (skumulowany) wykres przebiegu
40.3. Karta kontrolna i przykłady anomalii
40.4. Karta kontrolna
40.5. Wykres czasu cyklu
40.6. Diagram why–why
40.7. Macierz jest–nie jest
40.8. Kaizen
41.1. Zależność gęstości defektów od rozmiaru programu
41.2. Procedura obliczania punktów funkcyjnych
41.3. Punkty funkcyjne – pięć typów funkcji
43.1. Ustrukturalizowane i nieustrukturalizowane elementy CFG
43.2. Redukcja CFG w celu obliczenia ECC
43.3. Przykładowy system
43.4. Przykładowa hierarchia klas
44.1. Model szacowania przez porównanie
44.2. Porównanie modeli parametrycznych dla wysiłku
44.3. Dane o PF i wysiłku oraz krzywa do nich dopasowana
45.1. Wykorzystanie modeli defektów
45.2. Dynamika i występowanie defektów – przykłady
45.3. Gęstość defektów w kolejnych wersjach oprogramowania
45.4. Model wprowadzania/usuwania defektów
45.5. Model wprowadzania i usuwania defektów w pojedynczej fazie
45.6. Macierz defektów i obliczanie metryk PCE, DRE i Dunna
45.7. Model Rayleigha dla różnych wartości współczynnika skali
45.8. Rozkład Weibulla dla różnych współczynników kształtu
45.9. Graficzna reprezentacja zaobserwowanych danych
45.10. Predykcja na podstawie modelu Rayleigha
45.11. Rozkład wykładniczy – gęstość i dystrybuanta
45.12. COQUALMO – podmodele wprowadzania i usuwania defektów
45.13. Model dynamicznej stylometrii – predykcja gęstości defektów
46.1. Indeks niezawodności
46.2. Dystrybuanta rozkładu wykładniczego
46.3. Model Jelinskiego–Morandy – chwilowa częstość awarii
47.1. Strategie odmładzania i reagowania a dostępność systemu
49.1. Metody pomiaru zadowolenia klienta
50.1. Marsz wojsk napoleońskich na Moskwę – przykład idealnego wykresu
50.2. Przykłady błędnie prezentowanych danych
50.3. Przykład niepożądanej i pożądanej redundancji
50.4. Wykres z dodanymi informacjami kontekstowymi
50.5. Przykład drążenia danych
A.1. Przykładowy ekran obsługiwany przez program ELROJ
A.2. Schemat logiczny systemu ELROJ
C.1. Granica funkcji
C.2. Geometryczna interpretacja pochodnej funkcji w punkcie
C.3. Geometryczna interpretacja całki oznaczonej
C.4. Ilustracja prawdopodobieństwa warunkowegoSpis tabel
1.1. Najważniejsze odkrycia w historii testowania oprogramowania
1.2. Koszt usuwania defektu w podziale na fazy cyklu życia
3.1. Typowe poziomy testów i odpowiadająca im podstawa testów
3.2. Mapowanie wymagań na elementy projektowe systemu ELROJ
3.3. Możliwe relacje między rzeczywistym a uzyskanym wynikiem testu
5.1. Przypadki testowe dla konwertera Gray2Order
5.2. Modele działania oprogramowania
6.1. Efektywność usuwania defektów dla wybranych statycznych metod testowania
6.2. Prosta analiza kosztów i zysków z przeprowadzenia przeglądu
6.3. Możliwe typy następstw operacji na zmiennych
6.4. Możliwe następstwa operacji dla zmiennej i w programie compute_prefix
8.1. Podsumowanie metody podziału na klasy równoważności
8.2. Zestaw warunków testowych dla programu TypTrójkąta na podstawie charakterystyki „typ trójkąta”
8.3. Zestaw warunków testowych dla programu TypTrójkąta na podstawie charakterystyk Ch2, Ch3 i Ch4
8.4. Przypadki testowe pokrywające klasy równoważności dla programu TypTrójkąta
8.5. Macierz identyfikowalności dla elementów pokrycia i przypadków testowych
8.6. Podsumowanie metody analizy wartości brzegowych
8.7. Porównanie efektywności różnych podejść do identyfikacji wartości granicznych
8.8. Przypadki testowe w analizie wartości brzegowych dla programu CarPanel
8.9. Ogólna postać tablicy decyzyjnej
8.10. Podsumowanie metody tablicy decyzyjnej
8.11. Tablica decyzyjna dla programu Egzaminator
8.12. Zminimalizowana tablica decyzyjna dla programu Egzaminator
8.13. Jeszcze bardziej zminimalizowana tablica decyzyjna programu Egzaminator
8.14. Tablica decyzyjna dla programu Bankier
8.15. Zminimalizowana tablica decyzyjna dla programu Bankier
8.16. Przypadki testowe dla programu Bankier
8.17. Przykładowa tablica decyzyjna z wymaganiami nieosiągalnymi
8.18. Przykładowa tablica decyzyjna z wymaganiami nieosiągalnymi po zminimalizowaniu
8.19. Podsumowanie metody grafów przyczynowo-skutkowych
8.20. Wynikowa tablica decyzyjna po zastosowaniu metody śledzenia wstecznego dla skutku S1
8.21. Tabelaryczna postać maszyny stanowej automatu biletowego
8.22. Pełna tabela przejść maszyny dla automatu biletowego
8.23. Krawędzie wychodzące z poszczególnych stanów
8.24. Obliczanie ścieżek o długości 2
8.25. Podsumowanie metody grafów przyczynowo-skutkowych
8.26. Przypadki testowe dla kryterium 0-przełączeń dla programu Czasopismo
8.27. Przypadki testowe dla kryterium 1-przełączeń dla programu Czasopismo
8.28. Podsumowanie metody kategoria-podział
8.29. Parametry i kategorie metody getDisplayString
8.30. Parametry, kategorie i wybory dla metody getDisplayString
8.31. Podsumowanie metody drzew decyzyjnych
8.32. Przypadki testowe dla programu SKRO
8.33. Przypadki testowe spełniające kryterium Each Choice
8.34. Elementy pokrycia dla kryterium Base Choice
8.35. Elementy pokrycia dla kryterium Multiple Base Choice
8.36. Podsumowanie metod kombinacyjnych
8.37. Podsumowanie metod analizy dziedziny
8.38. Kategoryzacja urządzeń ciśnieniowych w zależności od dopuszczalnego ciśnienia i pojemności
8.39. Przypadki testowe dla programu Kategoryzacja
8.40. Przypadek użycia dla szybkiej wypłaty z bankomatu
8.41. Przypadek testowy dla scenariusza głównego przypadku użycia SzybkaWypłata
8.42. Przypadek testowy dla scenariusza alternatywnego przypadku użycia SzybkaWypłata
8.43. Podsumowanie metody testowania opartego na przypadkach użycia
8.44. Podsumowanie metody testowania opartego na scenariuszach
8.45. Przypadek testowy dla scenariusza „udana wypłata”
8.46. Przypadek testowy dla scenariusza „nierozpoznana karta”
8.47. Przypadek testowy dla scenariusza „trzykrotny błędny PIN”
8.48. Przypadek testowy dla scenariusza „niewystarczająca ilość środków na koncie”
8.49. Podsumowanie metody testowania opartego na historyjkach użytkownika
8.50. Przypadki testowe dla historyjki użytkownika
8.51. Podsumowanie metody testowania losowego
8.52. Testowanie losowe – przypadki testowe dla modułu Przekształcenie
8.53. Podsumowanie metody testowania opartego na składni
8.54. Przypadki testowe dla techniki opartej na składni
8.55. Przypadki testowe wyprowadzone z macierzy CRUD
8.56. Różne realizacje możliwych operacji CRUD
8.57. Macierz CRUD dla systemu ELROJ
8.58. Przekształcona macierz CRUD dla systemu ELROJ
9.1. Podsumowanie metody testowania instrukcji
9.2. Przypadki testowe dla pokrycia instrukcji
9.3. Podsumowanie metody testowania gałęzi
9.4. Przypadki testowe spełniające kryterium pokrycia gałęzi – wariant I
9.5. Przypadki testowe spełniające kryterium pokrycia gałęzi – wariant II
9.6. Podsumowanie metody testowania decyzji
9.7. Przypadki testowe dla pokrycia decyzji
9.8. Przypadki testowe dla decyzji złożonej z 3 warunków
9.9. Podsumowanie metody testowania warunków
9.10. Przypadki testowe dla testowania warunków
9.11. Podsumowanie metody testowania warunków/decyzji
9.12. Przypadki testowe dla pokrycia warunków/decyzji
9.13. Podsumowanie metody testowania warunków wielokrotnych
9.14. Przypadki testowe nieuwzględniające zwarcia
9.15. Testy dla pokrycia wielokrotnych warunków z short-circuit
9.16. Przypadki testowe dla kryterium pokrycia wielokrotnych warunków
9.17. Wartościowanie warunków dla skorelowanego pokrycia warunków znaczących
9.18. Skorelowane pokrycie warunków znaczących – po usunięciu duplikatów
9.19. Wartościowania warunków dla ścisłego pokrycia warunków znaczących
9.20. Ścisłe pokrycie warunków znaczących – przypadki po usunięciu duplikatów
9.21. Tablica prawdy dla predykatu D = p ∧ (q ∨ r)
9.22. Podsumowanie metody testowania warunków znaczących
9.23. Tablica prawdy dla operatora XOR
9.24. Tablica prawdy dla predykatu funkcji leapYear
9.25. Przypadki testowe spełniające kryterium MC/DC dla funkcji leapYear
9.26. Podsumowanie metody testowania pętli
9.27. Pokrycie ścieżek iterowanych w metodzie wzorców pętli
9.28. Przypadki testowe dla pokrycia pętli w programie SortBąbelkowe
9.29. Podsumowanie metody testowania LSKiS
9.30. Możliwe LSKiS dla programu Potęgowanie
9.31. Przypadki testowe pokrywające LSKiS
9.32. Podsumowanie metody testowania ścieżek pierwszych
9.33. Przypadki testowe dla pokrycia ścieżek pierwszych programu CzyPierwsza
9.34. Podsumowanie metody testowania ścieżek
9.35. Testy dla TypTrójkąta spełniające kryteria pokrycia ścieżek i ścieżek bazowych
9.36. Podsumowanie metody testowania przepływu danych
9.37. Miejsca i typy wystąpienia zmiennych w procedurze RównanieKwadratowe
9.38. Przypadki testowe dla pokrycia wszystkich definicji
9.39. Przypadki testowe dla pokrycia wszystkich użyć
9.40. Podsumowanie metody testowania mutacyjnego
10.1. Tasonomia defektów oparta na przyczynie źródłowej (root-cause)
10.2. Lista kontrolna dla sprawdzenia użyteczności strony www
12.1. Przypadki testowe i usterki przez nie wykrywane
16.1. Ochrona przed błędami użytkownika – przykłady dobrych i złych rozwiązań
17.1. Baza danych adresów urzędów wojewódzkich
19.1. Ilościowe szacowanie ryzyka
19.2. Przykłady ryzyk produktowych i projektowych
19.3. Lista ryzyk z określonym poziomem i kategorią
19.4. Priorytetyzacja ryzyk
19.5. Poziomy krytyczności wg normy DO-178C
19.6. Poziomy nienaruszalności bezpieczeństwa wg IEC 61508
19.7. Obliczanie poziomu ryzyka w metodzie SST
19.8. Lista ryzyk dla programu ELROJ
19.9. Wagi czynników w PRisMa
19.10. Szacowanie ryzyka przez kierownika projektu
19.11. Szacowanie ryzyka przez analityka biznesowego
19.12. Szacowanie ryzyka przez architekta systemu
19.13. Uśrednione oceny
19.14. Ważona ocena ryzyk produktowych
19.15. Metody łagodzenia ryzyka dla systemu ELROJ
19.16. Wpływ redukcji ryzyka
19.17. FMEA dla programu ELROJ
20.1. Postać wymagań i proponowane techniki ich testowania
20.2. Profil operacyjny dla wyboru funkcji bankomatu
22.1. Przykładowe szacowanie kosztów testów z korektą
22.2. Średnie przemysłowe parametrów dotyczących testowania
27.1. ODC: przykład dwuwymiarowej analizy
29.1. Macierz priorytetyzacji – przykład
30.1. Zestaw słów kluczowych dla programu ELROJ
30.2. Frameworki wspierające testowanie jednostkowe
30.3. Przykładowe problemy z używaniem narzędzi
32.1. Doskonalenie oparte na modelu – korzyści i ryzyka
32.2. Obszary procesowe TMMi oraz ich cele i praktyki specyficzne
32.3. Porównanie TPI Next i TMMi
32.4. STEP – struktura poziomu testów
32.5. CTP – przykładowe metryki
33.1. Przykłady kategoryzacji defektów dla ich wyboru w analizie przyczynowej
35.1. Porównanie podejść do wdrożenia doskonalenia procesu testowego
36.1. Typy zdolności emocjonalnych według Mayera i Saloveya
39.1. Skale pomiarowe – podsumowanie
39.2. Dane o punktach funkcyjnych i liczbie defektów dla modelu regresji
40.1. Narzędzia kontroli jakości
40.2. Parametry kart kontrolnych
40.3. Pomiary dla karty kontrolnej
41.1. Tablica produktywności dla wybranych języków programowania
41.2. Wagi dla poszczególnych złożoności typów funkcji
41.3. Obliczanie złożoności typu funkcji danych
41.4. Obliczanie złożoności typu transakcji dla plików wewnętrznych
41.5. Obliczanie złożoności typu transakcji dla plików/zapytań zewnętrznych
41.6. Punkty funkcyjne dla systemu ELROJ
43.1. Metryki Halsteada
43.2. Złożoność cyklomatyczna a ryzyko
43.3. Złożoność cyklomatyczna a prawdopodobieństwo złej poprawki
43.4. Metryki Lorenza
43.5. Indeks Flescha – interpretacja wyników testu
44.1. Pracochłonność projektu testowego według podziału prac i czynności
44.2. Pracochłonność projektu testowego według podziału systemu
44.3. Rekomendowane wartości współczynnika D
44.4. Przykładowe dane historyczne z poprzednich projektów
44.5. Czynniki modyfikujące dla metody szacowania przez porównanie
44.6. Szacowanie wysiłku i kosztu przez porównanie
44.7. Dane historyczne o wysiłku i punktach funkcyjnych
44.8. COCOMO II – wagi czynników skali w zależności od ich wpływu
45.1. Wykorzystanie modelu fazowego
45.2. Modele zmian w kodzie – porównanie
47.1. Przykładowe dostępności systemu i odpowiadające im czasy niedostępności
47.2. Związek między gęstością defektów i wartością MTTF
49.1. Zebrane od użytkowników dane z ankiet
A.1. Wymagania funkcjonalne dla programu ELROJ
C.1. Tablica prawdy dla operatorów alternatywy, koniunkcji, implikacji i równoważności
C.2. Tablica prawdy dla operatora negacjiSpis listingów
1.1. Procedura przetwarzania komunikatów w oprogramowaniu AT&T
1.2. Dwa sposoby pobrania ciągu znaków ze strumienia wejściowego
1.3. Przykładowy program z pętlą
2.1. Algorytm sortowania bąbelkowego
2.2. Przykładowy program ilustrujący stopień pokrycia
3.1. Implementacja wysokopoziomowego przypadku testowego
3.2. Implementacja niskopoziomowego przypadku testowego
4.1. Historyjka użytkownika w podejściu BDD
5.1. Kod w C obliczający tablicę prefiksów dla algorytmu Knutha–Morrisa–Pratta
5.2. Fragment kodu z dynamicznym wiązaniem
6.1. Przykład programu z martwym kodem
6.2. Fragment kodu z dwoma definicjami zmiennej x
6.3. Przykład źle napisanego programu w C
6.4. Program obliczający silnię
6.5. Program obliczający silnię z wstawionymi asercjami
6.6. Program zamieniający miejscami wartości dwóch zmiennych
6.7. Kod źródłowy programu grep.c
7.1. Pseudokod programu Collatz
7.2. Zinstrumentowany program Collatz
7.3. Kod z wiszącymi i dzikimi wskaźnikami
7.4. Przeprowadzenie analizy wydajności
7.5. Przykładowy płaski profil programu generowany przez gprof
7.6. Graf wywołań wygenerowany przez gprof
8.1. Program obliczający końcową ocenę z przedmiotu
8.2. Algorytm redukcji liczby testów dla grafu P-S
8.3. Konfiguracja środowiska testowego dla wykonania testu metody getDisplayString
8.4. Procedura InParameterOrder dla pokrycia par
9.1. Fragment programu z martwym kodem
9.2. Prosty program
9.3. Program Bisekcja
9.4. Funkcja sprawdzająca przestępność roku
9.5. Funkcja RównanieKwadratowe
9.6. Powtórzony kod programu SortBąbelkowe
9.7. Szybkie potęgowanie
9.8. Wyznaczanie ścieżek pierwszych
9.9. Funkcja CzyPierwsza
9.10. Zdolność metody ścieżek bazowych do wykrywania defektów
9.11. Kod programu TypTrójkąta
9.12. Procedura RównanieKwadratowe napisana w Adzie
9.13. Program i jego pięć przykładowych mutantów
16.1. Fragment kodu html obowiązkowego w responsive web design
17.1. Skrypt PL/SQL z poleceniem ROLLBACK
19.1. Symulacja Monte Carlo szacująca prawdopodobieństwo awarii głównej
30.1. Page Object dla strony www wyszukiwania Google
30.2. Test z wykorzystaniem Page Object Pattern
30.3. Skrypt w Pythonie dla nagranego przypadku testowego
30.4. Pseudokod zorganizowanego skryptu
30.5. Skrypt dla testowania opartego na danych
30.6. Przypadki testowe dla systemu ELROJ oparte na słowach kluczowych
30.7. Fragment skryptu napisanego w Perlu
30.8. Skrypt VBScript wyszukujący dane w arkuszu kalkulacyjnym
30.9. Kod w OCL definiujący ograniczenia dla metody calcArea
30.10. Plik XML z rozkładem jazdy dla systemu ELROJ
33.1. Test statystyczny t-Studenta dla czasu naprawy defektów
39.1. Skrypt w pakiecie R budujący model liniowy
43.1. Kod programu w C++ sortującego tablicę
45.1. Skrypt wykorzystujący model Rayleigha do predykcji defektów
46.1. Model Jelinskiego–Morandy – praktyczne wykorzystanie
49.1. Statystyki opisowe dla zebranych danychZnaki handlowe
CMM^(®) oraz CMMI^(®) są zarejstrowanymi znakami Carnegie Mellon University.
IDEAL^(SM), PSP^(SM) i TSP^(SM) są zarejestrowanymi znakami Instytutu Inżynierii Oprogramowania (SEI), Carnegie Mellon University.
EFQM Excellence Model^(TM) jest zarejestrowanym znakiem handlowym European Foundation for Quality Management.
ISTQB^(®) jest zarejestrowanym znakiem International Software Testing Qualifications Board.
ITIL^(TM) jest zarejestrowanym znakiem Office of Government Commerce.
TMM^(TM) jest zarejestrowanym znakiem Illinois Institute of Technology.
TMMi^(®) jest zarejestrowanym znakiem TMMi Foundation.
TPI^(®) oraz TPI Next^(®) są zarejestrowanymi znakami Sogeti Nederland B.V.Wstęp
Mniej więcej w latach dziewięćdziesiątych XX wieku inżynieria oprogramowania weszła w erę jakości. Jakość, odnosząca się zarówno do produktu, jak i do procesu wytwórczego, stała się celem numer jeden w każdym poważnym projekcie IT. Wszystkie szanujące się firmy przeprowadzają u siebie audyty, aby wykazać zgodność swoich działań z takimi normami jak ISO 9001 czy określić poziom dojrzałości procesów według modelu CMMI (ang. Capability Maturity Model Integration). Powstało wiele metodologii zarządzania jakością, głównie na użytek „klasycznego” przemysłu. Równocześnie, do branży informatycznej przenikały i znalazły poczesne miejsce takie idee jak statystyczna kontrola procesu czy metoda Six Sigma.
Jednym ze sposobów zapewniania jakości tworzonych aplikacji jest testowanie oprogramowania. Testowanie jest tak stare jak wytwarzanie oprogramowania i można bez cienia przesady powiedzieć, że istniało od momentu powstania pierwszego programu napisanego na komputerze. Mimo tak szacownej historii testowanie, zwłaszcza w polskich firmach, ciągle pozostaje mało docenianą dziedziną inżynierii oprogramowania. Wciąż można spotkać szefów firm, którzy – chcąc pokazać przyjazne nastawienie ich organizacji wobec wszystkich kandydatów – wyrażają gotowość zatrudniania osób z niewielkim doświadczeniem, oferując im stanowiska testerów. Uważają bowiem, że jest to zawód, który mogą wykonywać osoby bez jakiejkolwiek znajomości testowania. Wynika to z braku świadomości tego, że testowanie jest nie tylko dyscypliną trudną, lecz także odgrywa kluczową rolę w zapewnianiu jakości tworzonego oprogramowania.
Taka postawa właścicieli firm produkujących oprogramowanie jest zupełnie niezrozumiała. Gdyby zaproponować im zatrudnienie programisty-amatora, który dopiero chce się nauczyć profesjonalnego pisania kodu, zaprotestowaliby gwałtownie i odpowiedzieliby zapewne, że nie mogą sobie pozwolić na takie ryzyko, bo to obniżyłoby jakość tworzonego produktu. Paradoksalnie jednak, nie dbając o doświadczenie zatrudnianych testerów, pozwalają sobie na ryzyko o wiele większe, gdyż konsekwencje późnego wykrycia defektów (na skutek nieumiejętnego testowania), po przekazaniu oprogramowania klientowi, są o wiele poważniejsze, niż gdy wykrycie to następuje we wczesnych fazach cyklu życia.
Takie podejście kierownictwa często wynika z powierzchownej wiedzy o testowaniu oprogramowania. Wielu menedżerów wyższego szczebla kojarzy proces testowania z praktykantem, który „siedzi, klika i patrzy, czy coś się nie zepsuje”. Nie zdają sobie sprawy, jak rozległą, trudną i skomplikowaną dziedziną jest testowanie. Często nie rozumieją, że efektywne testowanie oprogramowania wymaga wielkiego nakładu pracy, alokacji sporych środków finansowych, sprawnego zarządzania oraz nierzadko umiejętności zastosowania wysoce nietrywialnych technik. Proces testowania jest tak samo trudny, a może nawet trudniejszy, jak proces tworzenia oprogramowania.
O znaczeniu testowania może świadczyć powstanie w ostatnich latach różnych organizacji międzynarodowych, takich jak np. ISTQB, które przeprowadzają egzaminy na certyfikowanych testerów, organizują konferencje czy publikują materiały opisujące dobre praktyki w testowaniu. Także na naszym, polskim podwórku pojawia się coraz więcej ciekawych inicjatyw związanych z jakością oprogramowania, np. Mistrzostwa Polski w Testowaniu czy też seria konferencji „Test Well” zainicjowana w 2013 roku. Te ostatnie przykłady pozwalają patrzeć optymistycznie na rozwój społeczności testersko-jakościowej w Polsce, ale trzeba pamiętać, że jest jeszcze wiele do zrobienia. I po to, między innymi, powstała ta książka.
Niniejszy podręcznik został napisany dla:
- początkujących testerów, aby już na samym początku swojej kariery zawodowej poznali dobre praktyki oraz najefektywniejsze techniki i metody testowania, a także aby mogli spojrzeć na tę dziedzinę z lotu ptaka, zobaczyć, z jakich obszarów się składa i jakie są zależności między nimi;
- zawodowych testerów, aby ugruntowali i poszerzyli swoją wiedzę o zaawansowane techniki testowania;
- inżynierów jakości, aby efektywnie wykorzystywali istniejące metody, modele i procesy zapewniania jakości oprogramowania;
- kierowników, menedżerów i dyrektorów testów, aby sprawniej zarządzali procesem testowym w organizacji i efektywnie go ulepszali;
- osób doskonalących lub chcących doskonalić proces testowy w organizacji, aby nabyli niezbędną do tego celu wiedzę;
- osób przygotowujących się do egzaminów na certyfikaty ISTQB (poziom podstawowy, zaawansowany i ekspercki), aby dostarczyć im zwarte źródło materiałów pomocnych w nauce do egzaminu;
- dyrektorów działów IT, aby mogli lepiej zrozumieć rolę testowania w organizacji;
- pracowników naukowych, którzy prowadzą lub zamierzają prowadzić zajęcia dydaktyczne i/lub badania naukowe w obszarze testowania i jakości oprogramowania;
- obecnych lub przyszłych pasjonatów testowania, którzy planują związać swój rozwój zawodowy z tą dziedziną inżynierii jakości oprogramowania.
Podręcznik ten abstrahuje od konkretnych języków programowania czy narzędzi testowych. Wyjątkiem jest rozdział 30, gdzie podałem przykładowy katalog konkretnych aplikacji wspomagających proces testowania. W książce skupiłem się wyłącznie na metodach i technikach testowania, zarządzania testowaniem oraz zapewniania jakości, dzięki czemu zawarta w niej wiedza jest uniwersalna i przydatna dla każdego testera w każdej organizacji, niezależnie od typu projektu, w jakim uczestniczy, oraz narzędzi, jakich używa. Słowo „narzędzia” w podtytule książki jest związane z abstrakcyjnymi metodami pomocnymi w pracy inżyniera jakości, a nie konkretnymi aplikacjami typu CASE (ang. Compute-Aided Software Engineering) czy CAST (ang. Computer-Aided Software Testing).
projekt (ang. project) – zestaw skoordynowanych i kontrolowanych aktywności o określonym czasie rozpoczęcia i zakończenia; jest powoływany, aby osiągnąć cel zgodnie z określonymi wymaganiami, w tym ograniczeniami czasowymi, kosztowymi i zasobowymi
CASE (ang. Computer-Aided Software Engineering) – inżynieria oprogramowania wspomagana komputerowo
CAST (ang. Computer-Aided Software Testing) – testowanie oprogramowania wspomagane komputerowo; patrz także: automatyzacja testowania
Książka składa się z siedmiu części. Pierwsza jest wprowadzeniem w dyscyplinę testowania oprogramowania. Zawiera niezbędne pojęcia, opisuje proces testowy i wyjaśnia, jak ten proces jest umiejscowiony w różnych cyklach życia oprogramowania. Definiuje także typowe poziomy i typy testów.
Część druga to obszerny przegląd technik projektowania testów. Opisane zostały w nim wszystkie najważniejsze oraz najczęściej stosowane techniki: czarnoskrzynkowe, białoskrzynkowe, oparte na defektach i oparte na doświadczeniu. Omówione są również techniki statyczne, takie jak przeglądy czy analiza statyczna, oraz metody analizy dynamicznej.
W części trzeciej zostały opisane zagadnienia związane z testowaniem niefunkcjonalnym, czyli testowaniem cech jakościowych. Materiał tej części w dużym stopniu jest oparty na normie ISO/IEC/IEEE 25010 , która zastąpiła kilka lat temu normę ISO/IEC 9126 .
Część czwarta jest przeznaczona głównie dla osób zajmujących się testowaniem od strony zarządzania, takich jak: kierownicy testów, menedżerowie jakości, kierownicy zespołów testowych. Omówione są w niej techniki zarządzania z naciskiem na metody oparte na ryzyku. Zawiera także przegląd dokumentacji testowej zgodny z normą ISO/IEC 29119-3 , która zastąpiła dotychczas stosowaną normą IEEE 829 .
Część piąta jest poświęcona ludziom i narzędziom w procesie testowym. Przedstawione są w niej zagadnienia komunikacji w zespole, kompetencji oraz motywacji. Zawiera także szeroki przegląd typów narzędzi wraz z konkretnymi przykładami ich zastosowań.
Część szósta dotyczy metod doskonalenia procesu testowego. Jest przeznaczona głównie dla menedżerów, osób odpowiedzialnych w firmie za usprawnianie procesu testowego oraz dla kandydatów przygotowujących się do egzaminu ISTQB Expert Level – Test Process Improvement.
Część siódma jest poświęcona zagadnieniom jakości oprogramowania: metrykom i modelom stosowanym w inżynierii jakości.
W książce, oprócz tekstu podstawowego, występują dwa inne rodzaje informacji: definicje oraz listingi (kody źródłowe):
definicja – definicja pojęcia (wraz z jego angielskim odpowiednikiem) jest opisana na szarym tle; większość definicji jest podana za Słownikiem wyrażeń związanych z testowaniem pod redakcją Lucjana Stappa, opublikowanym przez Stowarzyszenie Jakości Systemów Informatycznych
Kod źródłowy lub pseudokod programu – napisany czcionką Courier New, między dwiema poziomymi liniami oznaczającymi początek i koniec kodu. Linie kodu mogą być numerowane w celu odwołania się do nich w tekście.
Nazwy zmiennych, funkcji oraz programów w zwykłym tekście są oznaczone kursywą. Fragmenty kodu w tekście są podane, podobnie jak listingi, czcionką maszynową (Courier New). Wartości logiczne są opisywane albo słownie, jako prawda i fałsz, albo za pomocą liczb 1 i 0, pogrubioną czcionką.
Książka zawiera cztery dodatki. W Dodatku A został opisany system ELROJ (ELektroniczny ROzkład Jazdy), który będzie przykładem przewodnim służącym do ilustracji wielu metod i technik testowania. Dodatek ten zawiera opis systemu, specyfikację wymagań oraz fragment projektu architektury. Zaleca się, aby Czytelnik przed lekturą właściwej części książki zapoznał się z opisem tego systemu.
W Dodatku B zebrano wszystkie najważniejsze normy i standardy bezpośrednio lub pośrednio związane z testowaniem i jakością oprogramowania. Dodatek C zawiera formalne definicje pojęć matematycznych oraz definicje z zakresu teoretycznych podstaw informatyki, które są wykorzystywane w książce. W Dodatku D zostały opisane najbardziej znane i cenione w środowisku testerów programy certyfikacji na testerów lub inżynierów jakości.