Testowanie kompleksowe a testowanie regresyjne: omówienie dwóch perspektyw testowania

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Celem każdego testera jest zyskanie pewności co do oprogramowania dzięki ciągłemu testowaniu. Możemy lepiej spać w nocy, wiedząc, że użytkownicy napotkają mniej błędów w produktach, ponieważ wdrożono rozbudowany proces testowania. Wybór odpowiednich strategii testowania jest co najmniej tak samo ważny jak przeprowadzenie wystarczającej liczby testów. Kiedyś poproszono mnie o stworzenie planu testów dla złożonego urządzenia […]

Celem każdego testera jest zyskanie pewności co do oprogramowania dzięki ciągłemu testowaniu. Możemy lepiej spać w nocy, wiedząc, że użytkownicy napotkają mniej błędów w produktach, ponieważ wdrożono rozbudowany proces testowania. Wybór odpowiednich strategii testowania jest co najmniej tak samo ważny jak przeprowadzenie wystarczającej liczby testów.

Kiedyś poproszono mnie o stworzenie planu testów dla złożonego urządzenia sieciowego. Celem było osiągnięcie 100% pokrycia różnych połączeń i ich kombinacji. Szybkie obliczenia wykazały, że skonfigurowanie i przeprowadzenie takich testów zajęłoby ponad 40 tysięcy lat.

Im bardziej złożone są systemy, tym ważniejsze jest znalezienie strategii testowania, która będzie zarówno wykonalna, jak i skuteczna.

Dwa podejścia do testowania, o których ostatnio często się mówi, są znane jako testowanie kompleksowe i testowanie regresji. 

Celem testowania regresji jest sprawdzenie, czy to, co działało wczoraj, nadal działa dzisiaj po wprowadzeniu zmian. 

W testowaniu kompleksowym testuje się cały proces biznesowy, stąd określenie „od początku do końca”.

Częstym błędem jest uznawanie tych dwóch strategii za takie same, ponieważ testowanie regresji często obejmuje również testowanie kompleksowe. Błędem byłoby jednak założenie, że testowanie kompleksowe ogranicza się wyłącznie do testów regresji.

Testowanie regresji powinno odbywać się na wszystkich poziomach testowania, zaczynając od testów jednostkowych. Testowanie kompleksowe obejmuje testowanie regresji, jednak testowanie kompleksowe rzadko jest możliwe na niższych poziomach testowania, ponieważ aby przetestować cały proces, trzeba mieć przygotowane wszystkie jego elementy. 

Każdy rodzaj testowania służy odrębnemu i innemu celowi. Każdy ma własny zestaw korzyści, wyzwań i cech, które sprawiają, że nadaje się do realizacji różnych celów związanych z oprogramowaniem. 

Skoro mowa o testowaniu jednostkowym, sprawdź nasze rekomendacje dotyczące 10 najlepszych narzędzi do testowania jednostkowego.

Testowanie kompleksowe: czym jest — a czym nie jest

Testowanie kompleksowe oznacza testowanie przepływu pracy od początku do końca. Wiele przepływów pracy lub procesów biznesowych obejmuje obecnie wiele aplikacji i systemów. Dlatego tradycyjne pojęcia testowania aplikacji lub testowania systemu mogą już nie być wystarczające.

Testowanie kompleksowe mierzy funkcjonalność i wydajność procesu biznesowego. Ze względu na swój charakter testowanie kompleksowe nie zawsze można przeprowadzić w standardowym środowisku testowym. Zamiast tego często konieczne jest użycie symulowanego lub rzeczywistego środowiska po wdrożeniu.

Testy kompleksowe służą głównie do identyfikowania problemów, zależności i kwestii związanych z integracją.

Ten rodzaj testowania może brzmieć podobnie do testów akceptacyjnych użytkownika (UAT), ponieważ pozwala testerom odwzorować zachowanie użytkownika końcowego, na przykład symulując transakcję w witrynie internetowej, czyli typowy konsumencki proces biznesowy. Jednak w nowoczesnym procesie wytwarzania oprogramowania opartym na szybkich cyklach testowanie kompleksowe musi być działaniem ciągłym, a nie jedynie wysiłkiem związanym z testami akceptacyjnymi. 

Podczas przeprowadzania testów kompleksowych niezwykle ważne jest zasymulowanie rzeczywistego środowiska, które często obejmuje interakcje z bazami danych. Aby zapewnić płynne działanie, warto rozważyć użycie wysokiej klasy oprogramowania do zarządzania bazami danych.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Korzyści i wyzwania związane z testowaniem kompleksowym

Większość dzisiejszych firm korzysta zarówno z rozwiązań chmurowych, jak i lokalnych, co stanowi mocny argument za ścisłym monitorowaniem integracji. Zazwyczaj testowanie kompleksowe doskonale sprawdza się w przypadku systemów heterogenicznych, umożliwiając kontrolę każdego odrębnego systemu i poziomu — od interfejsu użytkownika aplikacji, przez jej zaplecze, po bazę danych. 

W tym miejscu pojawia się jednak wyzwanie: testerzy muszą tworzyć i uruchamiać wiele długotrwałych i powtarzalnych testów, co jest bardzo pracochłonne. Większy zestaw testów oznacza, że jego utrzymanie wymaga więcej czasu i wysiłku. Testerzy testów kompleksowych często poświęcają ogromną część czasu na tworzenie i utrzymywanie środowisk testowych. 

Ponieważ testowanie kompleksowe ma na celu odtworzenie interakcji użytkownika, nie można go przeprowadzać wyłącznie w środowisku deweloperskim. Środowisko produkcyjne nie zawsze jest jednak dostępne i może być podatne na przerwy w testowaniu, na przykład z powodu aktualizacji oprogramowania.

Właściwe testowanie kompleksowe wymaga automatyzacji testów na dużą skalę. Testerzy powinni koncentrować się na projektowaniu testów i analizowaniu ich wyników, zamiast utrzymywać istniejące testy oraz konfigurować narzędzia i środowiska. Platforma do automatyzacji testów, która zmniejsza obciążenie związane z utrzymaniem, automatyzuje konfigurację testów i umożliwia ich równoległe wykonywanie, może zaoszczędzić wiele wysiłku, a jeszcze więcej czasu.

Testowanie regresji

Testowanie regresji jest przeprowadzane, gdy system uległ zmianom. Każdy, kto zajmował się testowaniem oprogramowania, wie, że zmiany w jednym miejscu mogą spowodować nieprawidłowe działanie w innym.  

Testowanie regresji można zaobserwować w praktyce po wystąpieniu któregokolwiek z tych scenariuszy: dodaniu nowych funkcji, naprawieniu błędów, aktualizacjach lub dowolnych nowych wydaniach. Testerzy mogą przeprowadzić częściowy lub pełny wybór spośród istniejących wcześniej przypadków testowych. 

Rozważmy ten przykład:

Wyobraź sobie proces biznesowy, który rozpoczyna się od zakupu dokonanego przez konsumenta za pomocą aplikacji mobilnej. Proces biznesowy może być kontrolowany przez aplikację Salesforce, płatność może być realizowana przez zewnętrzny system przetwarzania płatności, a właściwe zamówienie może być przetwarzane w aplikacji  SAP. Niektóre etapy procesu mogą obejmować udział ludzi. 

Twórcy zaangażowanych aplikacji mogą rozwijać swoje rozwiązania niezależnie od siebie, być może nawet nie wiedząc o swoim istnieniu. Ulepszenie jednej aplikacji może spowodować problem z niekompatybilnością w innej. W tym miejscu testowanie kompleksowe i testowanie regresji łączą się w bardzo znaczący sposób.

More Articles

Automatyzacja testów regresji w potoku wydań

Testowanie regresji dopełnia potok CI/CD, ponieważ ocenia stabilność systemu przy każdej zmianie. Nikt nie lubi wykonywać poprawek i przekonywać się, że coś zostało zrobione nieprawidłowo po uruchomieniu oprogramowania. 

Korzyści te wiążą się jednak z wyzwaniami, szczególnie gdy oprogramowanie rozwija się wraz z firmą. Stare przypadki testowe będą uruchamiane razem z nowymi, co prowadzi do rozrostu zestawów testów i wydłużenia cykli testowania. Automatyzacja, a ostatecznie także AI, pomoże w wykonywaniu, utrzymaniu i analizie testów.

Testowanie kompleksowe a testowanie regresji: które rozwiązanie jest odpowiednie dla Twojej firmy? 

Odpowiedź brzmi: oba. Nie możesz wybierać między testowaniem kompleksowym a testowaniem regresji. 

Zamiast tego musisz zdecydować, ile testowania kompleksowego należy przeprowadzić, jaka jego część powinna obejmować testowanie regresji, a jaka testowanie nowych funkcji. 

Jak omówiono powyżej, testowanie kompleksowe jest zwykle powolne i wymaga złożonych konfiguracji testowych. Zastosowanie automatyzacji w celu skrócenia czasu realizacji jest niezbędne. 

Jednak ze względu na złożony charakter testowania kompleksowego automatyzację należy stworzyć tak, aby czas i wysiłek potrzebne do jej utrzymania nie pochłonęły uzyskanych korzyści. 

Głównym problemem, z którym mierzą się testerzy, jest to, że powtarzalne testowanie przy użyciu dużych zestawów testów w heterogenicznym środowisku oznacza długie cykle testowe i żmudny proces. Nie da się jednak tego uniknąć. 

Cyfrowe procesy biznesowe stale się rozwijają zarówno pod względem skali, jak i złożoności. Doskonały zespół testowy, dysponujący odpowiednimi, nowoczesnymi narzędziami do automatyzacji, może realnie przyczynić się do sukcesu firmy. Słyszymy również, że zespoły muszą używać różnych narzędzi do testowania różnych aplikacji, dlatego pomocne może być znalezienie rozwiązania, które testuje wiele scenariuszy.

Może Cię również zainteresować: 10 najlepszych narzędzi do wizualnego testowania regresji dla zespołów QA

Esko Hannula
Esko Hannula is VP Product Line Management at Copado, a DevOps and testing solution for low code SaaS platforms that run the world’s largest digital transformations. Backed by Insight Partners, Salesforce Ventures and SoftBank Vision Fund, Copado accelerates multi-cloud, enterprise deployments by automating the end-to-end software delivery process to maximize customers’ return on their cloud investment.
Follow the author:

You may also like