Blog: Zarzadzanie wymaganiami i testowanie | Istqb | Proces testowania oprogramowania

Jak i po co sprawdzać oprogramowanie? Kilka słów o testowaniu i testerach.

Jak i po co sprawdzać oprogramowanie? Kilka słów o testowaniu i testerach.
  • 847 views

Od dobrych kilku lat zawód programisty cieszy się niesłabnącą popularnością – każdego dnia setki ludzi podejmuje decyzję o przebranżowieniu i rozpoczęciu kształcenia w zakresie któregoś z języków programowania. Ta rynkowa koniunktura jest w pełni zrozumiała; znaczenie technologii informatycznych we wszystkich dziedzinach życia nieustannie rośnie, a osoby, które podejmują się związanej z nimi pracy, mogą liczyć na dobre zarobki i rozwijającą karierę

Udostępnij!

IT to nie tylko programowanie.

Warto jednak wiedzieć, że poza pisaniem kodu i rozwijaniem aplikacji, tworzenie oprogramowania składa się także z innych, równie istotnych i niezbędnych dla powodzenia całego procesu, czynności, takich jak testowanie. Bez przeprowadzenia odpowiednich testów, żaden program nigdy nie ujrzałby światła dziennego, umiejętności w tym zakresie są więc pożądane przez pracodawców. W dalszej części artykułu postaramy się przybliżyć na czym dokładnie polega testowanie i o czym powinien pamiętać każdy tester.

Czym jest testowanie?

Testowanie oprogramowania to nic innego jak weryfikacja jego poprawności i kontrola jakości przed ostatecznym oddaniem do użytku – nikt nie jest przecież nieomylny i podczas tworzenia produktu nie da się uniknąć pewnych błędów. Testowanie umożliwia sprawdzenie, czy oprogramowanie jest zgodne ze specyfikacją (a więc czy spełnia wymagania techniczne i biznesowe) i czy zaspokaja potrzeby użytkownika. Trzeba pamiętać, że mamy tu do czynienia nie z pojedynczą czynnością, ale ze składającym się z kilku stadiów (takich jak planowanie, analiza, projektowanie, implementacja, wykonanie, czy ocena wyników) procesem, który musi bazować na dobrze przygotowanej, starannej dokumentacji – niektóre niedoskonałości można zauważyć już na etapie jej wstępnej lektury.

Im szybciej rozpocznie się testowanie, tym lepiej – koszty naprawy błędu rosną bowiem w czasie i dlatego dużo bardziej opłaca się wykrycie i naprawienie go na wczesnym etapie niż wtedy gdy wszystko jest już niemal gotowe. Najlepsze efekty – a więc eliminację jak największej liczby błędów i możliwie najdokładniejsze przygotowanie produktu przed oddaniem go do użytku – możemy osiągnąć przeprowadzając testy na różnych poziomach podczas całego cyklu wytwarzania oprogramowania. Testowanie jednostkowe (zwane również programistycznym) sprawdza jakość kodu źródłowego, testowanie integracyjne weryfikuje zdolność modułów do wymiany informacji, z kolei testy systemowe dotyczą największego poziomu ogólności. Wyróżnia się również testowanie pozytywne i negatywne – pierwsze ma na celu sprawdzenie, czy oprogramowanie działa tak jak powinno, drugie natomiast, czy nie da się w nim wywołać awarii.

Testowanie manualne i automatyczne. Wyrocznie testowe.

Kolejnym istotnym podziałem o którym trzeba wiedzieć jest rozróżnienie pomiędzy testowaniem manualnym i automatycznym. Testy manualne (ręczne) są wykonywane osobiście przez testerów przeklikujących kolejne elementy programu zgodnie z listami kontrolnymi i przyjętymi regułami, a testowanie automatyczne opiera się na wykorzystaniu dodatkowych narzędzi i skryptów. Ze zrozumiałych powodów testowanie manualne zajmuje więcej czasu i jest bardziej obarczone ryzykiem popełnienia błędu, posiada jednak także kilka przewag. Skrypty nie zawsze są w stanie zastąpić samodzielnego ludzkiego umysłu; „żywy” tester może czasem zwrócić uwagę na pewne właściwości, które mogłyby umknąć programowi, przygotuje też bardziej wnikliwy raport. Decyzja o tym jakiego rodzaju testów użyć powinna być uzależniona od charakteru konkretnego projektu ponieważ żadnego z nich nie można wskazać jako jednoznacznie lepszego. Co istotne, testowanie manualne nie wymaga znajomości programowania, przy automatycznym zaś opanowanie podstawowych, potrzebnych do pisania skryptów, języków jest niezbędne.

Główną wytyczną dla testerów są tak zwane wyrocznie testowe, czyli źródła pomagające zrozumieć funkcjonowanie danego oprogramowania oraz przedstawiające oczekiwane rezultaty, które można porównać z otrzymanymi. Taką wyrocznią może być istniejący system, dokumentacja, podręcznik, ale także konkretny człowiek dysponujący specjalistyczną wiedzą. Tester powinien także za każdym razem pamiętać o technologicznym kontekście w jakim aktualnie pracuje, każdy przypadek jest bowiem unikatowy. Testowanie będzie też przebiegało inaczej w zależności od tego o jaką aplikację chodzi – webową, mobilną, opartą na Machine Learning, czy jeszcze inną.

Od testowania nie ma ucieczki.

Testowanie stanowi część zapewniania jakości i zarządzania nią; współcześnie wszelkie czynności tego rodzaju stanowią obowiązkowy element prac nad wytwarzaniem oprogramowania i bez nich nie można sobie wyobrazić pomyślnego zakończenia całego procesu. Błędy będą zdarzać się zawsze, a ich przeoczenie i pozostawienie może prowadzić do niepożądanych konsekwencji – irytujących i uciążliwych dla zwykłego użytkownika prostej aplikacji, ale również realnie niebezpiecznych dla całych firm, czy nawet ludzkiego życia  przy złożonych systemach albo specjalistycznych sprzętach czy pojazdach. Znaczenie testowania jest zatem absolutnie newralgiczne, a uzdolnione i doświadczone na tym polu osoby mogą liczyć na wysokie zarobki oraz interesujące perspektywy zawodowe.

Zachęcamy do zapoznania się z dotyczącą testowania ofertą edukacyjną Altkom Akademii.