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 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 ?)
Charles umożliwia podgląd endpointów, a także wysyłanych requstów i otrzymywanych odpowiedzi na żywo w trakcie korzystania z aplikacji:
Charles pozwala także przeglądać dane strukturalnie:
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”.
Dla przykładu niżej widać request, który odwołuje się do pojedynczego konkretnego spotkania.
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:
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.
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).
Network throttling
W Charles możemy także skorzystać z opcji pozwalającej nam ustawić parametry połączenia internetowego. (Throttle Settings -> Enable Throttling)
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.
Ikona “żółwia” pozwala nam kontrolować tę funkcję (włączenie / wyłączenie):
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 🙂
Chcesz lepiej zrozumieć aplikacje i systemy, które testujesz? Dołącz do ModernTester, poznaj najpotrzebniejsze narzędzia, frameworki oraz języki programowania i ćwicz na specjalnie przygotowanych środowiskach testowych: Platforma e-learningowa ModernTester
Zostaw komentarz