TestMace - мощна IDE за работа с API

Здравейте всички! Днес искаме да представим на ИТ обществеността нашия продукт - IDE за работа с API TestMace. Може би някои от вас вече знаят за нас от предишни статии. Въпреки това не е имало цялостен преглед на инструмента, така че ние се занимаваме с този неприятен недостатък.

TestMace - мощна IDE за работа с API

Мотивиране

Бих искал да започна с това как всъщност стигнахме до този живот и решихме да създадем наш собствен инструмент за напреднала работа с API. Нека започнем със списък на функционалностите, които трябва да има един продукт, за който според нас можем да кажем, че е „IDE за работа с API“:

  • Създаване и изпълнение на заявки и скриптове (последователности от заявки)
  • Писане на различни видове тестове
  • Генериране на тестове
  • Работа с API описания, включително импортиране от формати като Swagger, OpenAPI, WADL и др.
  • Подигравателни молби
  • Добра поддръжка за един или повече езици за писане на скриптове, включително интеграция с популярни библиотеки
  • и т.н.

Списъкът може да бъде разширен по ваш вкус. Освен това е важно да се създаде не само самата IDE, но и определена инфраструктура, като облачна синхронизация, инструменти за команден ред, онлайн услуга за наблюдение и т.н. В крайна сметка тенденциите от последните години ни диктуват не само мощната функционалност на приложението, но и неговия приятен интерфейс.

Кой има нужда от такъв инструмент? Очевидно всички, които поне по някакъв начин са свързани с разработването и тестването на API, са разработчици и тестери =). Освен това, ако за първите често е достатъчно да изпълняват единични заявки и прости скриптове, то за тестерите това е един от основните инструменти, който, наред с други неща, трябва да включва мощен механизъм за писане на тестове с възможност за тяхното изпълнение в CI.

И така, следвайки тези насоки, започнахме да създаваме нашия продукт. Нека да видим какво сме постигнали на този етап.

Бърз старт

Нека започнем с първото запознаване с приложението. Можете да го изтеглите на нашия уебсайт. В момента се поддържат всички 3 основни платформи - Windows, Linux, MacOS. Изтеглете, инсталирайте, стартирайте. Когато го стартирате за първи път, може да видите следния прозорец:

TestMace - мощна IDE за работа с API

Кликнете върху знака плюс в горната част на областта със съдържание, за да създадете първата си заявка. Разделът за заявка изглежда така:

TestMace - мощна IDE за работа с API

Нека го разгледаме по-подробно. Интерфейсът на заявката е много подобен на интерфейса на популярните клиенти за почивка, което прави миграцията от подобни инструменти по-лесна. Нека направим първата заявка към url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - мощна IDE за работа с API

Като цяло, на пръв поглед панелът за отговор също не поднася изненади. Бих искал обаче да обърна внимание на някои точки:

  1. Тялото на отговора е представено под формата на дърво, което първо добавя информационно съдържание и второ ви позволява да добавите някои интересни функции, за които по-долу
  2. Има раздел Assertions, който показва списък с тестове за дадена заявка

Както можете да видите, нашият инструмент може да се използва като удобен клиент за почивка. Нямаше обаче да сме тук, ако възможностите му бяха ограничени само до изпращане на заявки. След това ще очертая основните концепции и функционалност на TestMace.

Основни понятия и функции

възел

Функционалността на TestMace е разделена на различни типове възли. В примера по-горе демонстрирахме работата на възела RequestStep. Следните типове възли обаче вече са налични в приложението:

  • RequestStep. Това е възелът, чрез който можете да създадете заявка. Той може да има само един възел Assertion като дъщерен елемент.
  • Твърдение. Възелът се използва за писане на тестове. Може да бъде само дъщерен възел на възела RequestStep.
  • Папка. Позволява ви да групирате възли Folder и RequestStep в самите тях.
  • Проект. Това е основният възел, създаден автоматично при създаване на проект. В противен случай той повтаря функционалността на възела Folder.
  • Връзка. Връзка към възела Folder или RequestStep. Позволява ви да използвате повторно заявки и скриптове.
  • и т.н.

Възлите се намират в драскотини (панелът в долния ляв ъгъл, използван за бързо създаване на „еднократни“ заявки) и в проекти (панелът в горния ляв ъгъл), на които ще се спрем по-подробно.

Проект

Когато стартирате приложението, може да забележите самотен ред на проекта в горния ляв ъгъл. Това е коренът на дървото на проекта. Когато стартирате проект, се създава временен проект, пътят до който зависи от вашата операционна система. По всяко време можете да преместите проекта на удобно за вас място.

Основната цел на проекта е възможността за запазване на разработките във файловата система и допълнителното им синхронизиране чрез системи за контрол на версиите, стартиране на скриптове в CI, преглед на промените и т.н.

променливи

Променливите са един от ключовите механизми на приложението. Тези от вас, които работят с инструменти като TestMace, може би вече имат представа за какво говорим. И така, променливите са начин за съхраняване на общи данни и комуникация между възлите. Аналог, например, са променливите на средата в Postman или Insomnia. Ние обаче отидохме по-далеч и развихме темата. В TestMace променливите могат да се задават на ниво възел. Всякакви. Съществува и механизъм за наследяване на променливи от предци и припокриване на променливи в потомци. Освен това има редица вградени променливи, имената на вградените променливи започват с $, Ето някои от тях:

  • $prevStep — връзка към променливи на предишния възел
  • $nextStep — връзка към променливи на следващия възел
  • $parent - същото нещо, но само за прародителя
  • $response - отговор от сървъра
  • $env - текущи променливи на средата
  • $dynamicVar - динамични променливи, създадени по време на изпълнение на скрипт или заявка

$env - това са по същество обикновени променливи на ниво възел на проекта, но наборът от променливи на средата се променя в зависимост от избраната среда.

Променливата е достъпна чрез ${variable_name}
Стойността на една променлива може да бъде друга променлива или дори цял израз. Например, url променливата може да бъде израз като
http://${host}:${port}/${endpoint}.

Отделно си струва да се отбележи възможността за присвояване на променливи по време на изпълнение на скрипта. Например, често има нужда да се запазят данните за оторизация (токен или целия хедър), които са дошли от сървъра след успешно влизане. TestMace ви позволява да запазвате такива данни в динамични променливи на един от предците. За да се избегнат сблъсъци с вече съществуващи „статични“ променливи, динамичните променливи се поставят в отделен обект $dynamicVar.

сценарии

Използвайки всички горепосочени функции, можете да изпълнявате цели скриптове за заявки. Например създаване на обект -> запитване към обект -> изтриване на обект. В този случай, например, можете да използвате възела Folder, за да групирате няколко възела RequestStep.

Автоматично довършване и подчертаване на изрази

За удобна работа с променливи (и не само) е необходимо автоматично довършване. И разбира се, подчертаване на стойността на израз, за ​​да стане по-лесно и по-удобно да се изясни на какво е равна определена променлива. Това е точно случаят, когато е по-добре да видите веднъж, отколкото да чуете сто пъти:

TestMace - мощна IDE за работа с API

Струва си да се отбележи, че автоматичното довършване се прилага не само за променливи, но също така, например, за заглавки, стойности на определени заглавки (например автоматично довършване за заглавката Content-Type), протоколи и много други. Списъкът се актуализира непрекъснато с нарастването на приложението.

Назад-напред

Отмяната/възстановяването на промените е много удобно нещо, но по някаква причина не се прилага навсякъде (и инструментите за работа с API не са изключение). Но ние не сме от тези!) Ние сме внедрили отмяна/възстановяване в целия проект, което ви позволява да отмените не само редактирането на конкретен възел, но и неговото създаване, изтриване, преместване и т.н. Най-критичните операции изискват потвърждение.

Създаване на тестове

Възелът Assertion е отговорен за създаването на тестове. Една от основните функции е възможността за създаване на тестове без програмиране, с помощта на вградени редактори.

Възелът Assertion се състои от набор от твърдения. Всяко твърдение има свой тип, в момента има няколко вида твърдения

  1. Сравнете стойности - просто сравнява 2 стойности. Има няколко оператора за сравнение: равно, не е равно, по-голямо от, по-голямо от или равно на, по-малко от, по-малко от или равно на.

  2. Съдържа стойност - проверява появата на подниз в низ.

  3. XPath - проверява дали селекторът в XML съдържа определена стойност.

  4. Утвърждението на JavaScript е произволен скрипт на JavaScript, който връща true при успех и false при неуспех.

Отбелязвам, че само последното изисква умения за програмиране от потребителя, останалите 3 твърдения се създават с помощта на графичен интерфейс. Ето, например, как изглежда диалоговият прозорец за създаване на твърдение за сравняване на стойности:

TestMace - мощна IDE за работа с API

Черешката на тортата е бързото създаване на твърдения от отговорите, просто го вижте!

TestMace - мощна IDE за работа с API

Такива твърдения обаче имат очевидни ограничения, които може да искате да използвате javascript твърдение, за да преодолеете. И тук TestMace предоставя удобна среда с автоматично довършване, подчертаване на синтаксиса и дори статичен анализатор.

Описание на API

TestMace ви позволява не само да използвате API, но и да го документирате. Освен това самото описание също има йерархична структура и се вписва органично в останалата част от проекта. Освен това понастоящем е възможно да импортирате API описания от формати Swagger 2.0 / OpenAPI 3.0. Самото описание не просто лежи мъртва тежест, но е тясно интегрирано с останалата част от проекта, по-специално, налично е автоматично довършване на URL адреси, HTTP заглавки, параметри на заявки и т.н., а в бъдеще планираме да добавим тестове за съответствие на отговора с описанието на API.

Възел за споделяне

Случай: искате да споделите проблемна заявка или дори цял скрипт с колега или просто да го прикачите към грешка. TestMace покрива и този случай: приложението ви позволява да сериализирате всеки възел и дори поддърво в URL адрес. Копирайте-поставете и можете лесно да прехвърлите заявката на друга машина или проект.

Четим от човека формат за съхранение на проекти

В момента всеки възел се съхранява в отделен файл с разширение yml (както е случаят с възела Assertion) или в папка с името на възела и файла 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 - мощна IDE за работа с API

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

TestMace - мощна IDE за работа с API

Това улеснява процеса на преглед на проекта.

Внос от Пощальон

След като прочетат всичко по-горе, някои потребители ще искат да опитат (нали?) нов продукт или (какво, по дяволите, не се шегувам!) да го използват напълно в своя проект. Въпреки това, миграцията може да бъде спряна от голям брой разработки в един и същ Postman. За такива случаи TestMace поддържа импортиране на колекции от Postman. В момента се поддържа импорт без тестове, но не изключваме да го поддържаме в бъдеще.

Планове

Надявам се, че много от тези, които са чели до този момент, са харесали нашия продукт. Това обаче не е всичко! Работата по продукта е в разгара си и ето някои функции, които планираме да добавим скоро.

Синхронизиране в облак

Една от най-търсените функции. В момента предлагаме да използваме системи за контрол на версиите за синхронизация, за които правим формата по-удобен за този тип съхранение. Този работен процес обаче не е подходящ за всеки, така че планираме да добавим механизъм за синхронизиране, познат на мнозина чрез нашите сървъри.

CLI

Както бе споменато по-горе, продуктите на ниво IDE не могат без всички видове интеграции със съществуващи приложения или работни процеси. CLI е точно това, което е необходимо за интегриране на тестове, написани в TestMace, в процеса на непрекъсната интеграция. Работата по CLI е в разгара си; ранните версии ще стартират проекта с прост конзолен отчет. В бъдеще планираме да добавим изходен отчет във формат JUnit.

Плъгин система

Въпреки цялата мощ на нашия инструмент, наборът от случаи, които изискват решения, е неограничен. В крайна сметка има задачи, които са специфични за конкретен проект. Ето защо в бъдеще планираме да добавим SDK за разработване на плъгини и всеки разработчик ще може да добавя функционалност по свой вкус.

Разширяване на диапазона от типове възли

Този набор от възли не покрива всички случаи, изисквани от потребителя. Възли, които се планират да бъдат добавени:

  • Script node - преобразува и поставя данни с помощта на js и съответния API. Използвайки този тип възел, можете да правите неща като скриптове преди заявка и след заявка в Postman.
  • GraphQL възел - поддръжка на graphql
  • Персонализиран възел за твърдения - ще ви позволи да разширите набора от съществуващи твърдения в проекта
    Естествено, това не е окончателен списък; той ще бъде постоянно актуализиран поради, наред с други неща, вашите отзиви.

Често задавани въпроси

С какво се различаваш от Postman?

  1. Концепцията за възли, която ви позволява почти безкрайно да мащабирате функционалността на проекта
  2. Четим от човека формат на проекта със записването му във файлова система, което опростява работата при използване на системи за контрол на версиите
  3. Възможност за създаване на тестове без програмиране и по-разширена поддръжка на js в редактора на тестове (автодовършване, статичен анализатор)
  4. Разширено автоматично довършване и подчертаване на текущата стойност на променливите

Това продукт с отворен код ли е?

Не, в момента източниците са затворени, но в бъдеще обмисляме възможността за отваряне на източниците

от какво живееш?)

Заедно с безплатната версия, планираме да пуснем и платена версия на продукта. Това ще включва предимно неща, които изискват сървърна страна, например синхронизация.

Заключение

Нашият проект се движи със скокове и граници към стабилна версия. Въпреки това, продуктът вече може да се използва и положителните отзиви от първите ни потребители са доказателство за това. Ние активно събираме обратна връзка, защото без тясно сътрудничество с общността е невъзможно да се изгради добър инструмент. Можете да ни намерите тук:

Официален сайт

Telegram

Застой

Facebook

Проследяване на проблеми

Очакваме вашите желания и предложения!

Източник: www.habr.com

Добавяне на нов коментар