Testowanie regresji

Testowanie regresji
Testy regresji to jedne z najważniejszych testów wykonywanych w procesie tworzenia oprogramowania. Mają one na celu kontrolowanie jakości oraz szybkie wykrywanie potencjalnego regresu oprogramowania.

Definicja ze słownika testerskiego:

Testowanie wcześniej przetestowanego modułu lub systemu po modyfikacji w celu upewnienia się, że w wyniku wprowadzonych zmian w niezmienionych obszarach oprogramowania nie zostały wprowadzone lub odkryte defekty. Jest wykonywane w przypadku zmiany oprogramowania lub jego środowiska.

Testowanie regresji jest w ISTQB traktowane jako jeden z czterech typów testów obok testowania funkcjonalnego, niefunkcjonalnego oraz białoskrzynkowego. Jest to jednak sprawa kontrowersyjna, ponieważ regres może nastąpić w obszarze zarówno funkcjonalnym, jak i w charakterystykach jakości lub w kodzie źródłowym. W związku z tym testy regresji są zbiorem wszystkich wymienionych testów. Zostało to opisane w artykule o typach testów.

Testowanie regresji jest ważną czynnością bez względu na to czy prowadzimy projekt w podejściu kaskadowym czy też zwinnym. W każdym nowym przyroście oprogramowania może nastąpić regres - coś, co wcześniej było testowane i poprawnie działało mogło zostać zepsute. Testowanie regresji może przyjmować zarówno formę weryfikacji, jak i walidacji.

W sylabusie ISTQB czytamy:

Istnieje ryzyko, że zmiana (poprawka lub inna modyfikacja) wprowadzona w jednej części kodu wpłynie przypadkowo na zachowanie innych części kodu w tym samym module, w innych modułach tego samego systemu, a nawet w innych systemach. Ponadto należy wziąć pod uwagę zmiany dotyczące środowiska, takie jak wprowadzenie nowej wersji systemu operacyjnego lub systemu zarządzania bazami danych. Powyższe, niezamierzone skutki uboczne, są nazywane regresjami, a testowanie regresji polega na ponownym wykonaniu testów w celu ich wykrycia.

Testy, które projektuje się do testowania regresji muszą być powtarzalne, dlatego, że często uruchamiane są na każdej kolejnej wersji oprogramowania. Dobrą i często powtarzaną praktyką jest automatyzowanie uruchamiania testów regresji. Przyjmują więc one postać testów jednostkowych uruchamianych przez programistów, testów integracji, zazwyczaj uruchamianych na interfejsach programowalnych (API) oraz testów na interfejsach graficznych uruchamianych przez testerów.

Co ciekawe istnieje jeszcze jedna definicja w słowniku, która mówi o testowaniu przeciwregresywnym (ang. regression-averse testing). Jest to "testowanie wykorzystujące różne techniki, tak by radzić sobie z ryzykiem regresji, np. przez projektowanie testaliów wielokrotnego użycia lub przez rozległą automatyzację testów na jednym lub wielu poziomach". Jest to zbiór technik, który realnie możemy interpretować jako strategię testowania. Używamy jej głównie w odniesieniu do utrzymania oprogramowania po jego wdrożeniu na produkcję.

Od 2019 roku i w najnowszych wersjach słownika testerskiego odchodzimy od pojęcia "testów regresywych" oraz "testów regresyjnych" na rzecz "testowania regresji". Regres ze słownika języka polskiego  to "powrót do wcześniejszego, gorszego stanu w rozwoju czegoś". Istnieje więc ryzyko nieuzasadnionego interpretowania testowania regresyjnego i regresywnego jako powodującego pogorszenia jakości oprogramowania. Postanowiono pozostawić jedno tłumaczenie z języka angielskiego, regression testing, jako "testowanie regresji". Zmiana ta została zaproponowana przez Jakuba Rosińskiego.

To powinno Cię zainteresować