Testy e2e dla aplikacji uderzających do zewnętrznych serwisów ?

0

Cześć. Co i w jaki sposób testujecie end-to-end, jeśli macie aplikację, która ściąga dane z jakiś zewnętrznych API ? W moim konkretnym przypadku mam po prostu pobranie danych z jakiegoś api na podstawie 2 paramsów, przemapowanie modelu na swój i cachowanie tego. Na czas testów e2e chyba nie będę uderzał do realnego serwisu ? Co tam w ogóle testówać ? Cache tylko ?

0

A co chcesz przetestować? Samo to czy zapytanie poszło, czy tylko obrabianie danych po Twojej stronie?

0

Mam napisać testy e2e do takiego case'a. To inaczej .. co powinienem przetestować ? Jeśli pisalbym to priv to nie testowałbym chyba nic poza tym czy cache zadziałał. No bo testowanie mappera mija się z celem imo.

0

Zdefiniuj co rozumiesz przez end-to-end.

Ja napiszę jak ja rozumiem E2E.

Masz proces biznesowy (ciąg czynności, których wykonanie skutkuje realizacją potrzeby biznesowej użytkownika i dostarczenia temuż użytkownikowi wartości), który składa się z różnych aktywności. Niektóre z nich mogą być realizowane przez interfejs białkowy (np. ludzik w call-center wypełnia formatkę w programie), inne automatyczne (program wywołuje inny program), bądź pół-automatycznie (np. admin uruchamia skrypt codziennie o 6:07).

Realizacja procesu biznesowego może być wspierana przez różne programy, nie tylko ten Twój. Ten Twój udostępnia przypadki użycia, które są wywoływane w ramach większej całości (procesu biznesowego).

Jak chcesz mieć E2E, to testujesz czy wybrany proces działa. Przetestowanie samego przypadku użycia w Twoim pudełku (testy funkcjonalne) nie zawsze wystarczy do zapewnienia działania E2E.

0

Ja też to rozumiem jako testowanie procesu biznesowego. W kontekście aplikacji restowej jest to dla mnie napisanie testów akceptacyjnych - czyli czy jakaś usługa wykonuje swoje zadanie (zarabia hajs:D ) - bez corner case'ów. Tylko, że jeśli ta usługa to przelotka + mapowanie na innych dto + cache to zastanawia mnie co tutaj mogę wytestować poza cachem - czy mapper dobrze działa ? Czy dostaję 200 lub 404 ?

Zastanawiam się również czy jakoś zafejkować tego clienta api czy wziąć jsona z przykładowej odpowiedzi i wklieć do jakiegoś pliku i z tego czytać czy odpytywać realny zewnętrzny serwis.

0

Jak będziesz operował stwierdzeniami typu "Aplikacja zwraca JSONa", to będzie głupie z perspektywy testowania procesu, bo biznes nie gada JSONami, tylko konkretami "aplikacja zwraca notowania spółki X za ostanie N dni w rozdzielczości 5 minut".

Jak dla mnie E2E wykonywane na rzeczywistych danych (bądź przygotowanych via wykonanie innego procesu) są wyznacznikiem tego czy proces biznesowy zakończył się poprawnie, a nie czy było 404 czy 200 w odpowiedzi z systemu wspierającego realizację procesu biznesowego.

0

No ok, ale na czas testów odpytywać zewnętrzne api czy zafejkować ten serwis i brać response o takim samym formacie z jakiegoś pliku xml ?

1

Fejkujesz:
Plusy:

  • przewidywalnosć odpowiedzi
  • jeśli zewnętrzny serwis niedostępny, to testy nie będą zablokowane

Minusy:

  • jak zmieni się API systemu zewnętrznego, to wykryjesz dopiero na produkcji

Rzeczywiste dane:

  • pokazuje, że faktycznie działa albo się wywala
  • wykrywasz problemy z firewallami
  • wykrywasz problemy z wydajnością

Minusy:

  • zewnętrzny serwis może leżeć i blokować testy

W 'fejkowym' podejściu bierzesz ryzyko na własną klatę. W przypadku upierania się przy rzeczywistych danych, masz możliwość sprzedania 'symulatora zewnętrznego serwisu' (wszak nie jest to czynność zajmująca 0 wysiłku).

1 użytkowników online, w tym zalogowanych: 0, gości: 1