Tytuł Testowanie oprogramowania w praktyce Podtytuł Studium przypadków 2.0 Autorzy Adam Roman, Karolina Zmitrowicz Język polski Wydawnictwo Wydawnictwo Naukowe PWN ISBN 978-83-01-19754-4 linia Testowanie oprogramowania w praktyce Rok wydania 2017 Warszawa Wydanie 1 ilość stron 240 Format mobi, epub Spis treści Przedmowa XI Karolina Zmitrowicz, Adam Roman XI Część I. Organizacja i procesy 1 1. Połączenie dwóch światów. Zmiany w organizacji zarządzania kontrolą jakości w warunkach połączenia firm 3 Adam Romanowicz 3 1.1. Wstęp 3 1.2. Opis przypadku 4 1.2.1. Cele przejęcia firm 4 1.2.2. Charakterystyka firm kupujących 5 1.2.3. Charakterystyka firm kupowanych 5 1.2.4. Główne wyzwania z punktu widzenia firmy kupującej 5 1.2.5. Główne wyzwania z punktu widzenia marki kupowanej 5 1.2.6. Główne wyzwania z punktu widzenia przejmowanych klientów 6 1.2.7. Główne wyzwania z punktu widzenia architekta systemu 6 1.2.8. Główne wyzwania z punktu widzenia inżynierii testów 6 1.3. Skalowanie systemu 7 1.3.1. Cel 7 1.3.2. Opis problemów 7 1.3.3. Faza 0 – stan testów niefunkcjonalnych po przejęciu firmy 7 1.3.4. Faza 0 – wyniki 8 1.3.5. Faza 0 – wnioski 8 1.3.6. Faza 1 – pierwsze podejście do wprowadzenia wydajnych praktyk inżynieryjnych 8 1.3.7. Faza 1 – wyniki 9 1.3.8. Faza 1 – wnioski 10 1.3.9. Faza 2 – dalszy rozwój testów obciążeniowych 10 1.3.10. Faza 2 – wyniki 10 1.3.11. Faza 2 – wnioski 11 1.3.12. Faza 3 – dalszy rozwój i wnioski 11 1.3.13. Wnioski końcowe 11 1.4. Zarządzanie błędami 13 1.4.1. Opis przypadku 13 1.4.2. Perspektywa producenta kupionej 13 1.4.3. Perspektywa marki kupującej 14 1.4.4. Podjęte kroki w środku organizacji 14 1.4.5. Perspektywa klienta 14 1.4.6. Podjęte kroki dotyczące współpracy z klientem 15 1.4.7. Wnioski 15 1.5. Wartość testów eksploracyjnych 16 1.5.1. Połączenie dwóch podejść 17 1.5.2. Wnioski 17 1.6. Nowy tryb pracy z klientem w obszarze testów 18 1.6.1. Opis problemu 18 1.6.2. Cel 18 1.6.3. Podjęte działania 18 1.6.4. Wnioski 19 1.7. Zakończenie cyklu przejęcia marki 20 1.7.1. Opis problemu 20 1.7.2. Zatrzymanie się w połowie drogi 20 1.7.3. Jak sprawnie zakończyć cykl przejęcia firmy 21 O autorze 22 2. Nieprzystępna współpraca z klientem 23 Bartłomiej prędki, Karolina Zmitrowicz 23 2.1. Wstęp 23 2.2. Punkt widzenia dostawcy oprogramowania 24 2.3. Rodzaje testów przeprowadzanych poprzez klienta 25 2.4. Wady i atuty przeprowadzania testów przez zespół klienta 27 2.4.1. Wady 27 2.4.2. Mocne strony 29 2.5. Zasady współpracy z zespołem klienta 30 2.6. Studium przypadku 32 2.6.1. Podejście do testów 32 2.6.2. Środowiska testowe 33 2.6.3. Organizacja pracy zespołów testerskich 35 2.6.4. Wyniki 39 2.7. Podsumowanie 40 O autorach 41 3. Zabezpieczenie środków budżetowych na rozbudowę zespołu testowego 43 Maciej Chmielarz 43 3.1. Wyzwanie 43 3.2. Budżet nie jest z gumy 44 3.3. Testowanie nie jest oczywiste 44 3.4. Prawidłowe praktyki nie przekonują 46 3.5. Wykorzystanie nie jest jasne 47 3.6. Jest rola do spełnienia 48 3.7. Efekt końcowy 50 O autorze 51 Część II. Testowanie systemów unikalnych 53 4. Powiedz to głośno – jak skutecznie wprowadzić ergonomiczne usprawnienia w aplikacji 55 Aleksandra Pirek, Aleksandra Sasin 55 4.1. Charakterystyka projektu i problemu do rozwiązania 55 4.2. Problemy, przed którymi stanęłyśmy 58 4.2.1. Od czego wszystko się zaczęło 58 4.2.2. Wiecznie chodzi o czas 58 4.2.3. Budżet? 59 4.2.4. Zespół 59 4.3. Nasza historia 60 4.3.1. Aplikacja webowa 60 4.3.2. Stara aplikacja mobilna 60 4.3.3. Nowa aplikacja mobilna – Android 61 4.3.4. Raporty i wykresy 61 4.4. Podejścia, techniki i technologie 62 4.4.1. UX (ang. User experience) a poręczność (ang. Usability) 62 4.4.2. Techniki testowania ergonomiczności 63 4.5. Przebieg badania funkcjonalności 64 4.5.1. Przygotowanie do testów – plan 64 4.5.2. Lista kontrolna 65 4.5.3. Zdefiniowanie person – rzecz z pogranicza projektowania i testów funkcjonalności 68 4.5.4. Rekrutacja użytkowników 73 4.5.5. Przygotowanie scenariuszy testowych 78 4.5.6. Komunikacja mailowa 81 4.5.7. Oświadczenia 82 4.5.8. Przygotowanie obserwatorów 83 4.5.9. Think Aloud (powiedz to głośno) – sesja z użytkownikiem 83 4.5.10. Role w testach funkcjonalności 85 4.5.11. Zebranie danych zwrotnej po zakończonej sesji - ankiety 86 4.5.12. Wnioski i zalecenia 90 4.5.13. Spotkanie z biznesem 93 4.5.14. Wprowadzenie zmian 96 4.6. Nasze rozwiązanie 96 4.6.1. Testy praktyczności aplikacji webowej 97 4.6.2. Testy poręczności aplikacji przenośnej 98 4.6.3. Testy użyteczności na prototypach i makietach 100 4.7. Wynik podjętych działań 101 4.8. Aplikacja webowa 103 4.9. Aplikacja przenośna 103 4.10. Raporty i wykresy 105 4.11. Podsumowanie 106 O autorkach 111 5. Umysł testujący: studium przypadków przenośnych 113 Aleksandra Kornecka 113 5.1. Wstęp – dlaczego powstał ten rozdział i dlaczego warto go przeczytać 113 5.2. Charakterystyka projektów przenośnych, a także częste charakterystyczne problemy spotykane w takich projektach 117 5.3. Podejście, które odpowiada na problemy oraz pomaga zapewnić jakość projektu mobilnego 129 5.4. Teoria Marra – przetwarzanie danych wzrokowej 130 5.5. Teoria Gestalt – sposób postrzegania części widoku 132 5.6. Teoria Jamesa J. Gibsona – oferty (afordancje) błędów ukryte w aplikacji 133 5.7. Znajomość gestów natywnych dla danego systemu 134 5.8. Wynik kognitywistycznego podejścia do testowania 137 5.9. Wnioski i rekomendacje 138 5.10. Aneks – testerska pomocnicza lista kontrolna 139 O autorce 141 Część III. Testowanie sprzętu i infrastruktury 143 6. Testowanie sprzętu 145 Adam Stankiewicz 145 6.1. Wprowadzenie 145 6.2. Koncept, dokumentacja, przygotowania do testowania 146 6.3. Poziomy testów 148 6.3.1. Testowanie modułowe 148 6.3.2. Testowanie początkowe – smoke test 149 6.3.3. Testowanie integracyjne 150 6.3.4. Testowanie weryfikacyjne 154 6.3.5. Testowanie długoterminowe 161 6.3.6. Testowanie równoległe integracyjno-weryfikacyjne 164 6.4. Typy testów 165 6.4.1. Testy manualne 165 6.4.2. Testy samoczynne 166 6.5. Techniki testowania 167 6.5.1. Techniki oparte na specyfikacji (czarnoskrzynkowe) 167 6.5.2. Techniki oparte na strukturze (białoskrzynkowe) 168 6.5.3. Techniki oparte na usterkach 168 6.5.4. Techniki oparte na doświadczeniu 169 6.6. Rodzaje testów 169 6.6.1. Testy produktywnościowe 169 6.6.2. Testy obciążeniowe 170 6.6.3. Testy przeciążające 170 6.7. Proces testowy 171 6.7.1. Planowanie testów 171 6.7.2. Zarządzanie testami 172 6.7.3. Kryterium zakończenie testów i ich ocena 173 6.7.4. Testowanie kolejnych wersji sprzętu 174 6.8. Wnioski 174 O autorze 178 7. Testowanie nowej technologii sieci komórkowej 179 Ewa Marchewka, Wojciech Anzel 179 7.1. Opis przypadku 179 7.2. Problemy komunikacyjne i kulturowe 180 7.2.1. Problemy z przekazywaniem wiedzy – szkolenie nowego zespołu 180 7.2.2. Problemy w trakcie współpracy w wielonarodowościowym zespole: różnice kulturowe 182 7.3. Problemy procesowe 185 7.3.1. Cykl dostarczania oprogramowania 186 7.3.2. Zmiana produktu i narzędzi 186 7.3.3. Współpraca z bliźniaczą organizacją 187 7.3.4. Rola testera w zespole 187 7.4. Problemy młodej organizacji i produktu 189 7.4.1. Nowy zespół 189 7.4.2. Problemy ze sprzętem 190 7.4.3. Optymalizowanie testów w środku wydania 191 7.4.4. Automatyzacja testów 192 7.5. Analiza końcowa 194 7.5.1. Jakość artykułu 194 7.5.2. Wnioski co do automatyzacji 195 7.5.3. Czynnik ludzki 195 7.5.4. Niedojrzałość sprzętu 195 7.6. Podsumowanie 196 O autorach 197 Część IV. Metody i techniki 199 8. BDD i Continous Integration w projekcie – korzyści, problemy i rozwiązania 201 Rafał Nazwalski 201 8.1. Wstęp. 201 8.2. Charakterystyka projektu – dlaczego Behavour Driven Development? 201 8.3. Korzyści z BDD i CI 204 8.4. Problemy z wdrożeniem BDD. Rola utrzymania testów 207 8.5. Sposoby powrotu na właściwy tor 215 8.6. Wnioski 216 O autorze 218 9. Automat do automatów, czyli jak wygenerować kod w kilka sekund 219 Natalia Krawczyk-Grzegorzewicz 219 9.1. Wprowadzenie 219 9.2. Automatyzacja tworzenia kodu 220 9.3. Podsumowanie 238 O autorce 240