Jeśli zależy nam na satysfakcji użytkowników – a co do tego chyba nie ma wątpliwości – testowanie jest potrzebne. Pozwala wyłapać błędy, które mogły zostać popełnione w każdej fazie tworzenia aplikacji. Dzięki testom zwiększa się jakość końcowego produktu: gdy wykonano je poprawnie, minimalizuje się ryzyko, że użytkownik końcowy trafi na błędy krytyczne.

Podobnie jak o przydatność testów, klienci pytają również o to, które są lepsze: testy manualne czy testy automatyczne? To zależy, ale nie chcemy zostawiać nikogo z tak enigmatyczną odpowiedzią. Postanowiliśmy przygotować serię publikacji, w których opowiemy o testowaniu oprogramowania: o teorii i praktyce. Przedstawimy wady i zalety obu rodzajów testów, różnice między nimi oraz sytuacje, w których najlepiej się sprawdzają.

Na początek testy manualne, czyli ręczne testowanie oprogramowania. Mówiąc w uproszczeniu, polega ono na tym, że tester manualny wczuwa się w rolę końcowego użytkownika i przechodzi ręcznie przez daną aplikację.

 

Rodzaje testów manualnych

Testy manualne najczęściej dzielimy na:

  • funkcjonalne – nazywane są również “testami czarnej skrzynki”. Jest to rodzaj testów, które skupiają się nie na szczegółach technicznych, ale na tym, CO system robi. Dotyczą “widocznego” zachowania się aplikacji, czyli funkcji, z którymi będzie miał do czynienia użytkownik końcowy. Działanie produktu sprawdza się na podstawie: określonych wcześniej wymagań, jakie mają być spełnione, dostarczonej dokumentacji i logiki biznesowej. Istotne są także sugestie testera manualnego, który weryfikuje system i próbuje odgadnąć oczekiwania odbiorcy. Testy funkcjonalne można wykonywać na wszystkich poziomach (etapach).
  • niefunkcjonalne – można je nazwać określaniem parametrów. Ten rodzaj testów skupia się na tym, JAK system działa. To nic innego, jak mierzenie charakterystyk danego produktu możliwych do oceny na skali (np. czas ładowania danej strony, czas utworzenia danego rekordu w aplikacji itp.). Należy pamiętać, że parametry zazwyczaj nie są jasno zdefiniowane w dokumentacji. Nawet jeśli aplikacja okaże się idealna pod względem funkcjonalnym, użytkownik końcowy nie będzie zadowolony z korzystania z niej, gdy będzie dla niego nieprzyjazna, zbyt wolna w działaniu itp. Testy funkcjonalne mogą być wykonywane na wszystkich poziomach (etapach).

 

Podział testów funkcjonalnych

Spotykamy się z różnym podziałem testów funkcjonalnych, można do nich zaliczyć m.in.:

  • testy związane ze zmianami (potwierdzające lub regresyjne)

Po usunięciu znalezionego wcześniej błędu (buga, usterki), aplikacja powinna zostać przetestowana w celu upewnienia się, że naprawa przebiegła pomyślnie. Tester manualny sprawdza to na podstawie opisu zgłoszonego błędu, bez rozszerzania zakresu weryfikacji. Są to testy potwierdzające.

Testy regresyjne wykonywane są po modyfikacji aplikacji. Polegają na sprawdzeniu, czy po naprawie defektu nie pojawiły się nowe błędy w tych obszarach aplikacji, które wcześniej działały poprawnie. Zestawy testów regresyjnych są powtarzane wiele razy, dlatego świetnie nadają się do automatyzacji. Testy regresyjne mogą być wykonywane na wszystkich etapach.

  • testy oparte na funkcjonalności wraz z napisaniem przypadków testowych – można je nazwać testami opartymi na specyfikacji (wymaganiach). Każda funkcjonalność, jaka ma zostać dostarczona w ramach danej aplikacji, powinna zawierać opis wymagań. Dopiero po ich spełnieniu można ją uznać za poprawnie działającą. Testy te bazują na zakresie, w jakim ma działać dana funkcjonalność. Dla ich przeprowadzenia powinny być utworzone przypadki testowe, które pokryją zarówno pozytywne, jak i negatywne obszary działania danej funkcjonalności aplikacji.
  • testy eksploracyjne – można je nazwać również testami ad hoc lub “testerską improwizacją”. Bazują one na doświadczeniu, wiedzy oraz intuicji testera manualnego. Korzysta się z nich zazwyczaj w przypadku braku dokumentacji lub niewystarczających zasobów, co uniemożliwia przeprowadzenie innego rodzaju testowania.

Testy eksploracyjne, jeśli aplikacja nie jest skomplikowana, można dość szybko przeprowadzić (w przypadku prostej aplikacji – nawet w 60 min). Dzięki temu zyskujemy czas, który spędzilibyśmy na przygotowaniu dokumentacji, a także poznajemy obszary, do których nie zostały napisane przypadki testowe. Jest to doskonała metoda na poznanie działania aplikacji. Testy eksploracyjne mogą być wykonywane zarówno w początkowej, jak i końcowej fazie tworzenia produktu.

 

Podział testów niefunkcjonalnych

Do testów niefunkcjonalnych można zaliczyć:

  • testy wydajnościowe – sprawdzają wydajność produktu. Aby je skutecznie przeprowadzić, tester manualny powinien wykonać w aplikacji jak najwięcej działań, które zweryfikują niezawodność, stabilność oraz dostępność konkretnych obszarów. Tego rodzaju testowanie pozwala  na znalezienie słabych stron produktu i elementów, które mają niższą sprawność w stosunku do pozostałych (tzw. wąskich gardeł). Wyniki tych testów wyrażone są liczbowo, np. ile sekund potrwa logowanie do aplikacji, jaka jest  przepustowość naszego systemu przy zwiększonym obciążeniu itp.
  • testy integracyjne – za ich pomocą tester manualny sprawdza połączenia między modułami aplikacji. W ten sposób wykrywa się błędy w interfejsach oraz interakcjach między zintegrowanymi modułami. Testy integracyjne obejmują wiele obszarów, m.in. integrację modułów stworzonych w ramach produktu i integrację z systemami zewnętrznymi. Należy pamiętać, że im większy jest zakres integracji, tym trudniej wskazać, gdzie występują błędy. Testy integracyjne pozwalają na przetestowanie produktu finalnego.

 

Podsumowanie

Testy są nieodzownym procesem tworzenia produktu. Pozwalają na poprawę jakości, dzięki czemu klient końcowy dostaje to, czego oczekuje. Wszystkie testy odgrywają swoją istotną rolę na drodze do dostarczenia finalnego produktu. Bardziej szczegółowy opis poszczególnych rodzajów testów przedstawię w kolejnych artykułach.

Autor
  • Mateusz Wydmański
  • Senior Software Tester
  • Tester związany z branżą Quality Assurance (QA) od 7 lat, pracował w małych firmach oraz dużych korporacjach w sektorze healthcare, pharma, telecom i logistics. W pracy otwarty na nowe wyzwania, wykonuje je z pełnym zaangażowaniem dla osiągnięcia jak najlepszego rezultatu, jak również udoskonalania procesów. Prywatnie lubi poruszać się na siłowni lub spacerować na świeżym powietrzu.

Opracowanie redakcyjne:
Ania Sawicka
Opracowanie redakcyjne
Aleksandra Pasek
Korekta językowa
Podobał Ci się mój artykuł?

Jeśli tak, zapraszam Cię do grona najlepiej poinformowanych czytelników bloga. Dołącz do naszego newslettera, a nie ominą Cię żadne nowości.