Nasz proces
Testy Funkcjonalne
Testami Funkcjonalnymi (zwanymi także Testami Czarnej Skrzynki lub Testami Czarnoskrzynkowymi) określa się testy aplikacji mobilnej lub aplikacji webowej, w których tester nie zna budowy, sposobu działania aplikacji, którą testuje.
Po prostu jej używa i raportuje nieprawidłowości, pojawiające się w jej działaniu.
Metafora czarnej skrzynki nie pojawia się tutaj bez przyczyny.
Aplikacja mobilna lub webowa, która poddawana jest Testom Funkcjonalnym, jest traktowana jak przysłowiowa czarna skrzynka.
Testowaniu podlega jej „zewnętrzna” część (np. interfejs), nie jej „środek” (np. kod źródłowy).
Przeciwieństwem Testów Czarnoskrzynkowych są Testy Białoskrzynkowe, w których testowany jest właśnie „środek”, czyli kod aplikacji. W szczególności jest testowany pod kątem jego struktury, logiki działania.
Testy Funkcjonalne aplikacji pozwalają sprawdzić:
- prawidłowość działania danej funkcji
- niesprzeczność, kompletność wymagań funkcjonalnych i niefunkcjonalnych
- interfejs użytkownika
- interfejsy API
- zabezpieczenia
- komunikację na linii klient - serwer.
Ponadto, wiele problemów wiążących się z wymaganiami jest widocznych już na etapie projektowania Testów Funkcjonalnych, na długo przed przeprowadzeniem testów na gotowym oprogramowaniu.
Wykonywanie Testów Funkcjonalnych pozwala także ukonkretnić wyobrażenie odnośnie działania systemu w określonych warunkach.
Co równie ważne, wspólne testowanie oprogramowania przez analityków biznesowych, programistów oraz klientów pozwala uzyskać spójną i wspólną wizję sposobu działania aplikacji.
Testy są skutecznym i rekomendowanym narzędziem, wykorzystywanym w równym stopniu do walidacji i weryfikacji wymagań.
Kim są testerzy, wykonujący Testy Funkcjonalne?
Zazwyczaj testerzy nie są programistami, a ich wiedza i doświadczenia programistyczne są zbliżone do wiedzy i doświadczeń przeciętnego, statystycznego użytkownika aplikacji. Brak wiedzy i doświadczeń testerów jest celowy i pożądany.
Chodzi o uzyskanie specyficznej perspektywy osoby „nietechnicznej”.
Testerzy są oczywiście informowani do czego aplikacja służy, natomiast nie są zaznajomieni ze sposobem działania aplikacji - tego w jaki sposób ona dokonuje obliczeń.
W Testach Funkcjonalnych chodzi o sprawdzenie działania aplikacji webowej, aplikacji mobilnej z perspektywy osoby, która będzie jej potencjalnym użytkownikiem.
Użytkownikiem oczekującym od niej działania intuicyjnego, prostego, zbliżonego do działania aplikacji analogicznych.
I oczywiście bezbłędnego. Pozwalającego osiągać cele i wykonywać zadania.
Aplikacja poddawana Testom Funkcjonalnym ma przede wszystkim działać zgodnie z oczekiwaniami użytkowników, nie jej twórców, którzy oceniają ją pod kątem spełniania wymagań technicznych. Testy Funkcjonalne sprawdzają działanie aplikacji zgodnie z określonymi wymaganiami.
Jakie są cele Testów Funkcjonalnych?
Głównym celem Testów Funkcjonalnych jest sprawdzenie sposobu działania aplikacji pod kątem funkcjonalnym.
Mówiąc nieco bardziej technicznym językiem, celem Testów Funkcjonalnych jest sprawdzenie sposobu implementacji funkcjonalności zawartych w Specyfikacji Wymagań Systemu Informatycznego.
W metodzie tej chodzi o odpowiedź na pytania - w jaki sposób system się zachowuje? Jak jest postrzegany przez użytkownika?
W jaki sposób realizuje zadania? W jaki sposób pozwala osiągać cele?
Przedmiotem testów mogą być całe aplikacje, bądź jej części. Testami objęte są także sposoby współpracy aplikacji z innymi, zewnętrznymi systemami.
Jak każde badanie, także Testy Funkcjonalne są skupione na wykrywaniu, analizowaniu pojawiających się błędów, niedoskonałości działania aplikacji.
Służą nie tylko diagnostyce, ale także określaniu przyczyn wystąpienia błędu. Choć, oczywiście, nie mamy na myśli przyczyn w sensie technicznym.
Testowanie aplikacji mobilnej lub webowej nie jest jednak przypadkowe, ale zazwyczaj jest realizowane w oparciu o scenariusze testowe, które służą do diagnozowania poszczególnych funkcjonalności.
Scenariusz testowy jest zbiorem czynności, jakie osoba testująca aplikację powinna wykonać.
Patrząc na Testy Funkcjonalne z jeszcze innej perspektywy, można powiedzieć, że ich celem jest sprawdzenie w jaki sposób, w jakim stopniu aplikacja jest w stanie realizować cele biznesowe.
Testy Funkcjonalne są skoncentrowane na:
- testowaniu najważniejszych funkcji aplikacji
- sprawdzeniu podstawowej użyteczności aplikacji, w szczególności, czy poruszanie się po kolejnych ekranach jest bezproblemowe
- określeniu poziomu dostępności aplikacji
- określeniu warunków błędów.
Kiedy można przeprowadzić Testy Funkcjonalne?
Wydawać by się mogło, że testować można dopiero gotową, ukończoną wersję aplikacji mobilnej lub webowej. Nie jest to jednak warunek konieczny.
Testom mogą być poddawane zarówno produkty gotowe, jak również znajdujące się dopiero w trakcie produkcji. Testy mogą być wykonywane na dowolnym etapie prac. Bardzo popularną metodą jest testowanie aplikacji w kolejnych, kluczowych stadiach jej powstawania.
Regularne, zaplanowane testy pozwalają uniknąć wielu błędów oraz kosztów związanych z ich naprawą.
Różnią się od testów wykonywanych na ukończonej, wdrożonej aplikacji celem.
Te ostatnie są raczej nastawione na sprawdzenie spójności aplikacji, jej kompletności oraz bezpieczeństwa, jakie zapewnia użytkownikom.
Testy wykonywane po ukończeniu danego etapu prac są bardziej nastawione na sprawdzenie poprawności działania danej funkcjonalności oraz sposobu, w jaki ona pozwala realizować cele biznesowe.
Rodzaje Testów Funkcjonalnych
Najbardziej podstawowym rozróżnieniem testów oprogramowania jest podział według kryterium testera. A może nim być człowiek lub program testujący.
W pierwszym przypadku mówimy o testach ręcznych, manualnych, w drugim mamy na myśli testy automatyczne.
Testy manualne, siłą rzeczy, są bardziej wymagające pod kątem:
- budżetu
- organizacji sesji testowych
- czasu
- metody
- wiarygodności, rzetelności, poprawności.
Wszędzie tam, gdzie testerem jest człowiek istnieje większe ryzyko popełnienia błędu, niezgodności działań z metodyką, scenariuszem testu.
Testy manualne mają jednak także ogromną zaletę - pozwalają na przetestowanie aplikacji z czysto ludzkiej perspektywy.
Dają wgląd nie tylko w automatycznie wykonane działania, które mogą prowadzić do pożądanych lub niepożądanych rezultatów (aplikacja działa zgodnie z oczekiwaniami vs. aplikacja nie działa zgodnie z oczekiwaniami).
Pozwalają dostrzec czysto ludzki wymiar interakcji człowiek - oprogramowanie.
A ma to kolosalne znaczenia dla oferowania satysfakcjonującego User Experience.
Manualne Testy Funkcjonalne zazwyczaj skupiają się na działaniu interfejsu aplikacji. Odpowiadają na pytanie, czy dana funkcja działa poprawnie, jak również, czy działa w sposób satysfakcjonujący.
Tej bardzo ważnej informacji zwrotnej testy automatyczne, siłą rzeczy, nie są w stanie zagwarantować. Stąd też ich mniejsza użyteczność w badaniach UX.
Testy automatyczne są realizowane w oparciu o skrypt testowy i pozwalają weryfikować działanie aplikacji w wielu wymiarach.
Ich główną zaletą jest szybkość wykonania, o wiele większa niezawodność i mniejsza podatność na błędy.
Są szczególnie wskazane w sytuacji rozbudowy aplikacji, dodawania nowych funkcji, bądź sprawdzania zachowania aplikacji po wprowadzonych pracach naprawczych, optymalizacyjnych.
Korzyści testowania aplikacji webowych i aplikacji mobilnych
Dlaczego warto przeprowadzać Testy Funkcjonalne? Koronnym argumentem na rzecz przeprowadzania testów aplikacji jest oczywiście koszt, jaki generują błędy.
A, co do zasady, koszt naprawy błędów rośnie wraz ze złożonością aplikacji. Jest najniższy na wczesnych stadiach jej produkcji i bardzo wysoki, gdy aplikacja funkcjonuje już na rynku.
Błędy usuwane w aplikacjach już wdrożonych, które funkcjonują na rynku, mają niestety tę wadę, że same mogą być źródłem błędów.
Poprawa działania danej funkcji może wpływać na działanie innych funkcji, a to komplikuje pracę i podwyższa koszt naprawy.
Dlatego testowanie funkcji powinno odbywać się jeszcze w czasie produkcji aplikacji. Dzięki temu ryzyko wystąpienia błędów, konfliktów, sprzeczności w logice działania jest o wiele mniejsze.
Prace naprawcze także w takich warunkach są o wiele prostsze do przeprowadzenia.
Mówiąc o koszcie mamy na myśli nie tylko koszt finansowy, ale także wizerunkowy, związany z utratą wiarygodności, zaufania, pogorszeniem reputacji aplikacji.
A straty w tym wymiarze przekładają się na straty finansowe. Odbudowywanie reputacji jest w świecie produktów cyfrowych zadaniem trudnym i jednocześnie bardzo kosztownym.
Testy są konieczne także z bardziej oczywistego powodu. Stworzenie aplikacji bezbłędnej jest po prostu bardzo trudne. Przyczyną, źródłem błędu bywa pomyłka, przeoczenie, jak również błędne założenie, czy niedopatrzenie.
Podatni na popełnianie błędów są nie tylko programiści, ale wszyscy interesariusze zaangażowani w powstawanie aplikacji.
Warto także przypomnieć inną oczywistość.
Z punktu widzenia użytkownika aplikacji mobilnej, czy webowej, aplikacja, w której występują błędy jest aplikacją bezużyteczną, ryzykowną, budzącą nieufność.
Eliminacja błędów jest konieczna, jeśli aplikacja ma odnieść rynkowy sukces.
Można śmiało powiedzieć, że aplikacja, w której występują błędy jest tyleż atrakcyjna dla użytkownika, co bolid nie posiadający kół dla kierowcy rajdowego.
Sposoby przeprowadzania Testów Funkcjonalnych
Testy można przeprowadzać na co najmniej kilka sposobów, w zależności od potrzeb oraz celów, jakie chcemy osiągnąć.
Testy Funkcjonalne aplikacji webowych, mobilnych mogą polegać na:
- sprawdzeniu funkcji aplikacji zgodnie ze specyfikacją
- wykonaniu konkretnych zadań w aplikacji
- spontanicznym użytkowaniu aplikacji bez wyraźnego celu, scenariusza.