.woocommerce-product-gallery{ opacity: 1 !important; }Na czym polega testowanie oprogramowania? - Fundacja CODE:ME
0

Fundacja CODE:ME · 20 luty 2024

Na czym polega testowanie oprogramowania?

Testowanie oprogramowania – na czym polega, przykłady i rodzaje testów, automatyzacja i poziomy testów – przeczytaj czym jest testowanie i czy to dla Ciebie!

Background image shapeNa czym polega testowanie oprogramowania?

Testowanie oprogramowania to coś więcej niż tylko sprawdzenie, czy "coś działa". To proces, który pozwala nam z pełną pewnością stwierdzić, że nasze aplikacje zachowują się dokładnie tak, jak powinny, nawet gdy dodajemy nowe funkcje, aktualizujemy zależności, czy też stawiamy czoła rzadkim scenariuszom użycia. W skrócie, testowanie to nasza sieć bezpieczeństwa, dzięki której możemy spać spokojnie.

Przykłady z życia wzięte

Zanim zagłębimy się w techniczne aspekty, warto zrozumieć, dlaczego testowanie jest tak ważne. Oto kilka codziennych przykładów do testowania:

  • Formularze: Sprawdzanie, czy po wpisaniu nieprawidłowego adresu e-mail użytkownik otrzyma stosowny komunikat o błędzie
  • Logowanie: Sprawdzenie, że tylko zalogowani użytkownicy mogą wykonywać działania wymagające autoryzacji
  • Ecommerce: Przetestowanie czy suma zakupów jest prawidłowo obliczana, niezależnie od liczby i rodzaju produktów w koszyku
  • Responsywność: Sprawdzamy, czy aplikacja działa płynnie na telefonach, tabletach przy słabym połączeniu internetowym lub w trybie offline

Testowanie manualne i automatyczne

Możemy podzielić testowanie na dwa główne typy: manualne i automatyczne.

Testowanie manualne polega na bezpośrednim interakcji z oprogramowaniem, np. oprzez przeglądanie strony internetowej i ocenę, czy działa ona zgodnie z naszymi oczekiwaniami. Choć to podejście ma swoje zalety, jak np. możliwość przeprowadzania testów eksploracyjnych, jest czasochłonne i może być mniej dokładne przy powtarzalnych zadaniach.

Jednym z narzędzi testerów manualnych są scenariusze testowe. To dokładne instrukcje, które określają, jak przetestować określoną funkcję lub część programu, aby sprawdzić, czy działa ona poprawnie. Każdy scenariusz zawiera informacje o tym, co ma być testowane, kroki, które należy wykonać, oraz oczekiwane wyniki tych działań. Dzięki temu testerzy mogą systematycznie sprawdzać różne aspekty oprogramowania, upewniając się, że wszystko funkcjonuje zgodnie z wymaganiami.

Testowanie automatyczne to wykorzystanie skryptów, które uruchamiają testy i sprawdzają oczekiwane zachowania bez bezpośredniego udziału człowieka. Automatyzacja pozwala na częste i szybkie przeprowadzanie testów, znacznie zwiększając efektywność naszej pracy.

Podstawy automatyzacji: przykład silni

Weźmy prosty skrypt w Pythonie, który oblicza silnię liczby i sprawdza poprawność wyników:

Tutaj, używając asercji, automatycznie weryfikujemy poprawność działania funkcji. Jest to przykład testu automatycznego, który można łatwo powtarzać.

Biblioteki do testowania w praktyce

Współczesne narzędzia do testowania oferują różne narzędzia, takie jak asercje, które łączą w sobie sprawdzanie wyników i generowanie błędów, gdy testy nie przejdą pomyślnie. Dzięki temu, pisząc testy, możemy skupić się na logice biznesowej aplikacji, a nie na szczegółach implementacyjnych.

Testowanie, niezależnie od używanych narzędzi, zawsze opiera się na podstawowym schemacie: 

  • przygotowaniu środowiska (setup), 
  • wykonaniu testowanej akcji 
  • sprawdzeniu oczekiwanych wyników (assertions).

Poziomy testów

Testy możemy klasyfikować w zależności od ich zasięgu:

  • Poziom 1: Testy jednostkowe koncentrują się na małych fragmentach kodu, np. pojedynczych funkcjach.
  • Poziom 2: Testy integracyjne sprawdzają, jak różne części systemu pracują razem.
  • Testy systemowe czy też testy e2e oceniają działanie całej aplikacji w środowisku, które naśladuje rzeczywiste warunki użytkowania.

Piramida testów to metafora, która pomaga zrozumieć, jak zbalansować różne typy testów w projekcie. Na jej szczycie znajdują się testy e2e, które są najbardziej złożone i czasochłonne.

Twój plan testowania i to, jakie testy postanowisz przeprowadzić, w dużej mierze zależą od specyfiki projektu, nad którym pracujesz. Jednakże, ogólnie rzecz biorąc, możemy zauważyć, że proste testy, na przykład testy jednostkowe, są z reguły szybkie i łatwe do stworzenia, co oznacza, że możemy ich mieć więcej. Koncentrują się one na sprawdzeniu pojedynczych funkcji lub małych fragmentów kodu.

Z kolei testy bardziej skomplikowane, jak na przykład testy integracyjne i e2e, które sprawdzają działanie aplikacji jako całości, wymagają więcej czasu i pracy do ich przygotowania. Mimo że są trudniejsze do napisania, oferują szersze spojrzenie na aplikację, sprawdzając, jak poszczególne części współpracują ze sobą.

W przypadkach, gdy mamy do czynienia z różnorodnością scenariuszy użycia, często kluczowe staje się testowanie manualne. Pewne aspekty interakcji z użytkownikiem mogą być zbyt złożone, by dało się je w pełni zautomatyzować, co sprawia, że bezpośrednia weryfikacja przez testerów jest niezastąpiona.

Mamy nadzieję, że temat ten rozjaśnił czym jest testowanie oprogramowania i na czym polega praca testerów. Jako element procesu tworzenia aplikacji, zapewnia niezawodność i bezpieczeństwo systemów. Dobrze przetestowane oprogramowanie to nie tylko mniejsze ryzyko błędów, ale także większa satysfakcja użytkowników aplikacji i zaufanie klientów.

Chcesz rozwijać się jako tester manualny lub automatyzujący? Zapoznaj się z naszą ofertą szkoleń dla testerów. Kurs zdalny: Podstawy testowania z elementami AI.

Prev arrow icon
Next arrow icon
Powrót