Testowanie oprogramowania – poziomy testów
Kluczowym aspektem, a często bagatelizowanym w inżynierii oprogramowania jest testowanie. Wiele razy pewnie każdy spotkał się z podejściem typu, zróbmy funkcjonalność, napiszmy kod, a testy i dokumentację dorobi się później (czytaj nigdy). Tego typu praktyki można często spotkać w małych firmach gdzie nawet czasami dochodzi do absurdalnych sytuacji w których po prostu menager/właściciel mówi wprost, że nie zatrudni testera bo nie ma na to środków więc developerzy muszą sobie radzić sami. Jak to się może skończyć w przyszłości? Wszyscy doskonale wiemy…
Dbając o dobre praktyki programistyczne, postanowiłem więc na blogu poruszyć zupełnie nową tematykę związaną właśnie z testowaniem oprogramowania. Na początek postanowiłem więc przygotować wpis na temat poziomów testów, zapraszam do lektury…
W testowaniu oprogramowania wyróżniamy cztery poziomy testowania. Zaliczamy do nich:
- Testy jednostkowe (ang. unit-testy),
- Testy integracyjne,
- Testy systemowe,
- Testy akceptacyjne.
Na czym polegają testy jednostkowe?
Testy jednostkowe jak sama nazwa wskazuje testują „jednostkę” czyli pojedynczy moduł lub komponent oprogramowania. Przykładowo mając do przetestowania jakąś konkretną metodę z klasy X, deweloper w większości przypadków oczywiście nie sprawdza jej działania „manualnie”, ale właśnie tworzy odpowiednie testy jednostkowe, które sprawdzają poprawność napisanego kodu. Jeśli między konkretnymi modułami lub komponentami występują jakieś zależności, to w tym celu stosuje się tak zwane „zaślepki” lub też sterowniki, których za zadaniem jest symulacja działania części kodu, nie będącej obiektem testów. Przykładowo testy jednostkowe nie sprawdzają więc czy zdalny serwer zwrócił nam odpowiedniego jsona, ale to czy ten json („zahardkodowany” na potrzeby testu), jest poprawnie interpretowany.
Na czym polegają testy integracyjne?
Testy integracyjne sprawdzają poprawność integracji między pojedynczymi modułami lub komponentami oprogramowania. W przeciwieństwie do poziomu testów jednostkowych, na tym etapie nie sprawdzamy poprawności działania pojedynczych komponentów lub modułów. Przykładowym testem integracyjnym jest na przykład weryfikacja poprawności połączenia z bazą danych.
Na czym polegają testy systemowe?
Testy systemowe są przeprowadzane na całym systemie i mają za zadanie sprawdzić konkretny scenariusz z punktu widzenia użytkownika. Przykładowym scenariuszem, może być na przykład dodanie artykułu przez system CMS. Od testera wymaga to więc przeprowadzenia autoryzacji, uruchomienia edytora, napisania artykułu, publikacji i weryfikacji czy wszystko jest poprawnie wyświetlane na stronie. Są to jedne z najtrudniejszych testów, bowiem trudno je zautomatyzować.
Na czym polegają testy akceptacyjne?
Testy akceptacyjne to ostatni poziom testów, są one wykonywane w celu akceptacji produktu przez klienta. Generalnie w tym momencie nie powinno już być żadnych błędów w oprogramowaniu. Testy te są przeprowadzane na środowisku produkcyjnym i powinny sprawdzać czy oprogramowanie ostatecznie realizuje wszystkie założenia i oczekiwania klienta.