Testy regresywne

Testowanie regresywne to jedno z najważniejszych testów wykonywanych w procesie tworzenia oprogramowania. Ma ono na celu kontrolowanie jakości oraz szybkie wykrywanie potencjalnego regresu oprogramowania.

Definicja ze słownika testerskiego

Testowanie regresywne: Ponowne przetestowanie uprzednio testowanego programu po dokonaniu w nim modyfikacji, w celu upewnienia się, że w wyniku zmian nie powstały nowe defekty lub nie ujawniły się wcześniej nie wykryte w nie zmienionej części oprogramowania. Testy takie są przeprowadzane po zmianach oprogramowania lub jego środowiska pracy.

Testowanie regresywne 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 regresywne są zbiorem wszystkich wymienionych testów. Zostało to opisane w artykule o typach testów >>

Testowanie regresji jest ważną częś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:

Testowanie regresywne polega na ponownym testowaniu już przetestowanego programu po jego modyfikacji po to, aby ujawnić możliwe defekty powstałe – lub odkryte – w wyniku wprowadzonej zmiany lub zmian. Defekty te mogą występować albo w testowanym oprogramowaniu, albo w innym – mającym lub nie, związek z przedmiotem testów – module oprogramowania. Testowanie regresywne wykonuje się po zmianie oprogramowania lub jego środowiska operacyjnego. Zakres testów regresywnych zależy od tego, jak duże jest ryzyko, że znajdzie się usterki w oprogramowaniu, które wcześniej działało poprawnie.

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 regresywnych. 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ę.

 

W najnowszej wersji słownika testerskiego odchodzimy od pojęcia testów regresywych 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".  *
 

*) poprawka po uwagach Jakuba Rosińskiego

 

 
 
 
 

Najbliższe terminy szkoleń

 

4-5 marca - Wrocław


4-7 marca - Katowice


6-8 marca - Warszawa


7-8 marca - Wrocław

 

Partnerzy

Narzędzia testerskie