Tworzenie oprogramowania nie może być przeprowadzone profesjonalnie bez testowania poszczególnych komponentów kodu. Weryfikację działania programu można przeprowadzić na wiele różnych sposobów. Poniżej znajdziesz informacje na temat klasyfikacji testów z uwzględnieniem różnorodnych kryteriów.

 

Podstawowe rodzaje testów oprogramowania. Testy manualne i automatyczne

Testy manualne to testy ręczne. Aby je przeprowadzić, nie trzeba znać języków programowania. W takim wypadku tester realizuje scenariusz testowy dokładnie tak, jak robiłby to użytkownik programu. To, że testy manualne są przeprowadzane nie przez maszyny, a przez ludzi, jest jednocześnie ich wadą i zaletą. Nawet najlepszy skrypt testowy nie jest w stanie zastąpić doświadczonego testera w określaniu wygody korzystania z aplikacji. Z drugiej strony człowiek może popełnić błąd. Wystarczy, by nie zrealizował choćby jednego punktu zawartego w scenariuszu.

Testy automatyczne cechują się zdecydowanie większą niezawodnością, jeśli chodzi o wszelkie powtarzalne działania w ramach programu. Automatyzacja oszczędza czas niezbędny na testowanie. Jednak jej skuteczność zależy w głównej mierze od jakości skryptu testującego. Testy automatyczne i manualne często wykorzystywane są równolegle w ramach jednego projektu. Dzięki temu można zapewnić najwyższą możliwą jakość oprogramowania na etapie końcowym.

Piramida testów, czyli poziomy testów oprogramowania.

Programiści i testerzy rozróżniają również rodzaje testów oprogramowania ze względu na wielkość kodu, którego dotyczą. Tę klasyfikację przedstawia się często w postaci piramidy podzielonej na trzy części. Najniżej znajdują się testy jednostkowe dotyczące pojedynczych funkcji czy modułów. Siłą rzeczy dotyczą więc one większej ilości przypadków. Są najtańsze w utrzymaniu i można je przeprowadzić najszybciej. Wymagają znajomości kodu, dlatego najczęściej tego rodzaju testy są pisane przez programistów.

Wyżej w piramidzie testów umieszczono testy integracyjne. Z ich pomocą sprawdza się, czy poszczególne części kodu dobrze ze sobą współpracują. Na szczycie piramidy znajdują się zaś testy systemowe, nazywane także testami poziomu end-to-end. Symuluje się w nich zachowanie realnego użytkownika całego systemu. Utrzymanie takich testów jest na tyle drogie, że zazwyczaj przeprowadza się je tylko kilka razy w momentach kluczowych.

Poza piramidą można także wspomnieć o testach akceptacyjnych. Tutaj liczy się wykrycie wszelkich niezgodności ze specyfikacją biznesową.

Typy testów ze względu na cel testowania oprogramowania.

Rozmawiając o rodzajach testów oprogramowania, nie można zapominać, że testowanie ma zwykle jakiś cel. I tak na przykład testy funkcjonalne (zwane też testami czarnej skrzynki) sprawdzają, co dany moduł, podsystem czy system robi. Używa się ich, więc do przetestowania poszczególnych funkcjonalności.

Dla odmiany testy niefunkcjonalne pozwalają sprawdzić, jak oprogramowanie poradzi sobie w różnorodnych warunkach testowych. Do tej kategorii będą więc należeć wszelkie testy przenaszalności, wydajnościowe czy obciążeniowe. Testy strukturalne (testy białoskrzynkowe) służą z kolei do sprawdzenia, czy testowanie pokryło wszystkie elementy oprogramowania. Na koniec trzeba jeszcze wymienić testy ze względu na zmiany. Służą one do ponownego sprawdzenia poprawionego po uprzednim raporcie fragmentu kodu.

Jak widać, każdy współczesny tester ma do dyspozycji całkiem szeroki wachlarz możliwości. Przed dostarczeniem stabilnego i w pełni funkcjonalnego oprogramowania powstrzymać go mogą jedynie terminy, budżet lub brak wiedzy.