Krótki przewodnik po testowaniu regresji: kiedy go wykonać?

Opublikowany: 2023-05-23

Spis treści

Testy regresyjne: dlaczego są niezbędne dla Twojego oprogramowania?

Ponieważ świat rozwoju oprogramowania nieustannie się zmienia, nieustannie pojawiają się nowe technologie, a różne odmiany uznanych technologii różnią się od siebie. Oznacza to, że kilka części aplikacji, które w przeciwnym razie byłyby w porządku, może zostać potencjalnie uszkodzonych przez drobne zmiany. Zjawisko to znane jest jako regresja, która opisuje ponowne wprowadzanie błędów do oprogramowania po tym, jak zostało ono zmienione — albo w sposób niezamierzony, albo poprzez świadomą decyzję o wprowadzeniu nowej funkcjonalności.

Z tego powodu testy regresyjne są obecnie jednym z czynników decydujących o sukcesie lub porażce projektów tworzenia oprogramowania, ponieważ pomagają zapewnić, że oprogramowanie działa zgodnie z założeniami, niezależnie od wprowadzonych zmian. W tym artykule poznamy podstawy tego typu testów wraz z zespołem SE Ranking, który rozwija platformę SaaS SEO i wykorzystuje testy regresji jako część swojej rutyny programistycznej.

Co to jest testowanie regresji?

  • Testy regresyjne to podejście do sprawdzania, czy nowe i zmodyfikowane części systemu oprogramowania nadal działają zgodnie z oczekiwaniami po zmianie.

Testy regresji są wykonywane w celu sprawdzenia błędów i sprawdzenia, czy ostatnia zmiana zepsuła istniejący kod. Test należy przeprowadzić w taki sam sposób, jak poprzedni test linii bazowej. Celem testów regresji jest upewnienie się, że reszta zachowania oprogramowania nie ulegnie zmianie podczas modyfikacji kodu.

  • Na przykład, jeśli funkcja umożliwiająca użytkownikom logowanie się została zmieniona, trzeba by wykonać test, który uwzględnia wszystkie możliwe wyniki logowania jako inny użytkownik: z nieprawidłowym hasłem i poprawnym hasłem.

Jak działają testy regresji?

Mechanizm działania testu regresji obejmuje kilka technik, które można wykorzystać podczas testowania oprogramowania, aby zapewnić, że nowe zmiany w programie lub oprogramowaniu nie zmienią funkcjonalności istniejącego programu:

  • Ponownie przetestuj całe oprogramowanie

Testowanie całego oprogramowania po zmianie jednego lub kilku jego elementów jest jedną z technik testowania regresyjnego. Ma to na celu zapewnienie, że zmieniona część oprogramowania działa poprawnie z niezmienionymi częściami.

Wraz z pojawieniem się zwinnych praktyk wytwarzania oprogramowania, testowanie regresji ewoluowało od czynności ściśle ręcznej do czynności obejmującej zautomatyzowane narzędzia i ustrukturyzowane podejścia. Jest to podejście, które wymaga użycia zautomatyzowanych narzędzi testowych lub wsparcia czynności testowania regresyjnego testerów manualnych logiką aplikacji.

Ponieważ SE Ranking działa metodą scrumową i rozwija się, stale zmieniając i dodając nowe funkcje i funkcjonalności do platformy, oni, jak nikt inny, są zaznajomieni z wyżej wspomnianą techniką testowania regresji. Zastosowanie go może zapewnić, że całe oprogramowanie działa poprawnie po nowo dodanych funkcjach i nie zmieniają one funkcjonalności pozostałego oprogramowania.

  • Wybór testu regresji

Wybór testu regresji to technika, która wybiera przypadki testowe, które najlepiej przybliżają średnie pokrycie. Wymaga mniej czasu i wysiłku, ponieważ nie bierze pod uwagę wszystkich dostępnych testów, ale szczególnie te, które zapewniają wysoką wartość za ich koszt.

Wyjaśnijmy ten pomysł na przykładzie:

Wyobraź sobie, że masz program składający się z 1000 linii, który musisz przetestować, i nie masz budżetu (ani czasu) na wynajęcie firmy testującej. Prawdopodobnie możesz sam napisać trzy testy i zakodować je w swoim zestawie testów regresji. Następnie możesz poprosić dwie inne osoby, aby również przeprowadziły z tobą testy, co daje w sumie do 5 testów. W tym miejscu do gry wchodzi selekcja testów regresji — walka z ograniczonymi zasobami i pomoc w maksymalizacji zakresu pokrycia generowanego przez każdy test poprzez inteligentne i selektywne decyzje dotyczące przeprowadzania testów.

  • Priorytety testów regresji

Priorytetyzacja testów regresji to proces, w którym testowanie oprogramowania określa kolejność wykonywania przypadków testowych w celu zminimalizowania defektów oprogramowania, biorąc pod uwagę wagę każdego defektu i najważniejsze cechy systemu. Pomaga to określić, które scenariusze testowe powinny zostać uruchomione jako pierwsze, a które jako ostatnie.

Ponieważ zespół SE Ranking dwa razy w miesiącu przeprowadza testy regresji, przez cały czas dokonuje przeglądu priorytetów. Na przykład sekcje, które mają najwięcej zmian i nowych funkcji lub zostały ocenione jako mające najwięcej wad, mają najwyższy priorytet. Jednocześnie sekcje, które nie mają zmian i nie są powiązane z sekcjami ze zmianami, mają niski priorytet.

źródło: Jelvix

Kiedy możemy przeprowadzić testy regresyjne?

  • Gdy do aplikacji zostanie dodana nowa funkcjonalność

Kiedy dodajesz nową funkcjonalność do istniejącego programu, często może to kolidować z wcześniej działającymi funkcjami i prowadzić do niepowodzenia w dalszym działaniu, nawet jeśli kod jest napisany perfekcyjnie. Z tego powodu ważne jest przeprowadzenie testów regresji w celu sprawdzenia, czy jakiekolwiek modyfikacje lub ulepszenia w jednej części aplikacji nie wpływają niekorzystnie na inną część. Kiedy zespół SE Ranking dodał nowy format pliku w funkcji eksportu, przeprowadził test regresji wszystkich funkcji w jakiś sposób związanych z eksportem.

  • Kiedy usterka zostanie usunięta

Możemy przeprowadzić testy regresji, gdy usterka zostanie usunięta. Testy regresji sprawdzają, czy oprogramowanie (lub strona internetowa) działa zgodnie z oczekiwaniami po naprawieniu błędu. Zmiana kodu musi zostać przetestowana, aby określić, czy wpłynęła na którykolwiek z pozostałych modułów i czy wszystko działa zgodnie z oczekiwaniami.

  • Gdy występuje problem z wydajnością

Testy regresyjne są często przeprowadzane w celu zapewnienia spełnienia standardów jakości i potwierdzenia jego wydajności po naprawie. Innymi słowy, jest to proces, dzięki któremu możemy zapewnić, że wydajność i funkcjonalność starszych modułów kodu spełnia lub przewyższa specyfikacje zdefiniowane w nowszych wersjach kodu. Testy regresyjne mają na celu potwierdzenie, że poprawki w oprogramowaniu nie wprowadziły nowych defektów lub błędów.

  • Kiedy następuje zmiana środowiska

Testy regresyjne następują i weryfikują pomyślne testy jednostkowe, testy integracyjne i testy systemowe, i są przeprowadzane, gdy zachodzą zmiany środowiskowe. Zmiany środowiskowe, które mogą wywołać testy regresji, obejmują uaktualnienia sprzętu, nowe wersje oprogramowania i ograniczenia zasobów, takie jak pamięć, miejsce na dysku i szybkość procesora. Kiedy zaktualizowano ramy, na których zwykle pracuje zespół deweloperski SE Ranking, przeprowadził on również test regresji, aby upewnić się, że wszystko działa nie gorzej niż wcześniej.

Różnica między ponownym testowaniem a testowaniem regresyjnym

Deweloperzy dostarczą wolny od błędów i poprawny kod tylko wtedy, gdy ten proces testowania zostanie przeprowadzony poprawnie. Ponowne testowanie i testowanie regresyjne to dwie różne metody i podejścia do testowania. Oba są używane do sprawdzania poprawności aplikacji; jednak ich główny cel jest inny.

Termin ponowne testowanie odnosi się do ponownego testowania funkcjonalności lub błędu w celu upewnienia się, że kod został naprawiony. Z kolei testowanie regresyjne odnosi się do testowania nowo utworzonej funkcji z dodatkową zmienną, aby upewnić się, że zmiana nie wywoła nieoczekiwanych negatywnych skutków dla istniejących funkcjonalności.

źródło: Utor

Co więcej, znaczną różnicą między testowaniem regresji a ponownym testowaniem jest czas potrzebny do wykonania każdego z nich. Podczas gdy ponowne testowanie można przeprowadzić natychmiast po naprawieniu defektu, ukończenie testów regresyjnych zajmie kilka dni, ponieważ obejmuje ponowne sprawdzenie wszystkich istniejących przypadków testowych w celu wykrycia nowych defektów. Jeśli test regresji zakończy się niepowodzeniem, konieczne staje się ponowne przetestowanie, ponieważ oznaczałoby to, że defekt występuje w nowej kompilacji.

Jak przeprowadzić testy regresji?

źródło: simform

  1. Przygotuj się do testów manualnych i automatycznych

Zbieranie wymagań dotyczących oprogramowania i sprzętu, konfigurowanie z odpowiednimi narzędziami i wsparciem oraz nauka efektywnego korzystania z nich zapewnią, że Twoje wysiłki będą produktywne. Dane i środowiska testowe mogą również wymagać przygotowania przed przeprowadzeniem testów.

Ręczne testy regresji są wykonywane ręcznie na produkcie, aby upewnić się, że pewne cechy, funkcje lub aspekty produktu działają i są ważne po zastosowaniu zmian. Ręczne testowanie może być czasochłonne, ponieważ zasadniczo powtarzasz te same zadania za każdym razem, gdy zgłaszany jest błąd. Wymaga również wielu zasobów do ukończenia.

Automatyczne testowanie może zmniejszyć liczbę potrzebnych zasobów i umożliwić lepsze i szybsze testowanie i sprawdzanie poprawności aplikacji. Testy automatyczne są wykonywane przez narzędzia/ramę testową i mogą być zintegrowane z potokiem ciągłego dostarczania. Ręczne testowanie regresji byłoby lepszym pomysłem w przypadku niewielkiej liczby przypadków testowych, podczas gdy automatyczne testowanie regresji będzie działać lepiej, jeśli masz ogromny stos przypadków testowych, którymi trzeba zarządzać.

  1. Wykryj zmiany w kodzie źródłowym

Dokonując jakichkolwiek zmian w kodzie lub aktualizując część aplikacji, programiści spędzają znaczną ilość czasu na testowaniu kodu źródłowego, który jest modyfikowany. Trudność polega na znalezieniu sposobu na konkretne określenie obszarów, na które zmiany będą miały wpływ, aby skoncentrować wysiłki związane z testowaniem. Ale tak naprawdę trzeba to zrobić!

W przeciwnym razie możesz poświęcić dużo czasu i wysiłku, aby przekonać się, że zmiany nie mają wpływu na testowane części twojego systemu. Nazywa się to testowaniem „z zewnątrz” i może pomóc zaoszczędzić czas i pieniądze, ponieważ będziesz w stanie lepiej określić, gdzie jest problem.

  1. Nadaj priorytet tym zmianom i wymaganiom dotyczącym produktu

Ustalenie wymagań dotyczących produktu i modyfikacja strony internetowej to podstawowe kroki w procesie testowania oprogramowania. Jednak bez nadania priorytetu tym zmianom może się okazać, że będziesz musiał wielokrotnie ponownie testować sekcje witryny. Spowoduje to albo brak czasu (i pieniędzy) przed ukończeniem całego cyklu testowania, albo osłabienie cyklu testowania, ponieważ każdy przypadek testowy będzie kładziony na ograniczony nacisk.

Modyfikacje i wymagania produktowe zostały wymienione po zakończeniu fazy rozwojowej. W tej fazie tester powinien nadać priorytet tym modyfikacjom i wymaganiom w oparciu o funkcjonalność i zgodność z procesem testowania oprogramowania. Priorytetyzowanie zmian i wymagań produktowych można również osiągnąć poprzez wspólne dyskusje, zawężanie wymagań i techniki testowania.

  1. Określ punkt wejścia i kryteria wejścia

Raz po raz zdarza się, że dana aplikacja nie kwalifikuje się do automatyzacji testów regresji. A to prowadzi do unieważnienia wysiłków włożonych w regresyjne testowanie oprogramowania. Poziom uprawnień jest punktem wejścia do zestawu testów regresji. Zwykle opiera się na parametrach konfiguracyjnych lub tablicach obiektów. Zanim będzie można przeprowadzić test regresji, docelowa konfiguracja aplikacji musi spełniać predefiniowane kryteria kwalifikacyjne.

  1. Określ punkt wyjścia

Chociaż możesz uruchomić nową funkcję i przeprowadzić test regresji, nie oznacza to, że testowanie się na tym kończy. W większości przypadków należy przeprowadzić dodatkowe testy, aby upewnić się, że funkcja działa zgodnie z przeznaczeniem. Dlatego na końcu każdego testu musisz zdecydować, czy kontynuować wykonywanie testu regresji, czy też go zatrzymać, co jest znane jako „punkt wyjścia”.

Punkt wyjściowy lub końcowy jest wynikiem indywidualnego testu lub programu regresji. Ten punkt ma na celu określenie statusu rozważanej funkcji oprogramowania i związanych z nią wymagań przed zakończeniem testu lub programu. Punkt wyjściowy lub końcowy testów regresji może mieć postać wielu różnych metryk. Zależy to tylko od celów organizacji i sposobu mierzenia sukcesu nowej funkcji.

  1. Zaplanuj testy

Po potwierdzeniu zrozumienia wymagań funkcjonalnych i niefunkcjonalnych aplikacji, czas przystąpić do strukturyzacji pod kątem wdrożenia. Powinieneś stworzyć plan testów, aby zapewnić strukturę i wytyczne dla działań testowych. Aby to zrobić, musimy:

  • Ustal cele i cele testów;
  • Określ zależności zasobów;
  • Zidentyfikuj, które komponenty testu należy przetestować;
  • Określ, którzy członkowie zespołu muszą przeprowadzić testy;
  • Wybierz odpowiednie ramy czasowe;
  • Ukończ fazy testowania.

Wniosek

W aplikacji internetowej pojęcie testowania regresji wydaje się dość proste. Testy regresyjne to zestaw testów specjalnie napisanych po każdej aktualizacji lub wydaniu oprogramowania, aby upewnić się, że nie zostały wprowadzone żadne nowe błędy. Jest to bardzo ważne, ponieważ naprawienie błędu może również spowodować pojawienie się innego błędu. W dzisiejszej globalnej gospodarce czas to pieniądz, a zaniechanie testów regresji będzie Cię drogo kosztować. Z tego powodu, aby dostarczać użytkownikom wyłącznie wysokiej jakości produkty i aktualizacje, należy regularnie przeprowadzać testy regresyjne, aby wykluczyć wszelkie błędy w oprogramowaniu.