IoT i świat mobilny — dlaczego warto testować integracyjnie?
– Testowanie integracyjne pokaże nam, jak nasze komponenty współdziałają ze sobą jako całość. Testowanie funkcjonalne pomoże nam sprawdzić natomiast jakość poszczególnych funkcjonalności – opowiada Grzegorz Stańczyk, R&D Manager departamentu Embedded w ASSA ABLOY, z zamiłowania tester oprogramowania. Rozmawiamy m.in. o tym, dlaczego testy integracyjne są kluczowe w świecie mobilnym i IoT.
Spis treści
Cześć! Na początek opowiedz, proszę, coś o sobie. Czym zajmujesz się zawodowo?
Cześć! Wygląda na to, że jakieś 10 lat temu zaraziłem się na dobre testowaniem oprogramowania, którym zajmuję się przez dłuższy czas swojej kariery w branży IT. Jako tester byłem odpowiedzialny za dbanie o jakość rozmaitych aplikacji desktopowych, mobilnych, webowych, a ostatnimi czasy również firmware’u w otaczającym nas świecie IoT.
Podczas naszej pierwszej rozmowy powiedziałeś, że testy integracyjne są kluczowe w świecie mobilnym i IoT. Dlaczego?
Tak, dokładnie. Biorąc pod uwagę złożoność komponentów technologicznych wykorzystywanych w obu tych światach, uważam ten obszar testowania za wręcz wymagany.
Wszyscy jesteśmy na co dzień użytkownikami coraz bardziej zmyślnych urządzeń, z którymi uwielbiamy komunikować się przy pomocy naszych smartfonów. Żeby ta komunikacja mogła zaistnieć, wszystkie trybiki tej układanki muszą ze sobą współgrać.
Do takowych zaliczyć można aplikację mobilną, z której wydajemy polecenia naszym urządzeniom lub odbieramy od nich istotne dla nas komunikaty. Żeby to było możliwe, oprogramowanie urządzenia musi być w pełni kompatybilne z oprogramowaniem na naszym smartfonie. Oba te urządzenia muszą porozumiewać się zatem tym samym zrozumiałym dla nich językiem. No i oczywiście muszą to robić przez wspólny kanał, czyli lubiany w tym świecie interfejs Bluetooth czy np. na większe odległości przez sieć.
Żeby w pełni przetestować taki ekosystem, musimy stosować właśnie podejście testów integracyjnych, czyli w tym wypadku nasze ulubione E2E.
Opowiedz, proszę, jakie korzyści przynosi stosowanie testów integracyjnych w kontekście środowiska mobilnego?
Według mnie ogromne. Jeśli w procesie wytwarzania danej aplikacji zastosujemy to podejście już od samego początku, to pozwoli nam to na wcześniejsze wykrycie wszelkich nieprawidłowości na styku wspomnianych wcześniej światów.
Jesteś przekonany, że testy integracyjne są jedyną drogą do uniknięcia nieprzyjemnych niespodzianek na końcu procesu testowania. Dlaczego?
Może nie nazwałbym ich jedyną i słuszną drogą. Według mnie powinny być nieodłącznym elementem tego procesu jako kryterium równoważne testom funkcjonalnym. Tak naprawdę te dwa podejścia nie powinny istnieć osobno.
Proces testowania stosujemy po to, żeby na jego końcu mieć „niemal absolutną” pewność, że nasze oprogramowanie będzie działać poprawnie i nie przysporzy użytkownikom niechcianych problemów czy niespodzianek.
Testowanie integracyjne pokaże nam, jak nasze komponenty współdziałają ze sobą jako całość. Testowanie funkcjonalne pomoże nam sprawdzić natomiast jakość poszczególnych funkcjonalności.
Testowanie integracyjne na końcu tego procesu pomoże nam zwłaszcza wtedy, gdy dane komponenty i ich funkcjonalności powstają w środowisku rozproszonym. Mam tu na myśli taki sposób ich tworzenia, gdzie za każdy komponent może być odpowiedzialny inny zespół developerski. Na co dzień zespoły te mogą pracować oddzielnie i testować swoje funkcjonalności na własnym podwórku. Zintegrowanie ich będzie przed wydaniem takiej solucji kluczowe.
Aczkolwiek nie powinno się z tym zwlekać, najlepiej stosować zasadę „im wcześniej, tym lepiej”, oczywiście na tyle, na ile pozwala na to stopień rozwoju danego komponentu.
Wspomniałeś o podejściu UX-owym w kontekście testów integracyjnych. Jakie znaczenie ma dla Ciebie to podejście i jak wpływa na pisanie scenariuszy testów?
O tak! Dla mnie jest tutaj kluczowe. Przecież to właśnie my, użytkownicy, korzystamy ze zintegrowanych komponentów, które powstawały w wyniku prac zespołów developerskich.
Podejście UX znacznie ułatwia tworzenie scenariuszy testowych, które powinny znaleźć się na naszej liście do wykonania. Jeśli dana aplikacja czy urządzenie ma służyć użytkownikom jak najlepiej i nie sprawiać im problemów czy powodować frustracji, powinno się uwzględnić ten obszar.
Któż z nas nie szukał magicznego przycisku wyzwalającego pożądaną akcję, który powinien być w dokładnie tym miejscu, a z jakiegoś powodu znalazł się on na zupełnie innej zakładce na końcu listy. Podałem tutaj typowy przykład UI, ale w świecie IoT może to być np. obsługa ekspresu do kawy przy pomocy aplikacji, gdzie przykładowo w trakcie jej przygotowywania chciałbym mieć możliwość zwiększenia ilości wody czy mocy kawy.
Takie podejście w tworzeniu scenariuszy testowych nadaje moim zdaniem wymiar ludzki naszemu procesowi testowania i pomaga zintegrować ze sobą komponenty biorące udział w danej czynności.
Czy istnieją jakieś sytuacje, w których uważasz, że testy integracyjne mogą nie być odpowiednie lub skuteczne?
Jedynie chyba w przypadku prostych aplikacji, w których nie ma dużej liczby komponentów.
Wspomniałeś o testach funkcjonalnych jako przeciwwadze dla testów integracyjnych. Jakie są główne wady, które widzisz w testach funkcjonalnych?
Myślę, że nie jest to wada, a ich specyfikacja. Tak jak już wcześniej wspomniałem, ich zastosowanie wiąże się z koniecznością przetestowania danego feature’a i jest w stanie szybko dostarczyć rezultat. To, jak ten feature wpłynie na całość, dowiemy się już przy przeprowadzaniu testów integracyjnych.
A czy istnieją jakieś sytuacje, w których są one korzystniejsze? Można tak stwierdzić, ale tylko w momencie, kiedy rozwijamy daną solucję i chcemy mieć obraz jakości jak najszybciej, żeby np. dokonać wcześniejszych poprawek.
Jednak choćby każdy z wprowadzanych feature’ów był przez nas testowany z ultrachirurgicznym pokryciem testami funkcjonalnymi, i tak integracyjnie może okazać się, iż nasza solucja całościowo nie zadziała tak, jak powinna.
Pracujesz w modelu testów integracyjnych od lat. Czy zauważyłeś może jakieś zmiany w podejściu do tego typu testowania na przestrzeni czasu?
Tak. Dziś już nie trzeba nikogo do tego podejścia przekonywać tak, jak jeszcze kilka lat temu. Oczywiście mam tu na myśli też kwestię kosztów przeprowadzania poszczególnych procesów.
Dziś biznes wie dobrze, że tylko połączenie kilku technik zapewnia najlepszą jakość produktów, co później przekłada się na poziom satysfakcji użytkowników i pozwala zbudować wzajemne zaufanie.
Tylko integracja!!!
Grzegorz Stańczyk. Od 10 lat Tester oprogramowania z zamiłowania. Obecnie R&D Manager departamentu Embedded w ASSA ABLOY. Poprzednio programista testów automatycznych w .NET oraz Python – Lead Embedded Test Engineer. Miłośnik Retro Gier — konsol oraz komputerów minionej epoki.
Zdjęcie główne pochodzi z Unsplash.com.