Opis
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ściSpis ilustracji XXVII Spis tabel XXXIV Spis listingów XXXIX Znaki handlowe XLI Wstęp XLIII CZĘŚĆ I. PODSTAWY TESTOWANIA 1 1. Wprowadzenie do testowania 3 1.1. Dlaczego testowanie jest niezbędne 3 1.2. Definicja testowania 4 1.3. Słynne przykłady awarii oprogramowania 7 1.4. Rys historyczny 11 1.5. Ogólne zasady testowania 14 1.6. Jak dużo testować i kiedy skończyć? 18 1.7. Psychologia testowania 19 1.8. Kodeks etyczny testera 21 1.9. Role związane z testowaniem 22 2. Podstawowe definicje 25 3. Proces testowy 32 3.1. Podstawowy proces testowy 33 3.1.1. Planowanie 34 3.1.2. Monitorowanie i nadzór 36 3.1.3. Analiza testów 36 3.1.4. Projektowanie testów 39 3.1.5. Implementacja testów 43 3.1.6. Wykonanie testów 46 3.1.7. Ocena spełnienia kryteriów wyjścia oraz raportowanie 49 3.1.8. Czynności zamykające testowanie 50 3.2. Proces testowy wg ISO/IEC/IEEE 29119 52 4. Testowanie w cyklu życia oprogramowania 55 4.1. Modele wytwarzania oprogramowania 55 4.1.1. Model kaskadowy 56 4.1.2. Model V 57 4.1.3. Model W 58 4.1.4. Rational Unified Process (RUP) 59 4.1.5. Rapid Application Development (RAD) 60 4.1.6. Model spiralny Boehma 61 4.1.7. Metodyki zwinne 62 4.1.8. Metodologia Cleanroom 68 4.2. Weryfikacja i walidacja 70 4.3. Poziomy testów 72 4.3.1. Testy jednostkowe 73 4.3.2. Testy integracyjne 74 4.3.3. Testy systemowe 78 4.3.4. Testy akceptacyjne 79 4.3.5. Pozostałe poziomy testów 80 4.4. Typy testów 82 4.4.1. Testy funkcjonalne 83 4.4.2. Testy niefunkcjonalne 83 4.4.3. Testy strukturalne 84 4.4.4. Testy związane ze zmianami 85 4.5. Poziomy a typy testów 86 CZĘŚĆ II. TECHNIKI PROJEKTOWANIA TESTÓW 87 5. Testowanie oparte na modelu 89 5.1. Cechy dobrego modelu 89 5.2. Taksonomia modeli 91 5.3. Przykład wykorzystania modelu 93 5.4. Modele działania oprogramowania 96 5.4.1. Graf przepływu sterowania 97 5.4.2. Ograniczenia w stosowaniu grafu przepływu sterowania 102 5.4.3. Graf przepływu danych 103 5.4.4. Ścieżki, ścieżki testowe i ścieżki nieosiągalne 105 6. Techniki testowania statycznego 107 6.1. Przeglądy 108 6.1.1. Proces dla testowania statycznego 110 6.1.2. Metody sprawdzania oraz możliwe wyniki przeglądu 111 6.1.3. Role 112 6.1.4. Aspekt psychologiczny przeglądów 113 6.1.5. Typy przeglądów 114 6.1.6. Biznesowa wartość przeglądów 123 6.1.7. Wdrażanie przeglądów 124 6.1.8. Kryteria sukcesu przeglądów 126 6.2. Analiza statyczna 127 6.2.1. Analiza przepływu sterowania 127 6.2.2. Poprawność sekwencji operacji 128 6.2.3. Analiza przepływu danych 130 6.2.4. Narzędzia do parsowania kodu 132 6.2.5. Testowanie zgodności ze standardami oprogramowania 134 6.2.6. Metryki złożoności kodu 134 6.2.7. Formalne dowodzenie poprawności 137 6.2.8. Symboliczne wykonywanie kodu 140 6.2.9 Analiza statyczna strony internetowej 143 6.2.10. Grafy wywołań 144 7. Analiza dynamiczna 149 7.1. Wykrywanie wycieków pamięci 151 7.2. Wykrywanie dzikich i wiszących wskaźników 152 7.3. Błędy API 153 7.4. Analiza wydajności (profiling) 154 8. Techniki oparte na specyfikacji (cza