Testy End to End

sie 16, 2021

Testy E2E


W tym materiale postaram się przybliżyć Wam szczególny rodzaj testów, jakim niewątpliwie są testy End To End. Zapewne, jeśli jesteście testerami, czy tez osobami należącymi do zespołów zapewniania jakości, to nieraz słyszeliście termin „End-to-End”, czy krócej i bardziej popularnie w branży „E2E”. Według mnie testowanie End-to-End jest jednym z kluczowych rodzajów testów, gdyż testy te weryfikują, czy system spełnia wymagania biznesowe (realizuje założone funkcjonalności) „od początku do końca”, tzn. w pełni testuje dane funkcjonalności wraz z ich wszystkim komponentami takimi jak np. bazy, danych, zewnętrzne integracje czy usługi.

Testy End to End

Głównym celem testowania End-To-End jest testowanie na podstawie doświadczenia użytkownika końcowego poprzez symulację rzeczywistego scenariusza użytkownika i walidację testowanego systemu wraz z komponentami pod kątem integracji i integralności danych. Ten rodzaj testów staje się coraz bardziej istotny, gdyż oprogramowanie jest coraz bardziej złożone i skomplikowane. Możemy dostrzec coraz większą liczbę integracji z innymi systemami, podsystemami, czy też usługami. W przypadku awarii jednego z takich elementów istnieje poważne ryzyko, że cały system może ulec awarii, czy też może nie spełniać swoich głównych założeń w sposób prawidłowy.
Testy E2E są zwykle przeprowadzane na gotowych systemach (w końcowej fazie developmentu – ponieważ muszą już w pełni działać wszystkie funkcjonalności, które będziemy testować).

Korzyści stosowania testów End-to-End

Testy End to End - korzyści

Jasne jest, że pozostałe metody testowania, na przykład modułowe, integracyjne, również dostarczają ważnych informacji o poszczególnych komponentach oprogramowania, jednak to właśnie testy End to End zapewnia tak kompleksową i dogłębną analizę oprogramowania z perspektywy klienta końcowego.

Testy funkcjonalne VS E2E


Jeśli dość wnikliwie przeczytałeś powyższy tekst, to pewnie nasuwa Ci się myśli: „No dobrze.. ale jak rozumiem testy E2E to po prostu testy funkcjonalne, które przeprowadzamy zawsze na wielu etapach testowania”. Nie do końca masz jednak rację. Aby wyprowadzić Cię z błędu, postaram się pokazać różnice między typowymi testami funkcjonalnymi a testami E2E.

Testy funkcjonalneTesty End to End
Testowanie jest ograniczone do jednego modułu, systemu, aplikacjiTestowanie obejmuje wiele aplikacji, usług i bardziej opiera się na pełnej integracji oprogramowania
Zapewnia, że ​​testowane oprogramowanie spełnia kryteria akceptacjiZapewnia, że ​​procesy biznesowe działają prawidłowo, zgodnie z założeniami
Testuje sposób, w jaki pojedynczy użytkownik korzysta z aplikacjiTestuje sposób pracy wielu użytkowników w aplikacjach
Wykonuje się je na różnych etapach developmentuWykonuje się je, wtedy, gdyż faza developmentu zbliża się do końca, lub gdy jest już zakończona.

Jak wygląda cały proces testów E2E

Na standardowy proces E2E składaj się następujące fazy:

  1. Zbieranie wymagań testowych (w kontekście pełnych, biznesowych funkcjonalności)
  2. Projektowanie scenariuszy testowych (do wcześniej zebranych wymagań procesów biznesowych)
  3. Faza developmentu – tworzenie programowania
  4. Testowanie End to End – wykonywanie wcześniej opracowanych scenariuszy testowych

Testy E2E - proces testowania

Główne wyzwania w testów End to End

Jak się pewnie domyślacie wykrywanie błędów w złożonym przepływie pracy wiąże się z wyzwaniami:

  • Tworzenie przepływów pracy 

Aby móc przetestować wybraną funkcjonalność w całości to, przypadki testowe w zestawie testów End to End muszą być uruchamiane w określonej, poprawnej kolejności. Ta sekwencja musi być zgodna ze ścieżką użytkownika końcowego podczas poruszania się po aplikacji. Tworzenie zestawów testów pasujących do tego przepływu pracy może być trudne i czasochłonne, zwłaszcza że zwykle wiąże się z tworzeniem i uruchamianiem setek a nawet tysięcy testów.

  • Dostęp do środowiska testowego 

Testowanie aplikacji w środowiskach deweloperskich jest dość łatwe. Jednak każda aplikacja musi zostać przetestowana w środowiskach testowych, przedprodukcyjnych czy produkcyjnych. Oczywiście zdarza się, że środowiska produkcyjne nie zawsze są dostępne do testowania, dlatego musimy testować na takich, które są jak najbardziej zbliżone do środowiska produkcyjnego. Testerzy muszą również przygotować się na problemy, takie jak aktualizacje systemu, które mogą przerwać wykonywanie testów, i zapobiegać im. Dużym wyzwaniem jest zwykle pełna dostępność takiego środowiska testowego, gdyż aby skutecznie przeprowadzać testy End to End, to musimy posiadać takie środowisko na wyłączność, aby nie było sytuacji, że np. w tym samym czasie nasze testy skrzyżują się z innymi typami testów i w ten sposób nasze wyniki mogą zostać obarczone błędami.

Dlaczego konieczne są testy End to End?

Każda aplikacja komunikuje się z wieloma systemami i bazami danych poza własnym środowiskiem. To sprawia, że ​​całościowy przepływ pracy aplikacji jest dość skomplikowany do przetestowania.

Testy End to End określają, czy różne zależności, integracje aplikacji działają poprawnie. Sprawdzają również, czy między wieloma komponentami systemu przesyłane i odbierane są poprawnie informacje.

  • Backend : testy End to End weryfikują warstwy bazy danych i integracji backendowych. Jest to konieczne, ponieważ podstawowe główna logika systemu dzieje się właśnie „pod spodem”
  • System wielowarstwowy : jeśli aplikacja ma złożoną architekturę, której przepływ pracy działa na wielu warstwach, testy E2E są niezbędne do weryfikacji ogólnych funkcji, a także interakcji między poszczególnymi warstwami w architekturze.
  • Środowisko rozproszone : jeśli aplikacja jest oparta na architekturze SOA (architektura zorientowana na usługi) lub środowiskach chmurowych, konieczne jest testowanie End to End. Jest również niezbędny w przypadku aplikacji składających się z wielu komponentów, które muszą działać w tandemie, aby zapewnić pomyślne działanie.
  • Spójne doświadczenie użytkownika : ponieważ testowanie E2E obejmuje frontend, zapewnia również, że aplikacja zapewnia wrażenia użytkownika działające na wielu urządzeniach, platformach i środowiskach. Na przykład testy zgodności przeglądarek jest ważną częścią testowania E2E w tym zakresie.

Przykłady testów E2E

Okay, skoro już tyle wiemy o testach End to End to teraz zobaczymy jakiś przykład tego rodzaju testu! W tym celu poniżej załączam przykładowy scenariusz testowy dla mojej platformy testowej www.selenium-shop.pl. Scenariusz testowy będzie dotyczył funkcjonalności – zamawiania produktu.

Nr. KrokuOpis KrokuOczekiwany efektWarunki wstępne
0Otwórz w przeglądarce Chrome stronę : www.selenium-shop.pl Otworzona strona główna: www.selenium-shop.pl Przeglądarka Chrome.
1.Kliknij w produkt o nazwie: KOSZULKA WEST HAM UNITED a następnie zweryfikuj adres strony, na którą zostałeś przeniesiony. Zrób screen po przeniesieniu się na stronę szczegółów wybranego produktu i zapisz go w katalogu src/main/resourcesZnajdujesz się na stronie Szczegółów Produktu, tytuł strony: Koszulka West Ham United – Selenium Shop Automatyzacja Testów 
2.Zweryfikuj nazwę produktuNazwa produktu: KOSZULKA WEST HAM UNITED 
3.Zweryfikuj cenę produktuCena produktu: 90,00 ZŁ 
4.Zweryfikuj ilość sztuk produktuIlość sztuk produktu:  1 
5.Kliknij przycisk DODAJ DO KOSZYKA oraz zweryfikuj, czy wyświetlony komunikat zawiera następującą treść: “Koszulka West Ham United” został dodany do koszyka.  Wyświetlony komunikat zawiera następującą treść: “Koszulka West Ham United” został dodany do koszyka. 
 
6.Zweryfikuj czy domyślnie została zaznaczona pozycja: Darmowa wysyłkaOpcja Darmowa wysyłka jest domyślnie zaznaczona 
7.Kliknij przycisk: PRZEJDŹ DO KASY oraz zweryfikuj tytuł strony, na którą zostałeś przeniesiony. Znajdujesz się na ekranie podsumowania zamówienia. Tytuł strony: Zamówienie – Selenium Shop Automatyzacja Testów 
8.Zweryfikuj nazwę produktuNazwa produktu: Koszulka West Ham United 
9.Zweryfikuj cenę produktuCena produktu: 90,00 ZŁ 
10.Zweryfikuj czy domyślnie została zaznaczona pozycja: Darmowa wysyłkaOpcja Darmowa wysyłka jest domyślnie zaznaczona 
11.Zweryfikuj kwotę całkowitą produktu zamówienia (pole Suma)Kwota całkowita zamówienia: 90,00 zł 

Autor: Tomasz Stelmach

Pozostałe:

Typy testów

Testowanie oprogramowania to bardzo rozległy obszar branży IT. Testować aplikacje możemy na wiele sposobów, a same testy mogą mieć różne cele. I to właśnie wspomniane cele testowania, definiują typy testów, jakimi możemy poddać oprogramowanie. Jeśli celem testów jest...

Agile i SCRUM, czyli co?

Agile to ostatnimi czasy bardzo popularny termin. Jest odmieniamy przez wszystkie przypadki. Obecnie zdecydowana większość zespołów developerskich korzysta z Agile w swojej codziennej pracy. O „Agile” i „Zwinnym” podejściu do prowadzenia projektów słyszeli już chyba...

Raport z testów – must have!

Dzisiaj napiszę kilka słów o niezbędnym elemencie w każdym procesie testowym - mowa oczywiście o tytułowym – Raporcie z Testów. Na początek, krótka regułka określająca, czym tak naprawdę jest Raport z Testów: O jakich czynnościach testowych traktuje powyższa...

Testy wydajnościowe

W tym materiale chciałbym przybliżyć Wam tematykę testów wydajnościowych. Testy wydajnościowe te są dość specyficznym, ale jednocześnie popularnym i bardzo ważnym rodzajem testów w przekroju całego procesu testowego niemal każdego oprogramowania. Testowanie wydajności...

Jak napisać Plan Testów?

Jeśli jesteś testerem oprogramowania, bądź pracujesz w działach zapewniania jakości oprogramowania, to być może zetknąłeś się już z dokumentem o opisowej nazwie „Plan Testów”. Tego typu dokumentację tworzy się zarówno w dużych, jak i małych firmach, formalnych, jak...