Testowanie to nieodzowna część procesu produkcyjnego i chleb powszedni każdego programisty. Na każdym etapie pracy przeprowadza się różnorodne testy, których zadaniem jest wyłapywanie wszelkich niedociągnięć i problemów na bieżąco. Istnieje niezliczona ilość metod testowania oprogramowania, które można stosować pojedynczo lub symultanicznie, a nawet już po samym zakończeniu produkcji. 

Testy regresji to rodzaj testowania, które przeprowadza się, gdy nasz produkt jest już ukończony i oficjalnie wypuszczony. Jak to działa? W jakim celu i w jaki sposób przeprowadza się tę procedurę? Wszystkiego dowiesz się z naszego dzisiejszego artykułu. Zapraszamy do lektury. 

Czym są testy regresji?

Testy regresji wykorzystuje się przy ewaluacji ukończonego oprogramowania, które weszło już na rynek. W jakim celu? Metoda ta pozwala na zlokalizowanie i zidentyfikowanie ewentualnych błędów oraz sprawdzenie, czy nasze oprogramowanie “nadążyło” za kolejnymi aktualizacjami i łatkami. Za każdym razem, gdy dokonujemy jakichkolwiek update’ów, musimy liczyć się z pojawieniem nowych bugów, a nawet z powrotem tych, z którymi zdążyliśmy się już uporać. Właśnie wtedy testy regresji wchodzą na scenę. 

Najczęściej wykonuje się testy regresji każdorazowo przed wdrożeniem nowej aktualizacji, ale nie jest to jedyna sytuacja, która wymaga użycia tej metody. Jeśli wprowadzamy jakieś zmiany do oprogramowania, jeszcze na etapie produkcji, musimy sprawdzić, czy program nadal działa tak jak należy. Regresję software’u mogą spowodować nie tylko wprowadzone zmiany i łatki, ale również zmiany w konfiguracji sprzętu oraz degradację poszczególnych komponentów elektronicznych. Testy regresji są wręcz stworzone do Agile Software Development, ale nie należy do najłatwiejszych metod. Wymaga niezwykłej dokładności, rzetelności i ścisłej współpracy wszystkich członków zespołu, ale efekty są warte zachodu. 

Techniki stosowane przy testach regresji

Na testy regresji składa się szereg różnych pomniejszych testów (funkcjonalnych i niefunkcjonalnych), dzięki którym Twój zespół będzie w stanie dokładnie przeskanować całe oprogramowanie w poszukiwaniu potencjalnych błędów. Wśród technik stosowanych przez deweloperów i specjalistów ds. kontroli jakości, wyróżniamy:

  • Retest All
  • Regression Test Selection
  • Test Case Prioritization
  • Hybrid approach

Retest All – dokładne, ale kosztowne rozwiązanie

Technika Retest All to najdokładniejsza i najbardziej wszechstronna metoda testów regesji, co niestety wiąże się z wysokimi kosztami jej przeprowadzenia. Wymaga ponownego sprawdzenia każdego przypadku testowego, aby móc jednoznacznie stwierdzić, że oprogramowanie działa tak jak powinno. I to tyle. Z pozoru może wydawać się banalne, ale w rzeczywistości to naprawdę wymagający i kosztowny proces. 

Regression Test Selection – gdy zdasz sobie sprawę, że brakuje Ci czasu i środków na Retest All

Regression Test Selection (RTS) to odpowiedź na bardzo drogie i czasochłonne Retest All. Technika RTS pozwala nam na umiarkowanie staranne przetestowanie oprogramowania, dzięki podzieleniu wszystkich testów na trzy kategorie: przypadki testowe wielokrotnego użytku, przypadki testowe wielokrotnego testowania oraz przedawnione przypadki testowe. Co ciekawe, metoda RTS może doprowadzić do powstania nowych przypadków testowych, których wcześniej nie mieliśmy w swoim arsenale, ale które mogą być niezwykle przydatne podczas procesu testowania. 

Temat Regression Test Selection jest bardzo rozległy i interesujący. Jeśli chcesz poszerzyć swoją wiedzę w tej dziedzinie i poznać inne przykłady RTS, zachęcamy do sięgnięcia po Understanding Regression Testing Techniques autorstwa Gaurav Duggal i Bharti Suri. W swojej książce, autorzy wprowadzają dalszą klasyfikację metod RTS i dzielą je na techniki pokrycia i techniki minimalizacji oraz wyjaśniają, jakie techniki są bezpieczne. 

Techniki pokrycia bazują na konkretnych kryteriach testowania, najczęściej dostarczanych przez klienta, któremu zależy na przeprowadzeniu testów regresji. Techniki te pozwalają przyjrzeć się tylko tym przypadkom testowym, które są istotne dla funkcjonowania danej części oprogramowania. Techniki minimalizacji działają na podobnej zasadzie, jednak w tej metodzie nie wybieramy przypadków testowych na podstawie ustalonych kryteriów. W wypadku technik minimalizacji osoba testująca wybiera na podstawie swojej wiedzy minimalny zestaw przypadków wystarczający do uzyskania rezultatu.

Zwiększ swoją efektywność z BugBug

Test Case Prioritization – najbardziej racjonalne podejście

Test Case Prioritization (TSP) ma na celu maksymalizację wskaźnika wykrywania błędów i zapewnia nam dokładne przetestowanie oprogramowania, przy jednoczesnym ograniczeniu jego kosztów. Każdy przypadek testowy ma nadany priorytet, dzięki czemu podczas przeprowadzania testów możemy zacząć od najbardziej istotnych komponentów, a w dalszej kolejności przejść do tych mniej pilnych. Dzięki temu, nawet jeśli dysponujesz niezbyt imponującym zasobem czasu i środków, możesz przetestować najważniejsze elementy oprogramowania i zidentyfikować jak najwięcej błędów. 

TSP może zostać przeprowadzone na dwa sposoby – w pierwszym wariancie, czyli General Prioritization, wybieramy przypadki testowe, które powinny być efektywne (w teorii) we wszystkich wersjach oprogramowania, nad którym pracujesz. Kolejna metoda – Version Specific Prioritization, bierze pod uwagę tylko jedną konkretną wersję programu, ignorując inne istniejące lub potencjalne odsłony. 

Hybrid approach – najbardziej optymalna metoda

Niekiedy jesteśmy postawieni w sytuacji, w której nie jesteśmy w stanie wdrożyć jednej ze wspomnianych wcześniej metod testowania regresywnego. Właśnie wtedy należy zastosować rozwiązanie hybrydowe, które łączy w sobie najlepsze cechy RTS oraz TCP. Hybrid approach to metoda, która nadal jest rozwijana i każda pracująca na niej osoba dodaje coś nowego – to dlatego nie istnieje jednoznaczna definicja tej techniki, a każda wariacja ma swoje plusy i minusy.

Czy testy regresji są konieczne?

Testy regresji są niezwykle istotną częścią procesu projektowego, ponieważ dzięki nim możesz mieć pewność, że Twoje oprogramowanie działa jak należy. Każdy update, łatka, czy nawet pozornie niewielka zmiana w kodzie może spowodować pojawienie się nowych problemów. Testy regresji pomogą Ci je wyeliminować, a dzięki temu – zachować wysoką jakość produktu i zadowolenie użytkowników. 

Nie każdy projekt będzie wymagał zastosowania tego typu testowania. W przypadku oprogramowania, które nie ma być dalej rozwijane, takie testy są zwyczajnie zbędne. Jeśli jednak zależy Ci na ciągłym udoskonalaniu Twojego programu, testy regresji będą Twoim najlepszym przyjacielem.

Niezawodne, kompleksowe oprogramowanie, które usprawnia pracę testerów i programistów.

Zamów newsletter