TestMace - en kraftfuld IDE til at arbejde med API'er

Hej alle! I dag ønsker vi at præsentere vores produkt for IT-publikummet - en IDE til at arbejde med API'er TestMace. Måske nogle af jer allerede kender til os fra tidligere artikler. Der har dog ikke været nogen omfattende gennemgang af værktøjet, så vi adresserer denne beklagelige mangel.

TestMace - en kraftfuld IDE til at arbejde med API'er

Motivation

Хотелось бы начать с того как, собственно, мы пришли к такой жизни и решили запилить свой инструмент для продвинутой работы с API. Начнем со списка функциональных возможностей, которыми должен обладать продукт, про который, по нашему мнению, можно сказать, что это «IDE для работы с API»:

  • Oprettelse og udførelse af forespørgsler og scripts (sekvenser af forespørgsler)
  • Написание различного рода тестов
  • Test generation
  • Arbejde med API-beskrivelser, herunder import fra formater som Swagger, OpenAPI, WADL osv.
  • Hånende anmodninger
  • God understøttelse af et eller flere sprog til at skrive scripts, herunder integration med populære biblioteker
  • etc.

Listen kan udvides, så den passer til din smag. Desuden er det vigtigt at skabe ikke kun selve IDE, men også en bestemt infrastruktur, såsom skysynkronisering, kommandolinjeværktøjer, online overvågningstjeneste osv. I sidste ende dikterer de seneste års tendenser os ikke kun den kraftfulde funktionalitet af applikationen, men også dens behagelige grænseflade.

Hvem har brug for sådan et værktøj? Det er klart, at alle dem, der på en eller anden måde er forbundet med udvikling og test af API'er, er udviklere og testere =). Desuden, hvis det for førstnævnte ofte er nok at udføre enkelte forespørgsler og simple scripts, så er dette for testere et af hovedværktøjerne, som blandt andet bør omfatte en kraftfuld mekanisme til at skrive test med evnen til at køre dem i CI.

Итак, следуя данным ориентирам, мы начали создавать свой продукт. Давайте посмотрим, что у нас получилось на данном этапе.

Hurtig start

Начнем с первого знакомства с приложением. Скачать его можно på vores hjemmeside. I øjeblikket er alle 3 store platforme understøttet - Windows, Linux, MacOS. Download, installer, start. Når du starter det første gang, kan du muligvis se følgende vindue:

TestMace - en kraftfuld IDE til at arbejde med API'er

Klik på plustegnet øverst i indholdsområdet for at oprette din første anmodning. Forespørgselsfanen ser sådan ud:

TestMace - en kraftfuld IDE til at arbejde med API'er

Lad os se på det mere detaljeret. Anmodningsgrænsefladen ligner meget grænsefladen for populære hvile-klienter, hvilket gør migrering fra lignende værktøjer lettere. Lad os lave den første anmodning til url'en https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - en kraftfuld IDE til at arbejde med API'er

Generelt kaster svarpanelet ved første øjekast heller ikke nogen overraskelser op. Jeg vil dog gerne henlede din opmærksomhed på nogle punkter:

  1. Kroppen af ​​svaret er repræsenteret i form af et træ, som for det første tilføjer informationsindhold og for det andet giver dig mulighed for at tilføje nogle interessante funktioner, som nedenfor
  2. Есть вкладка Assertions, в которой отображается список тестов для данного запроса

Som du kan se, kan vores værktøj bruges som en bekvem hvileklient. Vi ville dog ikke være her, hvis dets muligheder kun var begrænset til at sende anmodninger. Dernæst vil jeg skitsere de grundlæggende begreber og funktionalitet af TestMace.

Grundlæggende koncepter og funktioner

node

TestMace funktionalitet er opdelt i forskellige typer noder. I eksemplet ovenfor demonstrerede vi driften af ​​RequestStep-knuden. Imidlertid er følgende typer noder nu også tilgængelige i applikationen:

  • RequestStep. Dette er den node, hvorigennem du kan oprette en anmodning. Det kan kun have én Assertion node som et underordnet element.
  • Påstand. Noden bruges til at skrive test. Kan kun være en underordnet node til RequestStep-noden.
  • Folder. Giver dig mulighed for at gruppere mappe- og RequestStep-noder i sig selv.
  • Projekt. Dette er rodnoden, der oprettes automatisk, når projektet oprettes. Ellers gentager den funktionaliteten af ​​mappenoden.
  • Link. Link til mappen eller RequestStep-noden. Giver dig mulighed for at genbruge forespørgsler og scripts.
  • etc.

Узлы располагаются в scratches (панель слева внизу, служит для быстрого создания «одноразовых» запросов) и в project (панель слева вверху), на которой остановимся поподробнее.

Projekt

Når du starter programmet, vil du muligvis bemærke en enlig projektlinje i øverste venstre hjørne. Dette er roden til projekttræet. Når du starter et projekt, oprettes et midlertidigt projekt, hvortil stien afhænger af dit operativsystem. Du kan til enhver tid flytte projektet til et sted, der passer dig.

Hovedformålet med projektet er muligheden for at gemme udviklinger i filsystemet og yderligere synkronisere dem gennem versionskontrolsystemer, køre scripts i CI, gennemgå ændringer mv.

Variabler

Variabler er en af ​​nøglemekanismerne i en applikation. De af jer, der arbejder med værktøjer som TestMace, har måske allerede en idé om, hvad vi taler om. Så variabler er en måde at gemme fælles data og kommunikere mellem noder. En analog er for eksempel miljøvariabler i Postman eller Insomnia. Vi gik dog videre og udviklede emnet. I TestMace kan variable indstilles på nodeniveau. Nogen. Der er også en mekanisme til at arve variabler fra forfædre og overlappende variable i efterkommere. Derudover er der en række indbyggede variable, navnene på de indbyggede variable begynder med $. Her er nogle af dem:

  • $prevStep — ссылка на переменные предыдущей ноды
  • $nextStep — link til variabler for den næste knude
  • $parent - det samme, men kun for forfaderen
  • $response - svar fra serveren
  • $env — текущие переменные окружения
  • $dynamicVar - dynamiske variabler oprettet under udførelse af script eller forespørgsel

$env - disse er i det væsentlige almindelige projektknudeniveauvariabler, men sættet af miljøvariabler ændres afhængigt af det valgte miljø.

Variablen tilgås via ${variable_name}
Værdien af ​​en variabel kan være en anden variabel eller endda et helt udtryk. For eksempel kan url-variablen være et udtryk som
http://${host}:${port}/${endpoint}.

Separat er det værd at bemærke muligheden for at tildele variabler under scriptudførelse. For eksempel er der ofte behov for at gemme autorisationsdata (et token eller hele headeren), der kom fra serveren efter et vellykket login. TestMace giver dig mulighed for at gemme sådanne data i dynamiske variabler for en af ​​forfædrene. For at undgå kollisioner med allerede eksisterende "statiske" variabler placeres dynamiske variable i et separat objekt $dynamicVar.

scenarier

Ved at bruge alle ovenstående funktioner kan du køre hele forespørgselsscripts. For eksempel oprettelse af en enhed -> forespørgsel om en enhed -> sletning af en enhed. I dette tilfælde kan du for eksempel bruge mappenoden til at gruppere flere RequestStep-noder.

Autofuldførelse og fremhævelse af udtryk

For praktisk arbejde med variabler (og ikke kun) er autofuldførelse nødvendig. Og selvfølgelig fremhæve værdien af ​​et udtryk for at gøre det nemmere og mere bekvemt at afklare, hvad en bestemt variabel er lig med. Dette er præcis tilfældet, når det er bedre at se én gang end at høre hundrede gange:

TestMace - en kraftfuld IDE til at arbejde med API'er

Det er værd at bemærke, at autofuldførelse er implementeret ikke kun for variabler, men også for for eksempel for overskrifter, værdier af visse overskrifter (for eksempel autofuldførelse for Content-Type-headeren), protokoller og meget mere. Listen opdateres konstant, efterhånden som applikationen vokser.

Fortryd/gentag

At fortryde/gentage ændringer er en meget praktisk ting, men af ​​en eller anden grund er det ikke implementeret alle steder (og værktøjer til at arbejde med API'er er ingen undtagelse). Men vi er ikke en af ​​dem!) Vi har implementeret fortryd/redo gennem hele projektet, hvilket giver dig mulighed for at fortryde ikke kun redigering af en specifik node, men også dens oprettelse, sletning, flytning osv. De mest kritiske operationer kræver bekræftelse.

Oprettelse af tests

Assertion noden er ansvarlig for at oprette tests. En af hovedfunktionerne er muligheden for at oprette tests uden programmering ved hjælp af indbyggede editorer.

En påstandsknude består af et sæt påstande. Hver påstand har sin egen type; i øjeblikket er der flere typer påstande

  1. Sammenlign værdier - sammenligner blot 2 værdier. Der er flere sammenligningsoperatorer: lig, ikke lig, større end, større end eller lig med, mindre end, mindre end eller lig med.

  2. Indeholder værdi - kontrollerer forekomsten af ​​en understreng i en streng.

  3. XPath - kontrollerer at vælgeren i XML indeholder en bestemt værdi.

  4. JavaScript-påstand er et vilkårligt javascript-script, der returnerer sandt ved succes og falsk ved fiasko.

Замечу, что только последний требует от пользователя навыков программирования, остальные 3 assertion-а создаются с помощью графического интерфейса. Вот, например, как выглядит диалог создания compare values assertion-а:

TestMace - en kraftfuld IDE til at arbejde med API'er

Prikken over i'et er den hurtige skabelse af påstande fra svar, bare se på det!

TestMace - en kraftfuld IDE til at arbejde med API'er

Sådanne påstande har dog åbenlyse begrænsninger, som du måske ønsker at bruge en javascript-påstand til at overvinde. Og her giver TestMace også et behageligt miljø med autofuldførelse, syntaksfremhævning og endda en statisk analysator.

API-beskrivelse

TestMace giver dig mulighed for ikke kun at bruge API'et, men også at dokumentere det. Desuden har selve beskrivelsen også en hierarkisk struktur og passer organisk ind i resten af ​​projektet. Derudover er det i øjeblikket muligt at importere API-beskrivelser fra Swagger 2.0 / OpenAPI 3.0-formater. Selve beskrivelsen ligger ikke bare dødvægt, men er tæt integreret med resten af ​​projektet, især er autofuldførelse af URL'er, HTTP-headers, forespørgselsparametre osv. tilgængelig, og i fremtiden planlægger vi at tilføje tests for overholdelse af svaret med API-beskrivelsen.

Deler node

Sag: du vil gerne dele en problematisk anmodning eller endda et helt script med en kollega eller blot vedhæfte det til en fejl. TestMace dækker også dette tilfælde: applikationen giver dig mulighed for at serialisere enhver node og endda et undertræ i en URL. Copy-paste og du kan nemt overføre anmodningen til en anden maskine eller projekt.

Menneskelæsbart projektlagringsformat

I øjeblikket er hver node gemt i en separat fil med filtypenavnet yml (som det er tilfældet med Assertion node), eller i en mappe med navnet på noden og filen index.yml.
Вот как например выглядит файл с запросом, который мы сделали в обзоре выше:

index.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

Как видите, все предельно ясно. При желании такой формат вполне комфортно редактировать и вручную.

Иерархия папок в файловой системе полностью повторяет иерархию узлов в проекте. К примеру сценарий вида:

TestMace - en kraftfuld IDE til at arbejde med API'er

Маппится в файловой системе на следующую структуру (показана только иерархия папок, но суть ясна)

TestMace - en kraftfuld IDE til at arbejde med API'er

Dette gør projektgennemgangsprocessen nemmere.

Импорт из Postman

Прочитав все вышеизложенное, некоторые пользователи захотят попробовать (так ведь?) новый продукт или (чем черт не шутит!) по полной заюзать в своем проекте. Однако миграцию может остановить большое количество наработок в том же самом Postman-е. Для таких случаев TestMace поддерживает импорт коллекций из Postman. На данный момент поддерживается импорт без тестов, однако в дальнейшем мы не исключаем и их поддержку.

Planer

Jeg håber, at mange af dem, der har læst indtil dette punkt, har kunnet lide vores produkt. Det er dog ikke alt! Arbejdet med produktet er i fuld gang, og her er nogle funktioner, som vi planlægger at tilføje snart.

Cloud synkronisering

En af de mest efterspurgte funktioner. I øjeblikket foreslår vi at bruge versionskontrolsystemer til synkronisering, hvor vi gør formatet mere venligt for denne type lagring. Denne arbejdsgang er dog ikke egnet for alle, så vi planlægger at tilføje en synkroniseringsmekanisme, som mange kender gennem vores servere.

CLI

Som nævnt ovenfor kan produkter på IDE-niveau ikke undvære alle former for integrationer med eksisterende applikationer eller arbejdsgange. CLI er præcis, hvad der er nødvendigt for at integrere test skrevet i TestMace i den kontinuerlige integrationsproces. Arbejdet med CLI er i fuld gang; tidlige versioner vil lancere projektet med en simpel konsolrapport. I fremtiden planlægger vi at tilføje rapportoutput i JUnit-format.

Plugin system

Несмотря на всю мощь нашего инструмента, набор кейсов, требующих решения, безграничен. В конце концов есть задачи, специфичные для конкретного проекта. Именно поэтому в дальнейшем мы планируем добавить SDK для разработки плагинов и каждый разработчик сможет добавить функционал по вкусу.

Расширение ассортимента типов узлов

Dette sæt af noder dækker ikke alle tilfælde, der kræves af brugeren. Noder, der er planlagt tilføjet:

  • Script node - konverterer og placerer data ved hjælp af js og den tilsvarende API. Ved at bruge denne type node kan du gøre ting som pre-request og post-request scripts i Postman.
  • GraphQL нода — поддержка graphql
  • Custom assertion node - giver dig mulighed for at udvide sættet af eksisterende påstande i projektet
    Dette er naturligvis ikke en endelig liste, den vil løbende blive opdateret på grund af blandt andet din feedback.

FAQ

Hvordan adskiller du dig fra Postman?

  1. Konceptet med noder, som giver dig mulighed for næsten uendeligt at skalere projektets funktionalitet
  2. Menneskelæsbart projektformat med lagring i et filsystem, hvilket forenkler arbejdet med versionskontrolsystemer
  3. Возможность создания тестов без программирования и более продвинутая поддержка js в редакторе тестов (автодополнение, статический анализатор)
  4. Продвинутое автодополнение и подсветка текущего значения переменных

Er dette et open source-produkt?

Нет, на данный момент исходники закрыты, однако в будущем мы рассматриваем возможность открытия исходников

Hvad lever du af?)

Sammen med den gratis version planlægger vi at frigive en betalt version af produktet. Det vil primært omfatte ting, der kræver en serverside, for eksempel synkronisering.

Konklusion

Наш проект семимильными шагами движется к стабильному релизу. Однако уже сейчас продуктом можно пользоваться, и положительные отзывы наших ранних юзеров тому подтверждение. Мы активно собираем обратную связь, ведь без тесного сотрудничества с коммьюнити невозможно построить хороший инструмент. Найти нас можно тут:

Den officielle hjemmeside

Telegram

Slack

Facebook

Problemsporing

Ждем с нетерпением ваших пожеланий и предложений!

Kilde: www.habr.com

Tilføj en kommentar