
Wywiad: rola testów w dostarczaniu użytecznego oprogramowania dedykowanego
20.02.2023
Dobrze sprawdzony produkt to gwarancja zadowolenia inwestorów i przyszłych użytkowników. O tym, dlaczego rola testów w procesie dostarczania oprogramowania dedykowanego jest istotna, rozmawiamy z Michałem Dubielem. Jak sam twierdzi: „wszystko da się przetestować, znaleźć słabe punkty i je wyeliminować”.
Jak robić to efektywnie? Sprawdźmy!
Marta Skiba: ekscytujące wyzwania czy raczej spokojne zajęcie – które z tych stwierdzeń bardziej pasuje do Twojej pracy?
- Michał Dubiel: zdecydowanie nie ma tu miejsca na nudę. Testowanie obejmuje zadania realizowane praktycznie w całym cyklu rozwoju oprogramowania czy aplikacji, może być ukierunkowane na różne cele. Naprawdę dużo się tutaj dzieje. Zdecydowanie bliżej mi do ekscytacji z podejmowania nowych wyzwań niż spokoju 😉
Marta Skiba: rzeczywiście pasjonuje Cię to zajęcie, prawda?
- Michał Dubiel: testy stanowią kulminację działań związanych z tworzeniem oprogramowania. Moim zadaniem jest ocena kodu ale i użyteczności całego systemu/aplikacji. To ostatni krok przed przekazaniem produktu do działania. Ta praca stanowi gwarancję, że klienci otrzymają pełnowartościowe oprogramowanie z zachowaniem najwyższej jakości. I mam tego świadomość. Sam fakt drobiazgowego podejścia do realizacji zadania i możliwość wyłapania błędów przed tym, zanim utrudnią one życie innym, to duża przyjemność. Dodatkowo każdy projekt jest inny, wymaga odrębnego podejścia do tematu testowania, co sprzyja kreatywności w podejmowaniu decyzji co do zakresu prowadzonych testów. Nawet niepozornie wyglądająca aplikacja może się okazać nie lada wyzwaniem dla testera.
Marta Skiba: wspominałeś o tym, że testy są realizowane w całym cyklu życia produktu. Po co to robić, gdy cała aplikacja nie jest jeszcze gotowa?
- Michał Dubiel: im bardziej złożona aplikacja, tym więcej potencjalnych miejsc, w którym usterki mogą wystąpić. Wykrycie błędów we wczesnych etapach realizacji projektu, jak choćby w trakcie projektowania nowych rozwiązań, pozwala zaoszczędzić dużo czasu potrzebnego na naprawę ‘dziurawych’ miejsc, funkcjonalności niewystarczająco dobrze przemyślanych lub przeoczonych przez biznes, analityków czy nawet samych developerów. I nie zatrzymuje to prac nad całą aplikacją. Dlatego tak ważne jest prowadzenie weryfikacji w trakcie bieżących działań projektowych. Dodatkowo taki sposób prowadzenia testów buduje zaufanie i ma realny wpływ na satysfakcję klientów.
Marta Skiba: skoro już wywołałeś klientów, to możesz podać konkretny przykład biznesowy, który pokaże zasadność prowadzenia takich testów?
- Michał Dubiel: jasne. Warto przytoczyć przykład aplikacji umożliwiającej sprawną komunikację marki z klientami. Ogromną rolę w procesie utrzymania uwagi i satysfakcji klientów odgrywa niezawodność i stała dostępność do oferowanych usług. Wiąże się z tym jednak szereg pytań: czy uda się zdefiniować punkt, w którym aplikacja może przestać działać? Jak wielu użytkowników może z niej korzystać jednocześnie? Jak wiele transakcji można zrealizować, by system nadal działał poprawnie? Wszystkie te kwestie są kluczowe z punktu widzenia realizacji celów biznesowych naszego klienta.
Marta Skiba: jak rozumiem zrealizowanie tych celów biznesowych stało się możliwe dzięki dokładnej weryfikacji całego systemu?
- Michał Dubiel: dokładnie tak. Pomogły testy niefunkcjonalne, a dokładniej rzecz ujmując: testy wydajnościowe oraz obciążeniowe. Poddaliśmy ocenie to, jak zachowuje się aplikacja wraz ze wzrostem obciążeń, takich jak np. nadmierny ruch użytkowników, rosnąca liczba transakcji oczekujących na realizację, itp. Tylko znając możliwie zalety i ograniczenia produktu jesteśmy w stanie skutecznie z nim pracować i go rozwijać zgodnie z oczekiwaniami klientów.
Marta Skiba: i klienci zawsze dokładnie wiedzą, czego oczekiwać?
- Michał Dubiel: spotykamy się z różnymi typami klientów. Pamiętaj jednak, że tworzymy oprogramowanie dedykowane, które odpowiada na zaawansowane potrzeby odbiorców. Nasi klienci mają świadomość, że ich dotychczasowe rozwiązania wiążą się z pewnymi ograniczeniami i chcą je wyeliminować. Zawsze oczekują przy tym niezawodności. Samo podejście od testów znacznie zmieniło się na przestrzeni lat. Ogromna popularność pracy zwinnej sprawiła, że klienci stają się aktywnymi partnerami w procesie twórczym. Tym samym konieczne stało się wprowadzanie strategii testowania opartych o budowanie relacji i wzajemną komunikację.
Marta Skiba: angażowanie klienta w proces sprawdzania efektywności oprogramowania jest więc dobrym pomysłem?
- Michał Dubiel: zaangażowanie klienta a nawet samych użytkowników sprawdza się bardzo dobrze. Przeprowadzając testy z użytkownikami musimy wiedzieć, że wersja oprogramowania, która będzie przez nich testowana spełnia swoje zadania. Z naszego punktu widzenia została już sprawdzona. Jednak zadając użytkownikom pytania otwarte o ich wrażenia, oczekiwania, brakujące możliwości systemu, zdecydowanie lepiej poznajemy realne potrzeby grupy docelowej. Tym samym finalna wersja produktu może być lepiej do nich dopasowana. A przecież o to dopasowanie do indywidualnych potrzeb nam chodzi. Wykorzystując metodyki Agile jesteśmy w stanie pracować w ten sposób z klientami i prowadzić efektywne testy, podzielone na różne kategorie.
Marta Skiba: możesz podać przykłady takich testów podzielonych na różne etapy?
- Michał Dubiel: takie podejście pozwala oszczędzić sporo czasu i zasobów. Z jednej strony na aplikację patrzymy holistycznie, z drugiej natomiast możemy podzielić testy na kilka rodzajów, całkowicie niezależnych od siebie. Przykłady to chociażby oddzielne testy: bezpieczeństwa, interfejsu użytkownika, funkcji, itp. Całościowa analiza staje się dzięki temu bardziej wydajna.
Marta Skiba: skoro o wydajności mowa, czy można proces testowania jeszcze bardziej usprawnić?
- Michał Dubiel: stosujemy dwa rodzaje testów: manualne i automatyczne. W pierwszym przypadku tester realizuje zadania samodzielnie. W zależności od złożoności aplikacji, niejednokrotnie jest to bardziej czasochłonne podejście,pozwala jednak poruszać się w mniej sztywnych ramach. Czynnik ludzki odgrywa istotną rolę w prowadzeniu testów. Podczas pracy człowiek może zauważyć coś, czego nie przewidział początkowy scenariusz testowy. Od razu też ma szansę na weryfikację tej luki. Po drugiej stronie znajdują się testy automatyczne, które stosowane są zazwyczaj w przypadku bardziej rozbudowanego oprogramowania. To spora oszczędność czasu, jednak jest i druga strona medalu: testy automatyczne wymagają dłuższego przygotowania. Automatyzacja umożliwia jednak prowadzenie wydajnych testów przy niższych kosztach. To spory potencjał, który należy wykorzystywać.
Marta Skiba: które podejście do testów oprogramowania lepiej sprawdza się w praktyce?
- Michał Dubiel: wszystko zależy od indywidualnych wymagań każdego projektu. W testowaniu chodzi o wykrywanie błędów, by móc im szybko przeciwdziałać. Zależnie od podejścia, testy automatyczne mogą doskonale sprawdzać się przy weryfikacji poprawności kodu lub zwyczajnie symulować zachowanie użytkownika końcowego, poruszającego się po aplikacji, skupiającego się na tym ‘jak’ oprogramowanie powinno działać. Aby całość przebiegała sprawnie często integruje się je z procesem wdrażania i przeprowadza na każdym etapie rozwoju, tzw. continous testing. Zautomatyzowane testy są uruchamiane wielokrotnie w krótkim czasie, co sprzyja wykrywaniu błędów.Przy tej okazji warto wspomnieć też o testach regresyjnych, dzięki którym zyskujemy pewność, że nowo wprowadzane rozwiązania nie wpłyną negatywnie na aktualnie działający system. Równie istotny jest szybki feedback a automatyzacja to umożliwia. Jednak nie powinno się w tym wszystkim zapominać o aktywnym udziale człowieka. Tylko testy manualne pozwalają dopuścić emocje do procesu testowania. A realni użytkownicy przecież właśnie nimi będą się kierować.
Marta Skiba: optymalne jest więc łączenie testów manualnych i automatycznych?
- Michał Dubiel: optymalne podejście zawsze będzie dostosowane do skali, możliwości i wymagań każdego projektu. Jako twórcy oprogramowania dedykowanego doceniamy potęgę automatyzacji. Nie zapominamy przy tym o profitach płynących z testów manualnych. W naszej pracy najważniejszym celem jest pełna użyteczność oprogramowania. Planując działania testowe bierzemy pod uwagę wiele zmiennych. Wszystko po to, by zapewnić jakość, jakiej oczekuje indywidualny klient.
Marta Skiba: indywidualne podejście do klienta to wspólny mianownik wszystkich działań?
- Michał Dubiel: to podstawa, bez której nie da się mówić o użytecznym oprogramowaniu dedykowanym.
Marta Skiba: dziękuję. Myślę, że to dobre podsumowanie naszej rozmowy. Mam jednak wrażenie, że temat testów jeszcze się nie wyczerpał.
- Michał Dubiel: i słusznie. Udało nam się jedynie zarysować wybrane tematy. Świat testów oprogramowania oferuje zdecydowanie więcej. Dlatego moje wrażenie jest takie, że jeszcze wielokrotnie wrócimy do tych kwestii, by je dokładniej omówić.
Marta Skiba: najważniejszy wniosek może być jeden – bez testów oprogramowania zapewnienie jakości nie byłoby możliwe. I rzeczywiście warto zgłębić ten temat dokładniej.
Jeśli po przeczytaniu tego tekstu chcecie porozmawiać o szczegółach, zachęcamy do kontaktu.