gRPC to stworzona przez Google platforma do zdalnego wywoływania procedur, znana również jako RPC.
Istnieje ciekawostka wyjaśniająca genezę tej nazwy. Zdalne wywoływanie procedur umożliwia uruchomienie funkcji lub metody na odległym komputerze, tak jakby była dostępna lokalnie. To uproszczenie eliminuje zawiłości związane z protokołem HTTP i innymi aspektami sieciowymi.
gRPC znacząco usprawnia i przyspiesza komunikację oraz wymianę danych między mikrousługami. Wykorzystuje protokół HTTP/2 w tle, ale ułatwia programistom konfigurację i obsługę tych połączeń.
Mikrousługi często wykorzystują różne języki programowania, co stwarza potrzebę stworzenia mechanizmu umożliwiającego im efektywną komunikację.
gRPC rozwiązuje ten problem, obsługując wiele języków. Jako język definicji interfejsu wykorzystuje bufory protokołów, umożliwiające określenie struktury przesyłanych danych.
Testowanie aplikacji gRPC
Testowanie jest kluczowe dla każdej złożonej aplikacji, nie tylko gRPC. Poprzez testy aplikacji gRPC upewniamy się, że mikrousługi i inne serwisy komunikują się ze sobą w sposób niezawodny i efektywny.
Zapewnia to bezproblemową komunikację pomiędzy usługami, nawet jeśli zostały napisane w różnych językach programowania. Jest to możliwe dzięki wykorzystaniu buforów protokołów, które są niezależne od konkretnego języka.
Testowanie aplikacji gRPC pozwala również na precyzyjne zdefiniowanie obsługi błędów i wyjątków. Dodatkowo, testy wydajności pozwalają ocenić zachowanie usług pod różnym obciążeniem sieciowym.
Skoro już wiesz, czym jest gRPC, przyjrzyjmy się narzędziom służącym do jego testowania.
Kreja
Kreja to klient API z graficznym interfejsem, przeznaczony do pracy z gRPC oraz API REST. Jego klient gRPC umożliwia obsługę strumieniowania żądań, wywołań jednokrotnych, walidację danych i inne funkcje. Dodatkowo, Kreja pozwala na generowanie fałszywych danych do testowania API.
Konfiguracja i żądania są zapisywane w systemie plików, co umożliwia wykorzystanie systemów kontroli wersji, takich jak Git, do synchronizacji projektów. Kreja pozwala także na definiowanie testów za pomocą skryptów, dzięki czemu można testować API przy każdym uruchomieniu.
Kreja udostępnia bezpłatną wersję dla użytkowników indywidualnych, oferującą klienta gRPC z pełną funkcjonalnością, konfiguracje uwierzytelniania, środowiska, szablony i wiele innych.
ghz
ghz to narzędzie wiersza poleceń typu open-source, napisane w języku Go, służące do testowania wydajności i obciążenia gRPC. ghz wykorzystuje pliki proto, gotowe zestawy proto lub odbicie serwera do testowania API i zbierania wyników. Umożliwia także dodawanie własnych danych do żądań za pomocą zmiennych szablonowych w Go.
Oprócz narzędzia wiersza poleceń, ghz udostępnia również interfejs webowy do przeglądania, analizowania i zapisywania wyników testów. Wyniki testów można eksportować do różnych formatów, takich jak CSV, JSON i HTML. W momencie pisania tego tekstu interfejs internetowy jest w fazie beta.
Listonosz
Listonosz to platforma programistyczna API, która wspiera tworzenie i testowanie różnych typów API, w tym gRPC. Listonosz umożliwia pisanie testów dla pojedynczych żądań, kolekcji lub folderów w obrębie kolekcji.
Podczas tworzenia żądania gRPC w Listonoszu, przejdź do zakładki „Skrypty” i wybierz, kiedy chcesz uruchomić testy – przed wysłaniem żądania, czy po otrzymaniu odpowiedzi. Możesz także wykorzystać fragmenty kodu, aby przyspieszyć pisanie testów.
Bezsenność
Bezsenność jest narzędziem do projektowania, testowania i debugowania API. Wspiera REST, GraphQL, WebSockets i gRPC. Podczas tworzenia nowego żądania w Insomnia, można wybrać gRPC i wprowadzić adres URL punktu końcowego API.
Dodatkowo należy dodać plik .proto, który określa strukturę przesyłanych wiadomości. Insomnia wspiera różne typy żądań, od pojedynczych wywołań po dwukierunkowe przesyłanie strumieniowe, w tym strumieniowanie danych przez klienta i serwer.
Aby testować API w Insomnia, należy dodać dokument projektowy API i w zakładce „Testy” utworzyć zestaw testów. Insomnia korzysta z frameworku Mocha do testów jednostkowych i Chai do asercji.
Stackhawk
Stackhawk to narzędzie do testowania bezpieczeństwa API, które oferuje również wsparcie dla usług gRPC. Pozwala na zapewnienie bezpieczeństwa punktów końcowych API. Aby przeskanować aplikację gRPC za pomocą Stackhawk, należy zdefiniować plik stackhawk.yml z odpowiednimi ustawieniami.
Stackhawk oferuje bezpłatną wersję z podstawową funkcjonalnością, w tym automatycznymi testami DAST zintegrowanymi z CI/CD dla pojedynczej aplikacji. Funkcje takie jak uwierzytelnianie, automatyzacja, szczegółowe raporty, powiadomienia i obsługa różnych typów API są dostępne w płatnych planach.
gRPCurl
gRPCurl jest narzędziem wiersza poleceń typu open-source, umożliwiającym połączenia z serwerami gRPC. Jak sama nazwa wskazuje, jest to odpowiednik „curl” dla serwerów gRPC. Standardowe narzędzie cURL nie może być używane do przesyłania żądań do serwerów gRPC, ponieważ nie obsługuje buforów protokołów, które są wiadomościami binarnymi. cURL potrafi przetwarzać tylko dane JSON.
Możesz zweryfikować schemat usług gRPC, wysyłając zapytanie do serwera obsługującego odbicie serwera, analizując pliki źródłowe proto lub ładując skompilowane pliki „protoset” (pliki zawierające zakodowane opisy plików).
gRPCurl nie jest pełnoprawnym narzędziem testowym, ale mimo to pozwala na wykonywanie podstawowych zapytań i testów za pomocą wiersza poleceń.
Gotowe API Smartbeara
Gotowe API firmy Smartbear obsługuje testowanie API gRPC, ale ogranicza się tylko do operacji jednokrotnych. Aby przetestować usługę gRPC, trzeba najpierw skonfigurować Krok połączenia API. Następnie można przesyłać żądania i odbierać odpowiedzi z usługi gRPC.
ReadyAPI obecnie wspiera jedynie operacje jednokrotne, czyli oczekuje tylko jednej odpowiedzi z serwera.
NosyMouse
Nosymouse to narzędzie, które zawiera tester gRPC umożliwiający ręczne lub automatyczne uruchamianie testów funkcjonalnych, wydajnościowych i bezpieczeństwa. Oferuje funkcje takie jak wirtualni użytkownicy, skalowanie wydajności, kryteria zaliczenia, czasy przemyśleń, dane testowe, obsługa scenariuszy testowych i wiele ważonych przypadków użycia.
Jest zgodny z podejściem testowania opartym na danych, oferując wsparcie dla oddzielnych danych testowych, zmiennych, automatycznych weryfikacji i rzeczywistych przypadków użycia. Możesz uruchamiać testy z różnymi danymi wejściowymi i weryfikować dane wyjściowe w interfejsie.
Dostępny jest 14-dniowy darmowy okres próbny, pozwalający na testowanie z dwoma jednoczesnymi użytkownikami usługi.
Podsumowanie
Wraz z rozwijającymi się usługami i narzędziami gRPC, wybór odpowiedniego narzędzia do testowania może być trudny. Prawidłowy wybór narzędzia jest kluczowy, ponieważ bezpośrednio wpływa na funkcjonalność API. Ważnym aspektem jest obsługa różnych funkcji gRPC, takich jak odbicie serwera, przesyłanie strumieniowe itp. Wybierając narzędzie do testów, należy zwrócić szczególną uwagę na jego funkcjonalności specyficzne dla gRPC.
Następnie, warto również przyjrzeć się platformom do testowania obciążenia API, które pomogą w poprawie wydajności.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.