Zanim zaczniemy zajmować się testowaniem oprogramowania w praktyce, warto byłoby przyjrzeć się czym to testowanie tak naprawdę jest.
Na początek spójrzmy na definicję, a później zajmiemy się praktycznym spojrzeniem na temat testów.
Z definicji zawartej w ISTQB możemy przeczytać, że:
Testowanie: Proces składający się z wszystkich czynności cyklu życia, zarówno statystycznych jak i dynamicznych; skoncentrowanym na planowaniu, przygotowaniu i ewaluacji oprogramowania oraz powiązanych produktów w celu określenia czy spełniają one wyspecyfikowane wymagania do wykazania, że są one dopasowane do swoich celów oraz do wykrywania usterek.
Wikipedia przedstawi nam nieco inną definicje.
Testowanie oprogramowania – proces związany z wytwarzaniem oprogramowania. Jest to jeden z procesów zapewnienia jakości oprogramowania. Testowanie ma na celu weryfikację oraz walidację oprogramowania. Weryfikacja oprogramowania pozwala skontrolować, czy wytwarzane oprogramowanie jest zgodne ze specyfikacją. Walidacja sprawdza, czy oprogramowanie jest zgodne z oczekiwaniami użytkownika. Testowanie oprogramowania może być wdrożone w dowolnym momencie wytwarzania oprogramowania (w zależności od stosowanej metody). W podejściu kaskadowym zgodnym z modelem V wysiłek zespołu testerskiego zaczyna się wraz z definicją wymagań i jest kontynuowany po zaimplementowaniu zdefiniowanych wymagań. Nowsze metody wytwarzania oprogramowania (np. metody zwinne) rozkładają wysiłek testerski równomiernie na poszczególne iteracje i skupiają się na testach jednostkowych oraz automatyzacji weryfikacji wykonywanych przez członków zespołu.
Weryfikacja
Odnosząc się do obydwu definicji, jedno z pierwszych słów jakie pojawia się w myślach to weryfikacja. To właśnie weryfikacja jest jednym z głównych zadań testera oprogramowania.
Weryfikacja opiera się o wymagania, nie jest to jednak regułą. Niektóre projekty potrafią mieć wymagania bardzo ogólne bądź nie posiadać ich prawie wcale. co przenosi odpowiedzialność na testera i jego doświadczenie oraz domenową.
Proces
Warto zaznaczyć, że pojawia się też drugie charakterystyczne słowo czyli proces.
Testowanie oprogramowania jest procesem i jego składową nie jest wyłącznie uruchamianie testów. Tutaj możemy wyróżnić między innymi:
- planowanie i nadzór
- analizę i projektowanie
- implementację i wykonanie
- ocenę kryteriów zakończenia, raportowanie
- czynności zamykające testy
Testowanie statyczne a dynamiczne
Testowanie oprogramowania dzielimy również na statyczne i dynamiczne.
Testowanie statyczne – to testowanie w którym oprogramowanie nie jest uruchamiane. Do testowania statystycznego możemy zaliczyć statyczną analizę kodu, przegląd wymagań. Znalezienie defektów podczas testowania statystycznego jest tańsze niż podczas testów dynamicznych.
Testowanie dynamiczne – do testowania dynamicznego potrzebujemy uruchomić już aplikację, system bądź dany moduł. Znalezienie defektów jest droższe niż podczas testowania statystycznego.
Dlaczego testujemy?
Warto też zadać sobie pytanie dlaczego testujemy oprogramowanie? Przecież napisane oprogramowanie można by było od razu zaimplementować do systemów produkcyjnych.
Tutaj musimy mieć świadomość, że kod który wychodzi spod rąk programistów często nie jest idealny i posiada błędy. Wynikają one z różnych przyczyn, błędów komunikacyjnych, błędnych założeń, złej implementacji czy błędów w integracji.
Testowanie oprogramowania jest kolejnym „filtrem”, który weryfikuje czy produkt, kod jest odpowiedniej jakości, aby mógł być używany nie powodując strat i nie stwarzając zagrożenia.
Źródła:
https://unsplash.com/photos/bJjsKbToY34