Archifutura / Aeneia

Integracje systemów

Środowisko testowe integracji: jak sprawdzać proces bez zmian w danych klientów

Sprawdź, jak testować integrację na danych zastępczych, symulować błędy i ocenić różnice między środowiskiem testowym a produkcją.

Tworzyliśmy rozwiązania dla

  • L'Oréal
  • Garnier
  • Netflix
  • Carrefour
  • Warner Bros. Discovery
  • Biedronka
  • HBO Max
  • Wolt
  • Żabka
  • COSRX
  • Mixa
  • Ambasada Chin w Polsce

Doświadczenie Aeneia, firmy stojącej za Archifutura.

Test, który nie składa zamówienia klientowi

Połączenie aplikacji z systemem sprzedaży warto sprawdzić, zanim pierwszy prawdziwy klient kliknie przycisk. Środowisko testowe integracji daje zespołowi miejsce do przećwiczenia wymiany danych, błędów i ponowień. Warunek brzmi: trzeba wiedzieć, które elementy są rzeczywiście odseparowane. Sam napis „test” na ekranie nie powstrzyma wiadomości wysłanej na prawdziwy adres ani zmiany wykonanej prawdziwym kluczem.

Zacznij od prześledzenia całej drogi: aplikacja wysyła żądanie, druga usługa je przyjmuje, wraca odpowiedź, a użytkownik widzi wynik. Po drodze może pojawić się poczta, magazyn, płatności lub zewnętrzny system powiadomień. Każdy z tych elementów trzeba oznaczyć jako testowy, symulowany albo rzeczywisty. Nie wszystkie usługi oferują identyczne możliwości testowania.

W fikcyjnym przykładzie zespół sprawdza portal zamówień dla hurtowni. Test nie powinien wysłać towaru do klienta ani powiadomić magazynu o realnym zamówieniu. Powinien natomiast pokazać, czy zamówienie trafia do właściwej kolejki, czy brak ceny zostanie wykryty i kto zobaczy informację o błędzie.

Przed rozpoczęciem próby wyznacz osobę, która zna drogę danych i może potwierdzić jej granice. Zespół programistów może sprawdzać odpowiedzi techniczne, ale o znaczeniu statusu zamówienia albo poprawności przekazania sprawy powinna wypowiedzieć się także osoba znająca codzienną pracę. Wspólnie wybierzcie jeden scenariusz, którego rezultat da się obejrzeć po obu stronach integracji.

Narysuj granicę środowiska

Zapisz adresy usług, konta, klucze oraz miejsca przechowywania danych używane w teście. Nie umieszczaj samych kluczy w takim spisie. Ważne jest wskazanie, gdzie są bezpiecznie przechowywane, kto może ich używać i jak odróżnić je od danych dostępowych produkcji. Przy każdej strzałce między systemami dopisz, czy prowadzi do rzeczywistej usługi czy jej testowego odpowiednika.

Osobno sprawdź efekty uboczne. Poza zapisem w bazie system może wysłać e-mail, utworzyć zgłoszenie w narzędziu obsługi albo wywołać webhook, czyli automatyczną wiadomość o zdarzeniu. W artykule o API i webhookach opisujemy, dlaczego samo dostarczenie wiadomości nie oznacza jeszcze wykonania całego zadania.

Sprawdź również zadania uruchamiane według harmonogramu. Środowisko może wyglądać na bezpieczne podczas ręcznego testu, a następnie w nocy wysłać zbiorcze powiadomienie. Ustal, czy takie zadania są wyłączone, kierowane do osobnych odbiorców czy uruchamiane wyłącznie na żądanie. Decyzja powinna być widoczna dla całego zespołu, a nie zapisana w pamięci jednej osoby.

Rozdziel również dostęp ludzi od dostępu aplikacji. Pracownik może mieć konto w panelu testowym, a aplikacja osobny klucz pozwalający na określone operacje. Każde uprawnienie powinno odpowiadać faktycznej potrzebie. Jeżeli osoba prowadząca test nie musi zmieniać konfiguracji płatności, nie ma powodu zakładać, że powinna mieć taką możliwość. Po zakończeniu współpracy sprawdź, które dostępy nadal są potrzebne.

W opisie środowiska uwzględnij również sposób odróżnienia wersji uruchomionej aplikacji. Widoczna nazwa środowiska i ograniczenie dostępu zmniejszają ryzyko pomyłki, ale nie zastępują sprawdzenia konfiguracji połączeń. Przed testem operacji wywołującej skutki poza aplikacją upewnij się, że wskazany adres i klucz należą do właściwego konta.

Dane zastępcze muszą przypominać problem

Dane testowe nie muszą zawierać prawdziwych nazwisk, aby sprawdzić przebieg procesu. Przygotuj fikcyjnych klientów, produkty i zamówienia oraz oznacz je tak, by nie pomylić ich z rzeczywistymi. Uwzględnij brak wymaganej wartości, długą nazwę, duplikat identyfikatora oraz sytuację, w której system źródłowy zwraca inny format niż oczekiwany. Dobór przypadków zależy od integracji.

Samo zastąpienie nazwiska fikcyjnym ciągiem nie zawsze usuwa możliwość rozpoznania osoby z pozostałych pól. Dlatego przed użyciem kopii rzeczywistych danych potrzebna jest ocena ich zakresu i sposobu ochrony przez osoby odpowiedzialne w firmie. Jeśli da się sprawdzić scenariusz na danych syntetycznych, zacznij od nich. Ustal również, kto może przeglądać dane testowe i jak długo są potrzebne.

Przygotuj opis punktu startowego: jakie rekordy istnieją, jakie mają identyfikatory i jak przywrócić środowisko przed kolejną próbą. Dzięki temu wynik nie zależy od zmian pozostawionych przez poprzedni test. Warto sprawdzić także, czy osoby testujące równolegle nie nadpisują tych samych rekordów.

Jeżeli do projektu trzeba później przenieść istniejące informacje, nie utożsamiaj danych testowych z próbą rzeczywistej migracji. Warto osobno ocenić jakość zbiorów oraz zasady ich uzgadniania. O przygotowaniu informacji do projektów AI piszemy w artykule o porządkowaniu danych przed wdrożeniem AI.

Zestaw przypadków powinien obejmować nie tylko poprawne rekordy. Przygotuj na przykład sprawę bez przypisanej osoby, pozycję bez dostępnej ceny i dwa wpisy odnoszące się do tego samego identyfikatora. Dla każdego przykładu zapisz oczekiwane zachowanie: czy proces zostaje zatrzymany, czy sprawa trafia do wyjaśnienia, czy użytkownik może uzupełnić brakującą wartość. Dane zastępcze mają wtedy odpowiadać na pytania o proces, a nie jedynie wypełniać tabelę.

Uważaj na przykładowe adresy e-mail i numery telefonu. Ustal bezpieczny sposób przechwytywania wiadomości testowych, zamiast zakładać, że dowolny wymyślony adres nie ma właściciela. W scenariuszu powiadomienia ważne jest również sprawdzenie treści oraz momentu wysłania. Jeśli wiadomość ma trafić do klienta dopiero po zatwierdzeniu, przedwczesne uruchomienie jest błędem procesu nawet wtedy, gdy sama usługa pocztowa działa prawidłowo.

Co symuluje dostawca

Niektóre usługi udostępniają sandbox, czyli odseparowane środowisko do prób. Przykładowo dokumentacja Stripe opisuje możliwość symulowania płatności bez rzeczywistego przepływu pieniędzy. Ten przykład dotyczy Stripe i nie przesądza, jakie funkcje testowe ma inny dostawca. Przed próbą sprawdź aktualną dokumentację usługi, konfigurację konta i dostępność potrzebnego scenariusza.

Dokumentacja Stripe rozróżnia ogólne sandboksy oraz środowisko test mode, które może współdzielić część ustawień z trybem rzeczywistym. To dobry powód, by sprawdzać szczegóły, a nie zakładać pełną izolację na podstawie samej nazwy. Dla nowej integracji Stripe zaleca ogólne sandboksy, z wyjątkami opisanymi w dokumentacji.

Gdy dostawca nie udostępnia potrzebnego testu, można przygotować kontrolowaną symulację odpowiedzi, często nazywaną atrapą usługi. Zapisz wtedy, co dokładnie zostało zasymulowane i na podstawie jakiej dokumentacji. Atrapa sprawdza zachowanie aplikacji wobec przyjętych odpowiedzi, lecz nie dowodzi, że prawdziwy system zachowa się identycznie.

Dobrze zachować przykłady odpowiedzi dostawcy i sposób ich aktualizowania. Jeżeli interfejs ulegnie zmianie, stara atrapa może nadal zwracać poprawny według niej wynik, podczas gdy rzeczywista integracja przestanie działać. Ktoś powinien odpowiadać za porównywanie założeń testowych z dokumentacją oraz możliwościami konkretnego konta.

Przed wyborem symulacji zapytaj, które zdarzenia można wywołać ręcznie, jakie dane zwraca dostawca i czy test obejmuje opóźnienia albo ponowne dostarczenie powiadomień. Niektóre sytuacje trzeba będzie odwzorować po stronie aplikacji. Zaplanuj, jak oznaczyć takie próby w raporcie, żeby odbiorca wiedział, czy sprawdzono prawdziwe połączenie testowe, czy tylko zachowanie wobec przygotowanej odpowiedzi.

Przećwicz błąd, nie tylko sukces

Zacznij od poprawnego przebiegu: wyślij testowe żądanie, sprawdź zapis, odpowiedź i widok użytkownika. Potem wprowadź brak wymaganej wartości, odrzucenie dostępu, opóźnienie odpowiedzi i niedostępność usługi. Zapisz oczekiwany wynik przed wykonaniem testu. Czy system pokazuje błąd, zachowuje sprawę do ponowienia i wskazuje osobę odpowiedzialną za reakcję?

Sprawdź też sytuację, w której odpowiedź nie dotarła, ale druga strona zdążyła wykonać operację. Ponowienie może utworzyć duplikat, jeśli integracja nie ma uzgodnionego sposobu rozpoznawania tej samej operacji. Warto omówić ten scenariusz z dostawcą i sprawdzić, jakie mechanizmy rzeczywiście udostępnia.

Przetestuj przekazanie błędu do obsługi. Czy pracownik widzi, której sprawy dotyczy problem, i wie, co może zrobić? Czy w dzienniku zdarzeń znajdują się informacje potrzebne do diagnozy bez zapisywania sekretów? Więcej o odpowiedzialności za dalszą reakcję znajdziesz w tekście o monitorowaniu automatyzacji.

Jeśli integracja synchronizuje dane w obie strony, przygotuj konflikt: ta sama informacja została zmieniona niezależnie w dwóch miejscach. Test powinien sprawdzić uzgodnioną regułę rozstrzygania lub przekazania sprawy człowiekowi. Wcześniej trzeba ustalić, które źródło odpowiada za dane pole. Pomaga w tym artykuł o źródle danych w integracji.

Sprawdź kolejność zdarzeń. Potwierdzenie może dotrzeć później niż kolejne powiadomienie, a komunikat o tej samej operacji może zostać dostarczony ponownie. Nie zakładaj, że każdy dostawca zapewnia identyczną kolejność albo sposób ponowienia. Oczekiwania trzeba oprzeć na jego dokumentacji, a następnie sprawdzić, jak aplikacja zachowuje się w przewidzianych przez projekt sytuacjach.

Oddziel błędy danych od problemów z połączeniem. Brak obowiązkowego pola wymaga zwykle uzupełnienia informacji, natomiast chwilowa niedostępność może wymagać późniejszej próby. Jeśli oba przypadki kończą się identycznym komunikatem „coś poszło nie tak”, pracownik nie wie, czy poprawić zgłoszenie, czy czekać. Dobrze zaprojektowany test pyta więc o następne działanie człowieka, a nie wyłącznie o kod odpowiedzi. Przy sprawdzaniu ponowień pomocny będzie artykuł o idempotencji API i unikaniu duplikatów.

Różnice przed uruchomieniem

Pozytywny wynik w środowisku testowym oznacza, że sprawdzony scenariusz zadziałał w określonych warunkach. Nie potwierdza automatycznie wszystkich uprawnień, wydajności, danych historycznych ani zachowania prawdziwej usługi. Spisz te różnice oraz sposób ich sprawdzenia przed uruchomieniem. W niektórych przypadkach potrzebna będzie kontrolowana próba z udziałem dostawcy i osób odpowiedzialnych za proces. Osobno warto przygotować test zgodności odpowiedzi po zmianie API i zapisać zakres każdej próby.

Przygotuj listę konfiguracji do potwierdzenia: właściwe adresy, oddzielne klucze, odbiorcy powiadomień, dostępne role, limity oraz sposób wycofania zmiany. Nie kopiuj bez zastanowienia całej konfiguracji testowej do produkcji. O sprawdzeniu gotowego rozwiązania piszemy też w artykule o odbiorze aplikacji.

Wyniki przekaż w formie zrozumiałej osobie decyzyjnej. Dla każdego scenariusza zapisz dane wejściowe, oczekiwany rezultat, wynik, datę, osobę sprawdzającą i ewentualne ograniczenia. Nie oznaczaj scenariusza jako zaliczonego tylko dlatego, że nie wyświetlił się błąd. Sprawdź również, czy po drugiej stronie pojawiła się właściwa zmiana.

Jeżeli planujesz wymianę danych między systemami, zobacz zakres integracji systemów i napisz do Archifutura. W krótkim briefie opisz systemy, rodzaj wymienianych informacji, znane ograniczenia i sytuację, którą chcesz bezpiecznie przetestować. Razem łatwiej ustalić, które elementy trzeba sprawdzić przed podłączeniem rzeczywistego procesu.

Po poprawce powtórz scenariusz, który wykrył problem, oraz sprawdź, czy zmiana nie uszkodziła powiązanej ścieżki. Na przykład korekta obsługi odmowy płatności nie powinna przypadkiem oznaczać opłaconego zamówienia jako odrzuconego. Zakres ponownej kontroli zależy od zmiany. Zapisz wersję aplikacji oraz konfigurację, żeby wynik można było odnieść do konkretnego testu.

Po zakończeniu prób ustal termin przeglądu danych, kont i kluczy testowych. Usuń to, czego zespół już nie potrzebuje, zgodnie z przyjętymi zasadami. Pozostaw opis scenariuszy oraz wyniki bez kopiowania sekretów do notatek. Dzięki temu kolejna zmiana zaczyna się od uporządkowanego punktu wyjścia.

Źródła i dokumentacja

Materiały sprawdzone przy opracowaniu tekstu. Przy wyborze usługi lub technologii potwierdzamy warunki dla konkretnego projektu.

Kiedy potrzebujesz spojrzeć szerzej

Projekt nie kończy się na kodzie.

Twój proces, Twój zakres

Sprawdźmy, co ma powstać w Twojej firmie.

Nie potrzebujesz gotowej specyfikacji. Opisz zadanie, obecne narzędzia i to, co dziś wymaga ręcznej pracy.

Opisz swój projekt

Narzędzia i integracje, z których korzystamy

  • Google
  • OpenAI
  • Microsoft
  • Stripe
  • Anthropic
  • Linear

Dobór technologii i dostępnych połączeń ustalamy dla konkretnego projektu.