TestMace - potężne IDE do pracy z API

Cześć wszystkim! Dziś chcemy zaprezentować społeczeństwu IT nasz produkt - IDE do pracy z API Testuj Maca. Być może niektórzy z Was już o nas wiedzą poprzednie artykuły. Jednakże nie przeprowadzono kompleksowej recenzji tego narzędzia, dlatego zajmujemy się tym niefortunnym niedociągnięciem.

TestMace - potężne IDE do pracy z API

Motywacja

Chciałbym zacząć od tego, jak właściwie doszliśmy do tego życia i postanowiliśmy stworzyć własne narzędzie do zaawansowanej pracy z API. Zacznijmy od listy funkcjonalności, jakie powinien posiadać produkt, o którym naszym zdaniem można powiedzieć, że jest to „IDE do pracy z API”:

  • Tworzenie i wykonywanie zapytań i skryptów (sekwencji zapytań)
  • Pisanie różnego rodzaju testów
  • Generowanie testów
  • Praca z opisami API, w tym import z formatów takich jak Swagger, OpenAPI, WADL itp.
  • Kpiące prośby
  • Dobra obsługa jednego lub więcej języków do pisania skryptów, w tym integracja z popularnymi bibliotekami
  • itd.

Listę można rozszerzyć według własnego gustu. Co więcej, ważne jest stworzenie nie tylko samego IDE, ale także określonej infrastruktury, takiej jak synchronizacja w chmurze, narzędzia wiersza poleceń, usługa monitorowania online itp. W końcu trendy ostatnich lat narzucają nam nie tylko potężną funkcjonalność aplikacji, ale także jej przyjemny interfejs.

Komu potrzebne takie narzędzie? Oczywiście wszyscy, którzy są przynajmniej w jakiś sposób związani z rozwojem i testowaniem API, są programistami i testerami =). Co więcej, jeśli dla tego pierwszego wystarczy często wykonywanie pojedynczych zapytań i prostych skryptów, to dla testerów jest to jedno z głównych narzędzi, które m.in. powinno zawierać potężny mechanizm pisania testów z możliwością ich uruchomienia w CI.

Kierując się więc tymi wskazówkami, zaczęliśmy tworzyć nasz produkt. Zobaczmy, co osiągnęliśmy na tym etapie.

Szybki start

Zacznijmy od pierwszej znajomości aplikacji. Możesz go pobrać na naszej stronie internetowej. W tej chwili obsługiwane są wszystkie 3 główne platformy - Windows, Linux, MacOS. Pobierz, zainstaluj, uruchom. Przy pierwszym uruchomieniu może pojawić się następujące okno:

TestMace - potężne IDE do pracy z API

Kliknij znak plus u góry obszaru zawartości, aby utworzyć pierwsze żądanie. Karta zapytań wygląda następująco:

TestMace - potężne IDE do pracy z API

Przyjrzyjmy się temu bardziej szczegółowo. Interfejs żądań jest bardzo podobny do interfejsu popularnych klientów restowych, co ułatwia migrację z podobnych narzędzi. Złóżmy pierwsze żądanie do adresu URL https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - potężne IDE do pracy z API

Generalnie na pierwszy rzut oka panel odpowiedzi również nie rzuca się w oczy żadnymi niespodziankami. Chciałbym jednak zwrócić Państwa uwagę na kilka kwestii:

  1. Treść odpowiedzi reprezentowana jest w postaci drzewa, które po pierwsze dodaje treść informacyjną, a po drugie pozwala na dodanie kilku ciekawych funkcji, o których poniżej
  2. Dostępna jest zakładka Asercje, która wyświetla listę testów dla danego żądania

Jak widać nasze narzędzie może pełnić funkcję wygodnego klienta wypoczynku. Nie byłoby nas jednak tutaj, gdyby jego możliwości ograniczały się jedynie do wysyłania żądań. Następnie opiszę podstawowe koncepcje i funkcjonalność TestMace.

Podstawowe pojęcia i funkcje

Węzeł

Funkcjonalność TestMace jest podzielona na różne typy węzłów. W powyższym przykładzie zademonstrowaliśmy działanie węzła RequestStep. Jednak w aplikacji dostępne są teraz także następujące typy węzłów:

  • Krok żądania. To jest węzeł, za pośrednictwem którego możesz utworzyć żądanie. Może mieć tylko jeden węzeł potwierdzenia jako element podrzędny.
  • Twierdzenie. Węzeł służy do pisania testów. Może być tylko węzłem podrzędnym węzła RequestStep.
  • Teczka. Umożliwia grupowanie węzłów Folder i RequestStep w sobie.
  • Projekt. Jest to węzeł główny, tworzony automatycznie podczas tworzenia projektu. W przeciwnym razie powtarza funkcjonalność węzła Folder.
  • Połączyć. Link do węzła Folder lub RequestStep. Umożliwia ponowne wykorzystanie zapytań i skryptów.
  • itd.

Węzły zlokalizowane są w rysunkach (panel w lewym dolnym rogu, służący do szybkiego tworzenia „jednorazowych” zapytań) oraz w projektach (panel w lewym górnym rogu), nad którymi zastanowimy się bardziej szczegółowo.

Projekt

Po uruchomieniu aplikacji możesz zauważyć samotną linię projektu w lewym górnym rogu. To jest korzeń drzewa projektu. Po uruchomieniu projektu tworzony jest projekt tymczasowy, którego ścieżka zależy od systemu operacyjnego. W każdej chwili możesz przenieść projekt w dogodne dla Ciebie miejsce.

Głównym celem projektu jest możliwość zapisywania zmian w systemie plików i ich dalsza synchronizacja poprzez systemy kontroli wersji, uruchamianie skryptów w CI, przeglądanie zmian itp.

Zmienne

Zmienne są jednym z kluczowych mechanizmów aplikacji. Ci z Was, którzy pracują z narzędziami takimi jak TestMace, mogą już mieć pojęcie o czym mówimy. Zatem zmienne są sposobem przechowywania wspólnych danych i komunikacji między węzłami. Analogiem są na przykład zmienne środowiskowe w Postman lub Insomnia. Poszliśmy jednak dalej i rozwinęliśmy temat. W TestMace zmienne można ustawiać na poziomie węzła. Każdy. Istnieje również mechanizm dziedziczenia zmiennych od przodków i nakładania się zmiennych u potomków. Ponadto istnieje wiele zmiennych wbudowanych, od których rozpoczynają się nazwy wbudowanych zmiennych $. Oto niektóre z nich:

  • $prevStep — link do zmiennych poprzedniego węzła
  • $nextStep — łącze do zmiennych następnego węzła
  • $parent - to samo, ale tylko dla przodka
  • $response - odpowiedź z serwera
  • $env - bieżące zmienne środowiskowe
  • $dynamicVar - zmienne dynamiczne tworzone podczas wykonywania skryptu lub zapytania

$env - są to w zasadzie zwykłe zmienne na poziomie węzła projektu, jednak zestaw zmiennych środowiskowych zmienia się w zależności od wybranego środowiska.

Dostęp do zmiennej można uzyskać poprzez ${variable_name}
Wartością zmiennej może być inna zmienna lub nawet całe wyrażenie. Na przykład zmienna url może być wyrażeniem typu
http://${host}:${port}/${endpoint}.

Osobno warto zwrócić uwagę na możliwość przypisania zmiennych podczas wykonywania skryptu. Przykładowo często zachodzi potrzeba zapisania danych autoryzacyjnych (tokenu lub całego nagłówka), które przyszły z serwera po udanym logowaniu. TestMace umożliwia zapisanie takich danych w zmiennych dynamicznych jednego z przodków. Aby uniknąć kolizji z już istniejącymi zmiennymi „statycznymi”, zmienne dynamiczne umieszczane są w osobnym obiekcie $dynamicVar.

Scenariusze

Korzystając ze wszystkich powyższych funkcji, możesz uruchamiać całe skrypty zapytań. Na przykład utworzenie encji -> zapytanie o encję -> usunięcie encji. W tym przypadku można na przykład użyć węzła Folder do zgrupowania kilku węzłów RequestStep.

Autouzupełnianie i wyróżnianie wyrażeń

Dla wygodnej pracy ze zmiennymi (i nie tylko) konieczne jest autouzupełnianie. I oczywiście podkreślenie wartości wyrażenia, aby łatwiej i wygodniej było wyjaśnić, czym jest równa konkretna zmienna. Dokładnie tak jest w przypadku, gdy lepiej raz zobaczyć, niż usłyszeć sto razy:

TestMace - potężne IDE do pracy z API

Warto zauważyć, że autouzupełnianie jest realizowane nie tylko dla zmiennych, ale także na przykład dla nagłówków, wartości niektórych nagłówków (na przykład autouzupełnianie dla nagłówka Content-Type), protokołów i wielu innych. Lista jest stale aktualizowana w miarę rozwoju aplikacji.

Cofnij/powtórz

Cofanie/ponawianie zmian jest bardzo wygodną rzeczą, ale z jakiegoś powodu nie jest wdrażane wszędzie (a narzędzia do pracy z API nie są wyjątkiem). Ale my do nich nie należymy!) W całym projekcie wdrożyliśmy funkcję cofania/ponawiania, co pozwala na cofnięcie nie tylko edycji konkretnego węzła, ale także jego utworzenia, usunięcia, przeniesienia itp. Najbardziej krytyczne operacje wymagają potwierdzenia.

Tworzenie testów

Węzeł Asercja odpowiada za tworzenie testów. Jedną z głównych funkcji jest możliwość tworzenia testów bez programowania, przy użyciu wbudowanych edytorów.

Węzeł asercji składa się z zestawu asercji. Każde twierdzenie ma swój własny typ; w tej chwili istnieje kilka rodzajów twierdzeń

  1. Porównaj wartości - po prostu porównuje 2 wartości. Istnieje kilka operatorów porównania: równy, nierówny, większy niż, większy lub równy, mniejszy niż, mniejszy lub równy.

  2. Zawiera wartość - sprawdza występowanie podłańcucha w ciągu.

  3. XPath - sprawdza, czy selektor w formacie XML zawiera określoną wartość.

  4. Asercja JavaScript to dowolny skrypt JavaScript, który zwraca wartość true w przypadku powodzenia i wartość false w przypadku niepowodzenia.

Zaznaczam, że tylko ta ostatnia wymaga od użytkownika umiejętności programowania, pozostałe 3 asercje tworzone są przy pomocy interfejsu graficznego. Oto na przykład jak wygląda okno dialogowe tworzenia asercji porównującej wartości:

TestMace - potężne IDE do pracy z API

Wisienką na torcie jest szybkie tworzenie twierdzeń na podstawie odpowiedzi, tylko spójrz!

TestMace - potężne IDE do pracy z API

Jednakże takie twierdzenia mają oczywiste ograniczenia, które warto pokonać za pomocą asercji JavaScript. I tutaj TestMace zapewnia również wygodne środowisko z autouzupełnianiem, podświetlaniem składni, a nawet analizatorem statycznym.

Opis API

TestMace pozwala nie tylko korzystać z API, ale także je dokumentować. Co więcej, sam opis również ma strukturę hierarchiczną i organicznie wpasowuje się w resztę projektu. Dodatkowo obecnie istnieje możliwość importowania opisów API z formatów Swagger 2.0 / OpenAPI 3.0. Sam opis nie tylko leży w martwym punkcie, ale jest ściśle zintegrowany z resztą projektu, w szczególności dostępne jest automatyczne uzupełnianie adresów URL, nagłówków HTTP, parametrów zapytań itp., a w przyszłości planujemy dodać testy pod kątem zgodności odpowiedzi z opisem API.

Węzeł udostępniania

Sprawa: chcesz podzielić się problematycznym żądaniem lub nawet całym skryptem ze współpracownikiem lub po prostu załączyć go do błędu. TestMace uwzględnia również ten przypadek: aplikacja umożliwia serializację dowolnego węzła, a nawet poddrzewa w adresie URL. Kopiuj-wklej i możesz łatwo przenieść żądanie na inną maszynę lub projekt.

Czytelny dla człowieka format przechowywania projektów

W tej chwili każdy węzeł przechowywany jest w osobnym pliku z rozszerzeniem yml (tak jak ma to miejsce w przypadku węzła Assertion) lub w folderze z nazwą węzła i znajdującym się w nim plikiem Index.yml.
Na przykład tak wygląda plik żądania, który przygotowaliśmy w powyższej recenzji:

indeks.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

Jak widać, wszystko jest bardzo jasne. W razie potrzeby format ten można łatwo edytować ręcznie.

Hierarchia folderów w systemie plików całkowicie powtarza hierarchię węzłów w projekcie. Na przykład skrypt taki jak:

TestMace - potężne IDE do pracy z API

Mapuje system plików do następującej struktury (pokazana jest tylko hierarchia folderów, ale istota jest jasna)

TestMace - potężne IDE do pracy z API

Ułatwia to proces przeglądu projektu.

Importuj z Postmana

Po przeczytaniu tego wszystkiego, niektórzy użytkownicy będą chcieli wypróbować (prawda?) nowy produkt lub (co do cholery nie żartuje!) całkowicie wykorzystać go w swoim projekcie. Jednak migrację może zatrzymać duża liczba zmian w tym samym Listonoszu. W takich przypadkach TestMace obsługuje importowanie kolekcji z Postmana. Na chwilę obecną wspierany jest import bez testów, jednak nie wykluczamy jego wspierania w przyszłości.

Plany

Mam nadzieję, że wielu z tych, którzy przeczytali do tego momentu, polubiło nasz produkt. Jednak to nie wszystko! Prace nad produktem idą pełną parą, a oto kilka funkcji, które planujemy wkrótce dodać.

Synchronizacja w chmurze

Jedna z najbardziej pożądanych funkcji. Na chwilę obecną do synchronizacji proponujemy wykorzystanie systemów kontroli wersji, dla których dostosowujemy format do bardziej przyjaznego dla tego typu przechowywania. Jednak ten przepływ pracy nie jest odpowiedni dla wszystkich, dlatego planujemy dodać mechanizm synchronizacji znany wielu osobom za pośrednictwem naszych serwerów.

CLI

Jak wspomniano powyżej, produkty na poziomie IDE nie mogą obyć się bez różnego rodzaju integracji z istniejącymi aplikacjami lub przepływami pracy. CLI jest dokładnie tym, czego potrzeba, aby zintegrować testy napisane w TestMace z procesem ciągłej integracji. Prace nad CLI idą pełną parą, wczesne wersje uruchomią projekt za pomocą prostego raportu konsolowego. W przyszłości planujemy dodać wyjście raportu w formacie JUnit.

System wtyczek

Pomimo całej mocy naszego narzędzia, liczba przypadków wymagających rozwiązań jest nieograniczona. W końcu istnieją zadania specyficzne dla konkretnego projektu. Dlatego w przyszłości planujemy dodać SDK do tworzenia wtyczek, a każdy programista będzie mógł dodać funkcjonalność według własnych upodobań.

Rozszerzanie zakresu typów węzłów

Ten zestaw węzłów nie obejmuje wszystkich przypadków wymaganych przez użytkownika. Węzły, które planuje się dodać:

  • Węzeł skryptowy – konwertuje i umieszcza dane za pomocą js i odpowiedniego API. Używając tego typu węzła, możesz na przykład wykonywać skrypty przed żądaniem i po żądaniu w Postmanie.
  • Węzeł GraphQL - obsługa graphql
  • Niestandardowy węzeł asercji - pozwoli Ci rozszerzyć zbiór istniejących asercji w projekcie
    Nie jest to oczywiście lista ostateczna, będzie ona na bieżąco aktualizowana m.in. dzięki Waszym opiniom.

FAQ

Czym się różnisz od Postmana?

  1. Koncepcja węzłów, która pozwala na niemal nieograniczone skalowanie funkcjonalności projektu
  2. Czytelny dla człowieka format projektu z zapisem w systemie plików, co ułatwia pracę z systemami kontroli wersji
  3. Możliwość tworzenia testów bez programowania i bardziej zaawansowana obsługa js w edytorze testów (autouzupełnianie, analizator statyczny)
  4. Zaawansowane autouzupełnianie i podświetlanie aktualnej wartości zmiennych

Czy jest to produkt typu open source?

Nie, w tej chwili źródła są zamknięte, ale w przyszłości rozważamy możliwość otwarcia źródeł

Z czego żyjesz?)

Oprócz wersji darmowej planujemy wypuszczenie płatnej wersji produktu. Będzie dotyczyć przede wszystkim rzeczy wymagających strony serwera, np. synchronizacji.

wniosek

Nasz projekt zmierza ku stabilnej wersji. Jednak produkt może być już używany, o czym świadczą pozytywne opinie naszych pierwszych użytkowników. Aktywnie zbieramy opinie, bo bez ścisłej współpracy ze społecznością nie da się zbudować dobrego narzędzia. Znajdziesz nas tutaj:

Oficjalna strona internetowa

Telegram

Slack

Facebook

Śledzenie problemów

Czekamy na Twoje życzenia i sugestie!

Źródło: www.habr.com

Dodaj komentarz