treści
Wprowadzenie
Adam Roman, Karolina Zmitrowicz
1. Automatyzacja testów
Natalia Krawczyk
1.1. Opis przypadku
1.2. Rozwiązanie problemu
1.3. Podsumowanie
1.4. Wnioski, zalecenia, rekomendacje
2. Testowanie mobilne
Piotr Wicherski
2.1. Opis przypadku
2.2. Fragmentacja
2.3. Koszt urządzeń i rozproszenie zespołów
2.4. Problemy i wyzwania
2.4.1. Dobór urządzeń
2.4.2. Zasilanie
2.4.3. Chłodzenie
2.4.4. Przygotowanie urządzeń
2.4.5. Przygotowanie
2.4.6.
2.4.7. Organizacja
2.4.8.
2.4.9. Analiza rozwiązań w chmurze
2.4.10. Rozliczanie czasu dostępu
2.4.11. Analiza rozwiązania lokalnego
2.4.12. Potencjalne zalety posiadania laboratorium urządzeń mobilnych
2.4.13. Potencjalne wady posiadania laboratorium urządzeń mobilnych
2.4.14. Możliwości rozwoju
2.4.15. Sprzęt .
2.4.16. Wnioski, zalecenia, rekomendacje
3. Testowanie aplikacji mobilnych
Ewa Ludwiczak (Bielska), Tomasz Mnich
3.1. Opis przypadku
3.2. Główne różnice między testowaniem aplikacji mobilnych a aplikacji desktopowych i webowych
3.3. Fragmentacja
3.3.1. Opis przypadku
3.3.2. Rozwiązanie problemu
3.4. Automatyzacja testów
3.4.1. Opis przypadku
3.4.2. Rozwiązanie problemu
3.5. Wsparcie osób z dysfunkcjami wzroku w korzystaniu z aplikacji
3.5.1. Opis przypadku
3.5.2. Rozwiązanie problemu
3.6. Imitowanie odpowiedzi API
3.6.1. Opis przypadku
3.6.2. Rozwiązanie problemu
3.7. Testy aplikacji w zmiennych warunkach sieciowych
3.7.1. Opis przypadku
3.7.2. Rozwiązanie problemu
3.8. Skąd czerpać wiedzę o działaniu aplikacji w środowisku produkcyjnym
3.8.1. Opis przypadku
3.8.2. Rozwiązanie problemu
3.9. Podsumowanie
4. Testy użyteczności – badanie użyteczności sklepów internetowych ze zdrową żywnością
Emilia Feliks, Magdalena Damaschke, Adrian Modzelewski
4.1. Opis przypadku
4.2. Rozwiązanie problemu
4.3 Metodologia badania
4.4. Wyniki przeprowadzonych badań – analiza i rekomendacje
4.5. Wnioski i zalecenia
5. Testy wydajności
Jacek Okrojek
5.1. Wprowadzenie
5.2. Testy wydajności w końcowej fazie projektu
5.3. Brak lub nieprecyzyjne wymagania
5.4. Zbyt ogólne założenia dla testów
5.5. Podsumowanie
6. Wdrożenie testów eksploracyjnych w dużej
Radosław Smilgin
6.1. Opis przypadku
6.2. Świadomość testowania eksploracyjnego
6.3. Punkt startowy
6.4. Decyzja
6.5. Techniki i zasady testowania
6.5.1. Testowanie sterowane kontekstem
6.5.2. Sesja
6.5.3. Narzędzia
6.5.4. Inne techniki
6.5.5. Raportowanie
6.5.6. Środowiska
6.5.7. Funkcje
6.5.8. Czas
6.5.9. Wyniki sesji
6.5.10. Inne raporty
6.5.11. Łączenie raportów
6.5.12. Sprawozdanie
6.6. Podsumowanie
7. Fenomen i prostota
Adrian Bala
7.1. Opis przypadku
7.2. Uwarunkowania
7.3. Pomysł
7.4. Spotkanie organizacyjne
7.5. Pierwsze kroki
7.6. Ustalenia
7.7. Decyzje
7.8. Prace
7.9. Jakość
7.10. API
7.11. Panel aplikacji
7.12. Platforma aplikacji
7.13. Testy alfa
7.14. Testy beta
7.15. Testy akceptacyjne
7.16. Podsumowanie
7.17. Retrospekcja
7.18. Dziesięć przekazań Emila
7.19. Słownik wybranych pojęć
8. Do trzech razy sztuka
Marta Firlej
8.1. Opis przypadku
8.2. Podejście pierwsze
8.3. Podejście drugie
8.4. Podejście trzecie
8.5. Podsumowanie
8.6. Dobry produkt to nie wszystko – wnioski
9. Upadki w projektach z punktu widzenia testera
Tomasz Olszewski
9.1. Opis przypadku
9.2. Studium porażki
9.3. Znaki ostrzegawcze
9.4. Wstępne fazy projektu
9.5. Fazy dewelopmentu i testowania
9.6. Na koniec z nadzieją – wnioski
10. Zarządzanie dużym zespołem testerów w praktyce – opis przypadku
Anna Jankowiak, Marek Falkowski
10.1. Wprowadzenie
10.2. Regulacje, regulacje, regulacje
10.3. Ilu was tam pracuje przy jednym błędzie
10.4. Bank to nie firma programistyczna
10.5. Jedyną stałą rzeczą jest zmiana
10.6. Czy my mówimy tym samym językiem?
10.7. Ale ktoś TO musi przetestować
10.8. Kto lubi testy regresji? Każdy, kto nie musi ich wykonywać
10.9. Ale na czym mam testować?
10.10. Nic tak nie motywuje pracownika jak dodatkowa premia
10.11. Kontrola to najwyższa forma uznania
10.12. Jedna metodologia dla wszystkich
10.13. Jednolite raportowanie
10.14. Grywalizacja
11. Trendy – nowa metodyka zapewnienia jakości: jak sztuczna inteligencja pomogła wybrać, gdzie zastosować najlepsze praktyki pisania kodu
Jarosław Hryszko
11.1. Opis przypadku
11.2. Studium problemu
11.3. Rozwiązanie problemu
11.4. Podsumowanie – rezultaty
12. Epilog – przyszłość testowania oprogramowania
Jędrzej Osiński
Testowanie aplikacji mobilnych opiera się na uniwersalnych paradygmatach testowania oprogramowania, wymaga jednak ukierunkowanego podejścia, specyficznego dla platform mobilnych. To ważne, aby zrozumieć, jak testowanie aplikacji mobilnych różni się od testów aplikacji przeglądarkowych i desktopowych. Podczas testów należy wziąć pod uwagę oczekiwania użytkowników względem urządzeń przenośnych i zainstalowanych na nich aplikacji, które dotykają niemal każdej dziedziny życia.
Proces testowania aplikacji mobilnych to duże wyzwanie przede wszystkim z uwagi na:
• szeroką gamę urządzeń mobilnych (m.in. smartfony, tablety, urządzenia typu wearables) i ich producentów;
• różne systemy operacyjne (m.in. Android, iOS, Windows Phone);
• częste aktualizacje systemów operacyjnych i aplikacji mobilnych;
• szeroki zakres wielkości i rozdzielczości ekranów o różnym zagęszczeniu pikseli;
• zmienne warunki sieciowe, w których funkcjonują aplikacje;
• minimalizację wykorzystania baterii.
Celem poniższego rozdziału jest przedstawienie problemów, jakie napotkać można podczas codziennej pracy testera aplikacji mobilnych. Każdy z przedstawionych problemów zawiera opis, przykładowe rozwiązania oraz ich wady i zalety. Ze szczególną uwagą przedstawione są zagadnienia dotyczące dwóch najpopularniejszych mobilnych systemów operacyjnych: Android i iOS5. Dla wybranych tematów dostępne są również przykładowe testy umieszczone w repozytoriach autorów tekstu6. Skupienie się na konkretnych problemach i ich praktyczne ujęcie mają ułatwić rozpoczęcie przygody z mobilnością zarówno przez początkującego, jak i zaawansowanego testera7.
3.2. Główne różnice między testowaniem aplikacji mobilnych a aplikacji desktopowych i webowych
Aby zrozumieć różnice w podejściu do testów aplikacji mobilnych w porównaniu do przeglądarkowych i desktopowych, należy poznać cechy i zachowania charakterystyczne dla mobilnego ekosystemu8. Poniższa lista jest dobrym wstępem do zapoznania się z jego specyfiką. Bardziej szczegółowe informacje, poszerzone o przypadki testowe
5 Statystyki dotyczące popularności mobilnych systemów operacyjnych, https://www.netmarketshare. com/operating-system-market-share.aspx?qprid=8&qpcustomd=1
6 Poglądowa aplikacja z przykładowymi testami na system iOS, https://github.com/bielski/iOSTestingExample, oraz Android https://github.com/tomaszmnich/AndroidTestingExample
7 W momencie publikacji książki najnowszymi wersjami systemów były Android 7.0, iOS 10 oraz Windows 10 Mobile.
8 https://smartbear.com/learn/software-testing/what-is-mobile-testing/; https://www.utest.com/articles/ why-mobile-apps-testing-is-different-from-desktop-and-web
typowe dla urządzeń mobilnych, można znaleźć w książce Daniela Knotta „Hands-On Mobile App Testing”9.
Wielkość ekranu
Różnorodność wielkości, proporcji oraz gęstości ekranów może być przytłaczająca.
Z punktu widzenia testera aplikacja mobilna powinna zostać sprawdzona w każdej możliwej konfiguracji ekranu. Jest to jednak bardzo trudne, a wręcz niewykonalne zadanie. Zróżnicowanie urządzeń mobilnych jest dużym wyzwaniem w planowaniu i wykonywaniu testów; więcej na ten temat w podrozdziale 3.3. Fragmentacja.
Możliwość obrotu ekranu
Akcelerometr umieszczony w urządzeniu mobilnym wykorzystywany jest m.in. w celu przełączenia między trybem ekranu w orientacji poziomej i pionowej. Ta prosta funkcjonalność zapewnia ogromne możliwości, dostarcza bowiem dodatkowe rozmieszczenie elementów interfejsu użytkownika bez konieczności użycia jakiegokolwiek przycisku. Elementy interfejsu graficznego aplikacji wyświetlają się w inny sposób w zależności od poziomej lub pionowej orientacji ekranu urządzenia mobilnego. Testowanie aplikacji dla różnych orientacji ekranu generuje dodatkowe przypadki testowe i wymaga szczególnej uwagi.
Zasoby pamięci i RAM
W zależności od parametrów technicznych pamięć urządzenia mobilnego można szybko zapełnić, instalując i uruchamiając wiele aplikacji jednocześnie. Aplikacje, które są uruchomione w tle, mogą być wtedy usunięte z pamięci operacyjnej przez system. Użytkownik, który wraca po jakimś czasie do aplikacji, nie powinien być zaskoczony jej stanem i móc płynnie kontynuować korzystanie z jej funkcjonalności. Warto więc zwrócić uwagę na to, jak aplikacja mobilna zachowuje się w różnych warunkach wykorzystania pamięci na telefonie. Zwłaszcza dla starszych urządzeń o niższych parametrach technicznych należy przetestować aplikację pod kątem działania w zubożonych warunkach pamięci. Żywotność baterii
Wzrost wydajności aplikacji mobilnych nie idzie w parze z innowacyjnością w dziedzinie wydłużenia żywotności baterii. Podczas testów warto sprawdzić, jak aplikacja zachowa się w różnych warunkach naładowania baterii, na przykład w stanie bliskim rozładowania lub po ponownym uruchomieniu telefonu spowodowanym całkowitym wyładowaniem.
Urządzenia wskazujące i klawiatura
Interakcja użytkownika ze standardową aplikacją przeglądarkową sprowadza się do użycia klawiatury i myszki. Niektóre urządzenia mobilne wspierają możliwość podłączenia
9 Daniel Knott “Hands-On Mobile App Testing”, rozdział 1–4.