Spis treści:

Program szkoleniowy z gwarancją zatrudnienia: „Inżynier ds. testowania i sztuczna inteligencja”
Dowiedz się więcejPrawie żadna aplikacja ani strona internetowa nie działa idealnie od pierwszego razu. Programiści to rozumieją, dlatego przed oficjalną premierą poddają produkt testowaniu – serii kontroli, które pomagają zidentyfikować i naprawić błędy, zanim trafią one do użytkowników końcowych.
Istnieje wiele rodzajów testowania, takich jak testowanie obciążeniowe, jednostkowe, regresyjne i integracyjne, z których każdy ma swoje własne, specyficzne funkcje i cele. Jednym z najpopularniejszych i najważniejszych rodzajów jest testowanie funkcjonalne, które omówimy szczegółowo w tym artykule.
W tym artykule poznasz podstawy testowania funkcjonalnego, jego różne rodzaje oraz proces wykonywania. Materiał ten będzie szczególnie przydatny dla początkujących testerów, którzy chcą lepiej zrozumieć tę dziedzinę.
Spis treści
- Testowanie funkcjonalne to proces weryfikacji, którego celem jest ocena, w jakim stopniu oprogramowanie spełnia swoje funkcje zgodnie z określonymi wymaganiami. Testowanie to koncentruje się na funkcjonalności systemu, czyli na tym, jak przetwarza on dane wejściowe i generuje oczekiwane rezultaty. Głównym celem jest zapewnienie poprawnej implementacji wszystkich planowanych scenariuszy aplikacji.
W przeciwieństwie do tego, testy niefunkcjonalne obejmują aspekty niezwiązane z konkretnymi funkcjami, a raczej z ogólnymi cechami systemu, takimi jak wydajność, bezpieczeństwo, użyteczność i kompatybilność. W tym przypadku nacisk kładziony jest na to, jak system działa, a nie na to, co robi. Zatem testy niefunkcjonalne pomagają określić, w jakim stopniu aplikacja spełnia wymagania jakościowe i niezawodnościowe.
Podsumowując, testy funkcjonalne koncentrują się na poprawnym wykonywaniu funkcji, podczas gdy testy niefunkcjonalne analizują ogólne cechy i charakterystyki oprogramowania.
- Testy funkcjonalne można podzielić na kilka kategorii, z których każda odgrywa ważną rolę w procesie weryfikacji oprogramowania. Oto główne typy tych testów:
1. **Testy jednostkowe** – koncentrują się na poszczególnych komponentach lub modułach systemu, sprawdzając ich funkcjonalność i zgodność z wymaganiami.
2. **Testy integracyjne** – przeprowadzane w celu oceny interakcji między modułami, co pozwala na identyfikację problemów pojawiających się podczas ich współpracy.
3. **Testowanie systemowe** – obejmuje całą aplikację, w tym wszystkie jej funkcje i możliwości, w celu zapewnienia, że działają one zgodnie z ustalonymi wymaganiami.
4. **Testowanie akceptacyjne** – przeprowadzane w celu sprawdzenia, czy oprogramowanie jest gotowe do użycia przez użytkowników końcowych. Ma na celu potwierdzenie, że system spełnia wymagania biznesowe.
5. **Testowanie regresyjne** – przeprowadzane po wprowadzeniu zmian w kodzie, w celu zapewnienia, że nowe aktualizacje nie naruszą istniejącej funkcjonalności.
Tego typu testy funkcjonalne pomagają zapewnić wysoką jakość oprogramowania i potwierdzić, że spełnia ono oczekiwania użytkowników.
- Proces testowania funkcjonalnego składa się z kilku kluczowych etapów. Najpierw należy zdefiniować wymagania systemowe, co pomoże zrozumieć, które funkcje należy przetestować. Następnie opracowuje się strategię testów, która obejmuje wybór metod testowania i utworzenie scenariuszy testowych.
Kolejnym krokiem jest wykonanie testów, podczas którego testerzy sprawdzają, w jakim stopniu system spełnia ustalone wymagania. Podczas testowania rejestrowane są wszystkie wykryte defekty i niespójności, co pozwala na dalszą analizę i ocenę ich wagi.
Po zakończeniu testów wyniki są podsumowywane i sporządzany jest raport, który pomoże zespołowi programistów zrozumieć, na czym polegały zidentyfikowane niedociągnięcia. Na koniec, po usunięciu wszystkich błędów, przeprowadzane są ponowne testy, aby upewnić się, że wszystkie problemy zostały wyeliminowane, a system działa poprawnie.
- Narzędzia przydatne w praktyce.
Definicja testowania funkcjonalnego i jego różnice w stosunku do metod testowania niefunkcjonalnego
Testowanie funkcjonalne pozwala ocenić, jak poprawnie oprogramowanie wykonuje określone funkcje, odpowiadając zarówno wymaganiom klienta, jak i specyfikacjom technicznym. Testowanie funkcjonalne koncentruje się na konkretnych operacjach systemu, sposobie przetwarzania danych wejściowych oraz na tym, czy wyniki spełniają oczekiwania. Innymi słowy, odpowiada na pytanie: „Czy system wykonuje zadania, których się od niego oczekuje?” Wyobraź sobie sytuację, w której tworzysz sklep internetowy, mając nadzieję, że użytkownicy będą mogli łatwo przejść proces rejestracji, wybrać pożądane produkty, dodać je do koszyka i sfinalizować zakup. Wszystkie te kroki stanowią ważne elementy funkcjonalności Twojej witryny. Jednak po uruchomieniu witryny możesz odkryć, że niektóre z tych funkcji nie działają poprawnie — na przykład rejestracja nie powiodła się lub koszyk nie zapisuje produktów. Takie problemy mogą wynikać z różnych przyczyn, a testowanie funkcjonalne pozwala na ich wczesne wykrycie. Podczas testowania oprogramowania tester zazwyczaj nie zwraca uwagi na wewnętrzną strukturę programu ani jego kod źródłowy. Liczy się tylko to, jak system działa z perspektywy użytkownika końcowego. Na przykład, testując funkcję dodawania produktu do koszyka, tester nie zagłębia się w szczegóły bazy danych. Po prostu upewniają się, że po kliknięciu przycisku „Dodaj do koszyka” produkt wyświetla się prawidłowo w koszyku, z prawidłową nazwą, ceną i ilością.
Testerzy po kolei przechodzą przez każdy etap ścieżki użytkownika, sprawdzając funkcjonalność systemu, korzystając z wcześniej opracowanych przypadków testowych. Te scenariusze testowe zawierają instrukcje krok po kroku, oczekiwane wyniki i kryteria, według których określa się ich sukces.
Przykład podstawowego przypadku testowego zaprojektowanego w celu sprawdzenia funkcjonalności wysyłania wiadomości za pośrednictwem formularza opinii na stronie internetowej.

W obecnej praktyce tworzenia oprogramowania testy funkcjonalne przeprowadzane są jednocześnie z testami niefunkcjonalnymi. Podczas gdy testy funkcjonalne koncentrują się na weryfikacji, czy system poprawnie wykonuje swoje zadania, testy niefunkcjonalne mają na celu ocenę skuteczności tych procesów. Cechy niefunkcjonalne obejmują takie parametry, jak wydajność, użyteczność interfejsu, poziom bezpieczeństwa i estetyka produktu.
Aby lepiej zrozumieć różnice, wyobraź sobie sytuację, w której kupiłeś nowy samochód. Sprawdzając, czy silnik się uruchamia, czy pojazd się porusza, czy działają reflektory i czy otwierają się szyby, masz na myśli testowanie funkcjonalne. Jednocześnie testy niefunkcjonalne mają inne cele: jak szybko samochód przyspiesza, jaki jest komfort jazdy, czy spełnia normy bezpieczeństwa i czy zapewnia komfortową jazdę.
Nie będziemy szczegółowo omawiać testów niefunkcjonalnych poniżej, ponieważ jest to obszerny temat zasługujący na osobne omówienie. Aby uzyskać bardziej szczegółowe informacje, zalecamy zapoznanie się z naszym artykułem na temat testowania urządzeń mobilnych. W tym materiale Ruslan Muradov, kierownik ds. zapewnienia jakości w SberDevices, ilustruje przykładami, jak te dwa rodzaje testowania oddziałują na siebie i wzajemnie się wspierają.

Przeczytaj także:
Testowanie aplikacji mobilnych: dlaczego jest konieczne i jak to działa
Aplikacja mobilna Testowanie odgrywa kluczową rolę w procesie rozwoju. Konieczne jest zapewnienie prawidłowego działania aplikacji, spełniania oczekiwań użytkowników i braku błędów krytycznych. Głównym celem tego etapu jest zapewnienie wysokiej jakości produktu, co z kolei przyczynia się do pozytywnego postrzegania aplikacji na rynku.
Proces testowania obejmuje kilka etapów. Najpierw opracowywany jest plan opisujący scenariusze testowe i kryteria oceny aplikacji. Następnie testerzy rozpoczynają przeprowadzanie różnych typów testów, w tym testów funkcjonalnych, testów UX i testów wydajności. Ważne jest nie tylko zidentyfikowanie błędów, ale także ocena użyteczności interfejsu, szybkości ładowania i stabilności aplikacji.
Po zakończeniu testów wyniki są analizowane i tworzone są raporty, które rejestrują zidentyfikowane defekty i zalecenia dotyczące ich usunięcia. Testowanie staje się zatem ważnym mechanizmem zapewniającym ostateczną jakość produktu i jego pomyślną integrację z życiem użytkowników.
Kategorie testowania funkcjonalnego
Ustaliliśmy już, że testowanie funkcjonalne odgrywa kluczową rolę w weryfikacji poprawnego działania każdej pojedynczej funkcji systemu. Wybór podejścia do testowania może się jednak różnić w zależności od celów, etapu rozwoju i specyfiki produktu. Niektóre metody koncentrują się na dokładności obliczeń, inne na interakcji różnych komponentów, a jeszcze inne na aspektach bezpieczeństwa i prawidłowym zarządzaniu prawami dostępu użytkownika.
Metodologie te wzajemnie się uzupełniają i mają wiele wspólnego. Aby ułatwić zrozumienie, testy funkcjonalne zazwyczaj dzieli się na trzy kategorie: w zależności od poziomu szczegółowości (co dokładnie jest testowane), dostępu do logiki wewnętrznej (jak test jest przeprowadzany) i charakterystyki funkcji (jakie aspekty są oceniane). Przyjrzyjmy się bliżej każdej z tych kategorii.
To kryterium obrazuje etap, na którym następuje analiza i weryfikacja działania systemu, począwszy od pojedynczych elementów, a skończywszy na całej aplikacji. Istnieją cztery główne typy testowania funkcjonalnego: testy jednostkowe, testy integracyjne, testy systemowe i testy akceptacyjne.
Testy jednostkowe służą do testowania poszczególnych funkcji i komponentów w izolacji od całego systemu. Takie podejście pozwala skupić się na testowaniu każdego elementu osobno, eliminując w ten sposób wpływ innych części programu. Na przykład, można przetestować algorytm odpowiedzialny za obliczanie rabatu i potwierdzić, że przy zakupie o wartości 10 000 rubli cena jest rzeczywiście obniżona o 15%, zgodnie z logiką aplikacji.
Testy integracyjne mają na celu analizę interakcji różnych komponentów systemu i ich wspólnego działania. Mogą one obejmować na przykład sprawdzenie połączenia między interfejsem klienta a serwerem lub ocenę funkcjonalności bazy danych. Podczas procesu realizacji zamówienia w sklepie internetowym system musi przesłać dane z formularza do bazy danych, a następnie do usługi dostawy. Testowanie integracyjne zapewnia, że wszystkie te procesy działają poprawnie i bez zakłóceń.
Testowanie systemu to kompleksowe sprawdzenie oprogramowania, mające na celu potwierdzenie, że system działa jako całość. Istnieją różne metody przeprowadzania tego typu testów. Na przykład testy dymowe pozwalają szybko ocenić podstawową funkcjonalność aplikacji, podczas gdy testy kompleksowe obejmują wszystkie możliwe scenariusze użytkownika – od rejestracji na platformie, przez proces płatności, po śledzenie statusu zamówienia.
Testy akceptacyjne, znane jako UAT, przeprowadza się z klientami lub użytkownikami końcowymi przed premierą produktu. Głównym celem tego etapu jest upewnienie się, że system w pełni spełnia ustalone wymagania biznesowe i jest gotowy do praktycznego użytku. Przykładowo w kontekście aplikacji bankowej klient ma możliwość sprawdzenia, czy proces przelewu środków działa prawidłowo, czy dane o zrealizowanych transakcjach są wyświetlane poprawnie i czy powiadomienia o podejrzanych działaniach są odbierane na czas.

Przeczytaj także:
JUnit: testowanie modułów w Javie i rozwoju poprzez
JUnit to framework do testowania jednostkowego oprogramowania napisanego w Javie. To narzędzie pozwala programistom testować poszczególne sekcje kodu, co pomaga identyfikować błędy na wczesnym etapie procesu rozwoju. Testowanie jednostkowe za pomocą JUnit pomaga upewnić się, że każda funkcja działa poprawnie i spełnia określone wymagania.
Programowanie sterowane testami (TDD) jest również ściśle związane z wykorzystaniem JUnit. W tej praktyce najpierw tworzy się testy, a następnie pisze kod, który musi je zaliczyć. Takie podejście zachęca do bardziej starannego planowania i strukturyzacji kodu, ponieważ programiści są zmuszeni do wcześniejszego przemyślenia logiki swoich funkcji.
JUnit obsługuje różne typy testowania, w tym testy jednostkowe i integracyjne, co czyni go wszechstronnym narzędziem do zapewniania jakości oprogramowania. W rezultacie użycie JUnit nie tylko upraszcza proces pisania testów, ale także zwiększa niezawodność rozwijanej aplikacji.
To kryterium określa stopień dostępu testera do wewnętrznej struktury i kodu źródłowego systemu. W zależności od tego poziomu wyróżnia się trzy kluczowe metody testowania funkcjonalnego: czarną skrzynkę, która uniemożliwia dostęp do kodu; szarą skrzynkę, która oznacza ograniczony dostęp; oraz białą skrzynkę, która zapewnia pełny dostęp zarówno do kodu, jak i architektury aplikacji.
Czarna skrzynka to technika, w której tester oddziałuje wyłącznie na zewnętrzne interfejsy systemu, analizując jego działanie wyłącznie na podstawie danych wejściowych i wyjściowych. To podejście zazwyczaj obejmuje trzy główne kategorie scenariuszy testowych:
- Testy pozytywne mają na celu ocenę działania systemu po podaniu poprawnych danych wejściowych. Na przykład, jeśli użytkownik wprowadzi prawidłowy login i hasło, powinno to skutkować pomyślną autoryzacją.
- Testy negatywne mają na celu analizę reakcji systemu na nieprawidłowe dane. Na przykład, jeśli wprowadzisz nieprawidłowe hasło, system powinien wyświetlić komunikat „Nieprawidłowe dane uwierzytelniające”.
- Testy graniczne analizują reakcję systemu na wartości skrajne. Może to obejmować na przykład wprowadzenie maksymalnej liczby znaków w polu tekstowym formularza lub minimalnej kwoty zamówienia.
Model czarnej skrzynki opiera się na fakcie, że tester analizuje działanie systemu wyłącznie na podstawie danych wejściowych i wyników wyjściowych, nie zagłębiając się w jego wewnętrzne mechanizmy.

Testowanie szarej skrzynki to metoda testowania, w której specjalista posiada pewną wiedzę na temat struktury systemu i rozumie, jak działają główne procesy, ale nie ma pełnego dostępu do kodu źródłowego. To podejście doskonale sprawdza się w ocenie interakcji między różnymi komponentami, a także w sprawdzaniu działania interfejsów API i baz danych.
Na przykład, testując funkcję płatności w sklepie internetowym, tester zakłada, że system musi zainicjować żądanie do bramki płatniczej, poczekać na potwierdzenie i odpowiednio przetworzyć otrzymaną odpowiedź. Na tej podstawie analizuje różne sytuacje: pomyślne zakończenie transakcji, odmowę płatności, przerwanie połączenia podczas płatności i szereg innych opcji.
Testowanie białej skrzynki to metoda testowania, która zapewnia specjaliście pełny dostęp do kodu źródłowego, struktur wewnętrznych i algorytmów aplikacji. Metoda ta umożliwia znalezienie ukrytych błędów, które mogą być trudne do wykrycia podczas sprawdzania wyłącznie za pomocą interfejsu użytkownika. Ponadto, zastosowanie podejścia „białej skrzynki” pomaga zidentyfikować wycieki pamięci i inne potencjalne problemy z wydajnością.
Na przykład programista może sprawdzić, czy mechanizm uwierzytelniania poprawnie szyfruje hasła, przechowuje je w bezpiecznym formacie i blokuje konto po określonej liczbie nieudanych prób logowania.

Czytaj również:
Identyfikacja, uwierzytelnianie i autoryzacja to trzy kluczowe procesy, które odgrywają kluczową rolę w zapewnianiu bezpieczeństwa systemów informatycznych, ale każdy z nich ma swoją własną, unikalną funkcję.
Identyfikacja to pierwszy krok w rozpoznawaniu użytkownika. Podczas tego procesu system prosi użytkownika o podanie informacji umożliwiających jego identyfikację, takich jak nazwa użytkownika lub numer konta.
Kolejnym krokiem jest uwierzytelnianie. Na tym etapie weryfikowane są podane dane. System porównuje wprowadzone informacje z informacjami zapisanymi i, jeśli są one zgodne, potwierdza autentyczność użytkownika. Można to zrobić za pomocą hasła, danych biometrycznych lub innych metod.
Autoryzacja uzupełnia łańcuch tych procesów. Określa ona, jakie prawa i uprawnienia otrzymuje użytkownik po pomyślnym uwierzytelnieniu. Obejmuje to dostęp do określonych zasobów, funkcji i danych w systemie w oparciu o ustaloną wcześniej politykę bezpieczeństwa.
Identyfikacja odpowiada zatem za rozpoznawanie, uwierzytelnianie w celu weryfikacji i autoryzację w celu udzielenia dostępu. Wszystkie trzy etapy są integralną częścią tworzenia bezpiecznego środowiska interakcji użytkownika z systemami.
To kryterium służy do zdefiniowania konkretnych cech i właściwości systemu, które podlegają ocenie podczas testowania. W podejściu do testowania funkcjonalnego zazwyczaj wyróżnia się cztery główne aspekty: użyteczność, dokładność, poziom interakcji i ochronę danych.
Użyteczność to ważne kryterium, które pomaga zapewnić, że system spełnia określone wymagania i wykonuje funkcje wymagane przez użytkowników. Na przykład w aplikacji bankowej tester sprawdza, czy możliwe jest przeglądanie sald, dokonywanie przelewów, płacenie za usługi, odbieranie wyciągów i wykonywanie innych kluczowych operacji.
Dokładność to parametr, na podstawie którego ekspert analizuje poprawność przetwarzania danych i obliczeń, a także stopień, w jakim uzyskane wyniki spełniają oczekiwania użytkowników. Na przykład w aplikacjach finansowych kluczowe jest upewnienie się, że oprocentowanie kredytów i depozytów jest obliczane poprawnie, a w kalkulatorze podatkowym, że wszystkie odliczenia są stosowane poprawnie.
Interoperacyjność opisuje zdolność systemu do wymiany informacji z innymi elementami i usługami zewnętrznymi. Przykładowo aplikacja mobilna sklepu internetowego musi poprawnie współpracować z systemami płatności, różnymi usługami dostawczymi i systemem CRM firmy.
Bezpieczeństwo jest ważnym aspektem, który pomaga określić poziom ochrony systemu przed nieautoryzowanym dostępem, wyciekiem informacji i różnymi podatnościami. Gdy tester współpracuje z systemem zarządzania dokumentami, ma możliwość oceny poprawności kontroli dostępu do dokumentów niejawnych, ochrony kanałów informacyjnych lub niezawodności podpisów cyfrowych.

Przeczytaj także:
Problemy, z którymi borykają się inżynierowie ds. zapewnienia jakości: co ich martwi testerzy?


Proces wdrażania testów funkcjonalnych krok po kroku
Proces wdrażania testów funkcjonalnych może się różnić w zależności od firmy, ale z reguły składa się z kilku następujących po sobie kroków: analizy wymagań, tworzenia dokumentacji, przygotowywania danych testowych, testowania właściwego, poprawiania błędów i ponownego testowania. Przyjrzyjmy się każdemu z tych etapów bardziej szczegółowo.
Przede wszystkim tester musi zapoznać się z funkcjonalnością aplikacji, a także z wymaganiami klienta, specyfikacjami technicznymi i innymi materiałami źródłowymi. Kluczowe jest, aby dokładnie rozumiał przeznaczenie produktu i jego grupę docelową. Ponadto musi upewnić się, że określone wymagania spełniają następujące kryteria:
- Unikaj niespójności – dokumentacja nie powinna zawierać terminów wzajemnie się wykluczających. Na przykład, niedopuszczalne jest, aby jedna sekcja specyfikacji wspominała o programowaniu wyłącznie dla systemu Windows, podczas gdy specyfikacja wskazuje na wsparcie dla systemów Linux.
- Wymagania muszą być jak najbardziej szczegółowe, aby zespół mógł prawidłowo rozwijać funkcjonalność i ją testować. Na przykład sformułowanie „aby się zarejestrować, użytkownik musi wprowadzić dane” nie jest wystarczające. Bardziej odpowiednie byłoby stwierdzenie: „aby pomyślnie się zarejestrować, użytkownik musi podać adres e-mail, utworzyć hasło składające się z 8–20 znaków oraz podać imię i wiek, który musi wynosić co najmniej 18 lat”.
- Wymagania atomowe oznaczają, że każde z nich powinno obejmować tylko jedną konkretną funkcję, którą można przetestować jako niezależną jednostkę. Zamiast ogólnego sformułowania, takiego jak „użytkownik musi sortować produkty”, bardziej odpowiednie jest użycie bardziej szczegółowych żądań: na przykład „użytkownik musi mieć możliwość sortowania produktów według ceny (zarówno od najniższej do najwyższej, jak i odwrotnie)”, „użytkownik musi sortować produkty według oceny” itd.
W przypadku wykrycia niespójności lub niejasności w wymaganiach, tester jest zobowiązany powiadomić o nich zespół lub klienta, a także wyjaśnić wszystkie niezbędne kwestie.
Na etapie analizy wymagań tester wybiera strategię, decydując, którą metodę zastosować: czarną skrzynkę, szarą skrzynkę czy białą skrzynkę. Ponadto określa najodpowiedniejsze rodzaje testów funkcjonalnych.
Specjalista opracowuje plan testów w oparciu o zbadane wymagania i tworzy przypadki testowe z kryteriami akceptacji, listy kontrolne do kontroli operacyjnych oraz scenariusze kompleksowego testowania funkcjonalności. Ilość niezbędnej dokumentacji różni się w zależności od charakteru projektu:
- Systemy na dużą skalę wymagają obszernego zestawu dokumentów: obejmuje on szczegółowe plany, przypadki testowe z jasno sformułowanymi oczekiwanymi rezultatami oraz macierze śledzenia wymagań, które zapewniają kontrolę pokrycia testami.
- W przypadku mniejszych projektów często wystarcza użycie list kontrolnych i podstawowych scenariuszy. Na przykład w przypadku witryny korporacyjnej można utworzyć minimalną listę zadań, która obejmuje sprawdzenie poprawności działania formularza kontaktowego, elementów nawigacyjnych, sekcji informacyjnych i formularza opinii.
- Startupy często uciekają się do minimalnego poziomu dokumentacji lub testów eksploracyjnych. Głównym celem zespołu jest jak najszybsze wprowadzenie produktu na rynek i szybkie uzyskanie wstępnych opinii od użytkowników, co pozwoli na wprowadzenie niezbędnych ulepszeń w przyszłości.
Istnieje wiele szablonów dla różnych typów dokumentacji testowej. Jednak do celów szkoleniowych można wykorzystać uniwersalną tabelę:
Po ukończeniu dokumentacji tester ma jasne zrozumienie danych wymaganych do przetestowania systemu. Na przykład, aby przetestować proces tworzenia konta, będzie potrzebował zarówno prawidłowych, jak i nieprawidłowych adresów e-mail, haseł o różnym stopniu złożoności, informacji o użytkownikach w różnym wieku, a także specjalnych scenariuszy, w tym kont osób nieletnich, użytkowników z innych krajów i innych nietypowych przypadków.
Oprócz przygotowania danych ważne jest stworzenie środowiska roboczego dla produktu. Obejmuje to instalację wymaganego oprogramowania, połączenie z bazami danych, skonfigurowanie środowiska serwerowego i zdefiniowanie wymaganych poziomów dostępu.
Testowanie rozpoczyna się dopiero po zakończeniu wszystkich niezbędnych przygotowań. Na tym etapie ekspert dokładnie analizuje system, postępując zgodnie z wcześniej opracowanymi scenariuszami. Proces może obejmować zarówno kontrole ręczne, jak i testy automatyczne, które pomagają porównać rzeczywiste zachowanie systemu z oczekiwaniami i udokumentować wszelkie rozbieżności z ustalonymi wymaganiami.

Czytaj także:
Testowanie QA, czyli kontrola jakości, to proces mający na celu identyfikację defekty i wady oprogramowania przed jego wydaniem. Ten etap obejmuje serię testów mających na celu ocenę funkcjonalności, wydajności, bezpieczeństwa i użyteczności produktu.
Podczas testowania QA testerzy opracowują różne scenariusze odzwierciedlające rzeczywiste użycie programu. Przeprowadzają zarówno testy automatyczne, jak i ręczne, aby upewnić się, że wszystkie aspekty aplikacji działają zgodnie z oczekiwaniami. Ważnym elementem pracy jest dokumentowanie wyników i zidentyfikowanych problemów, co pozwala programistom na późniejsze usuwanie błędów i ulepszanie produktu.
Testowanie QA składa się z kilku etapów. Najpierw testerzy zapoznają się z wymaganiami produktu i tworzą plany testów. Następnie przeprowadzają testy, analizują wyniki i generują raporty. Ostatni etap obejmuje ponowne testowanie po poprawkach, aby upewnić się, że wszystkie defekty zostały wyeliminowane.
Dlatego testowanie QA odgrywa kluczową rolę w procesie rozwoju, zapewniając wysoką jakość produktu końcowego i zadowolenie użytkowników.
Podczas testowania wszystkie zidentyfikowane defekty są rejestrowane w raporcie o błędzie – specjalistycznym dokumencie, który szczegółowo opisuje znalezione problemy, kroki niezbędne do ich odtworzenia, wpływ na działanie systemu i inne istotne kwestie. Na przykład, tester może zauważyć, że podczas próby opłacenia zamówienia kodem promocyjnym SALE50 system wyświetla błąd 404 zamiast zaoferować rabat.
Pod koniec etapu testów funkcjonalnych programiści otrzymują raport zawierający informacje o zidentyfikowanych defektach. Po ich usunięciu tester ponownie sprawdza wszystkie dotknięte nimi obszary. Ten proces, będący cyklem „test-naprawa”, trwa do momentu, aż system zacznie spełniać ustalone wymagania.
Po zakończeniu wszystkich etapów testowania produkt jest przekazywany do ostatecznej akceptacji. Na tym etapie zazwyczaj przeprowadzana jest demonstracja systemu, podczas której klient ma możliwość ocenić, na ile funkcjonalność spełnia jego oczekiwania. Na przykład, akceptując sklep internetowy, klient może śledzić całą ścieżkę kupującego: od rejestracji i wyszukiwania produktu do złożenia zamówienia i otrzymania potwierdzenia e-mailem.

