Testing

Charles – pomocne narzędzie w testowaniu REST API

Październik 19, 2020 0
Podziel się:

Charles jest ciekawym narzędziem, które może okazać się pomocne w pracy testera.

Dostępne do pobrania pod adresem: https://www.charlesproxy.com/

Czym jest Charles?

Charles - Charles - pomocne narzędzie w testowaniu REST APICharles Web Debugging Proxy to wieloplatformowa aplikacja serwera proxy do debugowania HTTP napisana w Javie. Umożliwia użytkownikowi przeglądanie HTTP, HTTPS, HTTP / 2 i włącza ruch portów TCP dostępny z, do, lub przez komputer lokalny (Wikipedia – przetłumaczone z języka angielskiego).

Jest to narzędzie płatne. Przez 30 dni można skorzystać z wersji próbnej. Bezpłatną alternatywą jest Fiddler – niestety jest on mniej przyjazny jeżeli chodzi o interfejs i skonfigurowanie. W projekcie, w którym pracowałem Fiddler nie chciał współpracować, natomiast wdrożenie Charlesa okazało się szybkie i bezproblemowe.

Projekt, w którym jestem testerem dotyczy aplikacji medycznej dla pacjentów (umawianie spotkań, przeglądanie wyników badań), która poprzez REST API łączy się z wielkim systemem do obsługi placówek medycznych (aplikacja desktopowa).

REST API

W przypadku testowania REST API w projekcie używany jest Postman. Jednak w trakcie trwania, do stacka technologicznego doszedł również Charles i narzędzie to zrobiło na mnie duże wrażenie.

Deweloper dodał do naszej aplikacji mobilnej przekierowanie proxy, które umożliwiło aplikacji Charles na Windows 10 wyświetlanie requestów z aplikacji mobilnej (wielkie dzięki dla Tomka Marzeion 😉)

Settings 1024x556 - Charles - pomocne narzędzie w testowaniu REST API

Charles umożliwia podgląd endpointów, a także wysyłanych requstów i otrzymywanych odpowiedzi na żywo w trakcie korzystania z aplikacji:

wyniki 1024x281 - Charles - pomocne narzędzie w testowaniu REST API

Charles pozwala także przeglądać dane strukturalnie:

2020 07 30 11 15 30 Charles 4.5.6 Session 1   1024x556 - Charles - pomocne narzędzie w testowaniu REST API

Podgląd odbieranych i wysyłanych danych jest bardzo przejrzysty i wygodny. Przechwycone endpointy można za pomocą kopiuj/wklej dodać do Postmana. Moim zdaniem w tym aspekcie Charles przydaje się bardziej niż Postman i w sposób przejrzysty widać jakie zapytania są odbierane i wysyłane.

Przechwytując request można ustawić “Breakpoint”, który w momencie kiedy aplikacja natrafi na dany request, pozwoli go modyfikować i przejrzeć jego zawartość. 

Punkt wstrzymania lub pułapka (ang. breakpoint) – miejsce celowego wstrzymania wykonania programu w celu przeanalizowania jego działania. Uruchomiony pod kontrolą debuggera program przerywa wykonanie we wskazanym punkcie i przekazuje sterowanie do debugera, który zazwyczaj wyświetla kod źródłowy w miejscu wywołania wskazanej instrukcji. Po wstrzymaniu możliwe jest m.in. śledzenie aktualnych wartości zmiennych oraz zawartości rejestrów procesora. Zintegrowane środowiska programistyczne pozwalają na ustawienie takich punktów bezpośrednio w edytorze kodu oraz definiowanie warunków, jakie musi spełniać stan wykonania programu, aby pułapka spowodowała przerwanie wykonania programu (Wikipedia)

Oczywiście ustawione “Brakpointy” w ustawieniach (Proxy -> Breakpoint Settings) można modyfikować na przykład poprzez ustawienia tzw. “wild card”.

B Settings - Charles - pomocne narzędzie w testowaniu REST API

Dla przykładu niżej widać request, który odwołuje się do pojedynczego konkretnego spotkania.DD 1024x344 - Charles - pomocne narzędzie w testowaniu REST API

Jeżeli użytkownik kliknie w to spotkanie, takie zapytanie zostanie wysłane i zwrócone zostaną szczególy spotkania. Inne spotkania będą już miały inny numer, więc w tym miejscu możemy zastosować “wild card” i użyć * podobny znak używamy w SQL gdy chcemy przejrzeć wszystkie wyniki np. select * from nazwa_tabeli. Po zmodyfikowaniu “Breakpointu” będzie działać na każdym innym spotkaniu:

2020 10 23 17 09 25 Clipboard - Charles - pomocne narzędzie w testowaniu REST API

Charles jest również przydatny w sprawdzeniu odpowiedzi, jakie otrzymujemy. Możemy łatwo przejrzeć JSON, a także ilość obiektów i ich właściwości.

JSON 1024x556 - Charles - pomocne narzędzie w testowaniu REST API

 

Object 1024x556 - Charles - pomocne narzędzie w testowaniu REST API

W moim projekcie Charles ma duże zastosowanie jeżeli chodzi o modyfikowanie kodu odpowiedzi. Na przykład, w przypadku jak aplikacja zachowa się w momencie kiedy zmodyfikujemy status odpowiedzi z kodu 200(OK) na kod 500 (Internal Server Error).

2020 07 30 11 34 42 Settings 1024x497 - Charles - pomocne narzędzie w testowaniu REST API

Network throttling

W Charles możemy także skorzystać z opcji pozwalającej nam ustawić parametry połączenia internetowego. (Throttle Settings -> Enable Throttling)

2020 07 31 10 39 42 Window 1024x554 - Charles - pomocne narzędzie w testowaniu REST API

Należy pamiętać, że gdy mamy włączoną funkcje zwolnieniu ulegnie przepustowość także, gdy będziemy korzystać z przeglądarki internetowej na komputerze, więc jest to dobre narzędzie do testowania aplikacji webowej i sprawdzenia jak będzie działać aplikacja w warunkach słabszego połączenia internetowego.

Net 1024x564 - Charles - pomocne narzędzie w testowaniu REST API

Ikona “żółwia” pozwala nam kontrolować tę funkcję (włączenie / wyłączenie):

ikonki - Charles - pomocne narzędzie w testowaniu REST API

Narzędzie to posiada także wiele innych opcji np. tworzenie mock response. Podsumowując, Charles może być w pracy testera ciekawą alternatywą dla Postmana i w niektórych aspektach być bardzo pomocny (breakpointy, modyfikowanie requestów, podgląd w czasie rzeczywistym zapytań i odpowiedzi). W projekcie, w którym mam przyjemność pracować, korzystanie z tego narzędzia jest wygodne i znacznie ułatwia pracę testerom.

Zachęcam do wypróbowania i poznania Charles 🙂

5 / 5
Kategorie: Testing
Łukasz Krause
Autor: Łukasz Krause
Pracuje w Sii jako Inżynier ds. testów i analiz. Od dziecka interesuję się komputerami i nowinkami technologicznymi dlatego prowadzę amatorskiego bloga www.and-it.pl gdzie umieszczam wpisy związane z komputerami i nauką języków obcych z wykorzystaniem komputera i smartphone-ów. Lubię testować nowe urządzenia i aplikacje dlatego zdecydowałem się na studia podyplomowe z zakresu testowania i stąd chęć zostania Testerem. Staram się opanować tajniki automatyzacji a także schudnąć więc szybciej uda mi się zrealizować chyba pierwszy punkt ;) Prywatnie ojciec psa i kota lubiący niskobudżetowe podróże ;)

Imię i nazwisko (wymagane)

Adres email (wymagane)

Temat

Treść wiadomości

Zostaw komentarz