TestMace — një IDE e fuqishme për punë me API

Përshëndetje të gjithëve! Sot dëshirojmë të paraqesim për publikun IT produktin tonë — IDE për punën me API. TestMace. Ndoshta disa nga ju tashmë e dini për ne nga artikujt e mëparshëm. Megjithatë, nuk kishte një përmbledhje gjithëpërfshirëse të mjetit, prandaj po e largojmë këtë mangësi të pakëndshme.

TestMace — një IDE e fuqishme për punë me API

Motivimi

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

  • Krijimi dhe ekzekutimi i kërkesave dhe skenarëve (sekuenca kërkesash)
  • Shkrimi i testeve të ndryshme
  • Gjenarimi i testeve
  • Puna me përshkrimin e API, përfshirë importin nga formate të tillë si Swagger, OpenAPI, WADL etj.
  • Mocking i kërkesave
  • Support i mirë për një ose më shumë gjuhë programuese për shkrimin e skripteve, duke përfshirë integrimin me bibliotekat popullore
  • etj.

Lista mund të plotësohet sipas dëshirës. Është e rëndësishme të krijohet jo vetëm vetë IDE, por gjithashtu një infrastrukturë të caktuar, siç është sinkronizimi cloud, mjetet e komandës, shërbimi i monitorimit online etj. Në fund të fundit, tendencat e viteve të fundit na diktuan jo vetëm një funksionalitet të fuqishëm të aplikacionit, por edhe një ndërfaqe të këndshme.

Për kë është i nevojshëm një mjet i tillë? E gjithë kjo është e qartë, për të gjithë ata që janë ndonjëherë të lidhur me zhvillimin dhe testimin e API — zhvilluesit dhe testuesit =). Dhe ndonëse për të parët shpesh mjafton të kryejnë kërkesa të vetme dhe skenarë të thjeshtë, për testuesit kjo është një nga mjetet kryesore, e cila, përveç të tjerash, duhet të përfshijë një mekanizëm të fuqishëm për shkrimin e testeve me mundësinë e ekzekutimit të tyre në CI.

Pra, duke ndjekur këto orientime, filluam të krijojmë produktin tonë. Le të shohim se çfarë kemi arritur deri në këtë fazë.

Nisja e shpejtë

Le të fillojmë me takimin e parë me aplikacionin. Mund ta shkarkoni në faqen tonë. Në këtë moment mbështeten të tri platformat kryesore — Windows, Linux, MacOS. Shkarkoni, instaloni, hapni. Në fillim, mund të shihni dritaren e mëposhtme:

TestMace — një IDE e fuqishme për punë me API

Klikoni në plusin në pjesën e sipërme të zonës së përmbajtjes për të krijuar kërkesën e parë. Tab-i me kërkesën duket si më poshtë:

TestMace — një IDE e fuqishme për punë me API

Le të ndalemi pak më gjatë në të. Interfaci i kërkesës i ngjan shumë atij të klientëve popullarë të REST, gjë që lehtëson migronin nga këto mjete. Le të bëjmë kërkesën e parë në url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace — një IDE e fuqishme për punë me API

Në përgjithësi, në shikim të parë, panele e përgjigjeve nuk sjell ndonjë befasim. Megjithatë, do t'i drejtoj vëmendjen tuaj disa pikave:

  1. Trupi i përgjigjes paraqitet si një pemë, e cila, nga njëra anë, shton informueshmërinë dhe nga ana tjetër lejon të shtojmë disa veçori interesante, për të cilat do flasim më poshtë
  2. Ekziston një skedë Assertions, ku shfaqet lista e testeve për këtë kërkesë

Siç mund të vëreni, mjeti ynë mund të përdoret si një klient i përshtatshëm i REST. Megjithatë, ne nuk do të ishim këtu nëse kapacitetet e tij do të kufizoheshin vetëm në dërgimin e kërkesave. Më pas, do përshkruaj konceptet kryesore dhe funksionalitetet e TestMace.

Koncepte kryesore dhe mundësi

Nyja

Funksionaliteti i TestMace është i ndarë në lloje të ndryshme nyjash. Në shembullin e mësipërm ne demonstruam punën e nyjës RequestStep. Megjithatë, aktualisht në aplikacion janë gjithashtu të disponueshme lloje të tjera nyjash:

  • RequestStep. Kjo është një nyjë, me anë të së cilës mund të krijoni një kërkesë. Si një element fëmijor, ajo mund të ketë vetëm një nyjë Assertion.
  • Assertion. Nyjë që përdoret për të shkruar teste. Mund të jetë një nyjë fëmijore vetëm për nyjën RequestStep.
  • Folder. Lejon grupimin e nyjave Folder dhe RequestStep brenda saj.
  • Project. Kjo është nyja rrënjësore, krijohet automatikisht me krijimin e projektit. Në të tjera përsërit funksionalitetet e nyjës Folder.
  • Link. Një lidhje në nyjën Folder ose RequestStep. Lejon ripërdorimin e kërkesave dhe skenarëve.
  • etj.

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

Projekti

Kur të startoni aplikacionin, mund të keni vënë re një rresht të vetëm Project në këndin e majtë lart. Ky është rrënjësori i pemës së projektit. Kur projekti startohet, krijohet një projekt përkohësor, rruga e të cilit varet nga sistemi operativ që përdorni. Në çdo moment mund të transferoni projektin në një vend më të përshtatshëm për ju.

Qëllimi kryesor i projektit është të mundësojë ruajtjen e punimeve në sistemin e skedarëve dhe sinkronizimin e mëtejshëm përmes sistemeve të kontrollit të versioneve, ekzekutimin e skenarëve në CI, rishikimin e ndryshimeve etj.

Variablat

Variablat janë një nga mekanizmat kryesorë të aplikacionit. Ata prej jush që punoni me mjete të tilla si TestMace, ndoshta e keni kuptuar për çfarë do flitet. Pra, variablat janë një mënyrë për ruajtjen e të dhënave të përbashkëta dhe komunikimin mes nodave. Një analog të tillë janë variablat e ambientit në Postman ose Insomnia. Megjithatë, ne kemi shkuar më tej dhe e kemi zhvilluar temën. Në TestMace, variablat mund të vendosen në nivel nodash. Çdo nodë. Gjithashtu ekziston një mekanizëm trashëgimi të variablave nga pararendësit dhe mbulimi i variablave në pasardhës. Përveç kësaj, ekziston një sërë variablesh të integruar, emrat e variablave të integruar fillojnë me $. Ja disa prej tyre:

  • $prevStep — referencë për variablat e nodës së kaluar
  • $nextStep — referencë për variablat e nodës së ardhshme
  • $parent — po e njëjta gjë, por për pararendësin
  • $response — përgjigjja nga serveri
  • $env — variablat aktuale të ambientit
  • $dynamicVar — variablat dinamike, të krijuara gjatë ekzekutimit të skenarit ose kërkesës

$env — në thelb, janë variablat e zakonshme të nivelit projekti, megjithatë, grupi i variablave të ambientit ndryshon sipas ambientit të zgjedhur.

Qasja në variabël bëhet përmes ${variable_name}
Si vlerë e variablit mund të jetë një variabël tjetër, ose madje një shprehje e tërë. Për shembull, si variabël url mund të jetë një shprehje e tillë
http://${host}:${port}/${endpoint}.

Отдельно стоит отметить возможность присваивания переменных во время выполнения скрипта. Например, зачастую возникает необходимость сохранить авторизационные данные (токен или весь заголовок), которые пришли с сервера после успешного логина. TestMace позволяет сохранять подобные данные в динамические переменные одного из предков. Для того, чтобы избежать коллизий с уже существующими «статическими» переменными, динамические переменные вынесены в отдельный объект $dynamicVar.

Skenarët

Duke përdorur të gjitha mundësitë e lartpërmendura, ju mund të realizoni skenarë të tërë kërkesash. Për shembull, krijimi i një entiteti -> kërkesa për entitetin -> fshirja e entitetit. Në këtë rast, ju mund të përdorni nodën Folder për grupimin e disa nodave RequestStep.

Plotësimi automatik dhe ndriçimi i vlerës së shprehjes

Për një punë të këndshme me variablat (dhe jo vetëm) është e nevojshme autokompletimi. Natyrisht, është e rëndësishme edhe ndriçimi i vlerës së shprehjes, për të qenë më e lehtë dhe më ndihmuese të saktësohet çfarë ka të bëjë ndonjë variabël. Ky është pikërisht rasti kur është më mirë të shohësh një herë sesa të dëgjosh njëqind herë:

TestMace — një IDE e fuqishme për punë me API

Vlen të përmendet se autokompletimi është realizuar jo vetëm për variablat, por edhe, për shembull, për titujt, vlerat e titujve të caktuar (p.sh., autokompletimi për titullin Content-Type), protokollet dhe shumë gjëra të tjera. Lista vazhdon të plotësohet me rritjen e aplikacionit.

Undo/redo

Anulimi/ripërsëritja e ndryshimeve është një gjë shumë e dobishme, por për ndonjë arsye nuk është realizuar kudo (dhe mjete për të punuar me API nuk janë përjashtim). Por ne nuk jemi ata!) Undo/redo është realizuar në kuadër të të gjithë projektit, çfarë lejon të anulohet jo vetëm redaktimi i një nodi të caktuar, por edhe krijimi, fshirja, zhvendosja, etj. Operacionet më kritike kërkojnë konfirmim.

Krijimi i testeve

Për krijimin e testeve është përgjegjës nodi i Assertit. Një nga veçoritë kryesore është mundësia e krijimit të testeve pa programim, duke përdorur redaktorët e integruar.

Nodi i Assertion përbëhet nga një grup assertion-esh. Çdo assertion ka një tip të vetin, për momentin ekzistojnë disa tipe assertion-esh.

  1. Compare values — просто сравнивает 2 значения. Есть несколько операторов сравнения «равно», «не равно», «больше», «больше или равно», «меньше», «меньше или равно».

  2. Përfshin vlerën — kontrollon prani të një nënstrobe në vargun.

  3. XPath — kontrollon se çfarë vlerë ndodhet në XML në bazë të selektorit të caktuar.

  4. Assertion JavaScript — një skript i rastësishëm në gjuhën javascript, i cili kthen true në rast suksesi dhe false në rast dështimi.

Dua të theksoj se vetëm e fundit kërkon nga përdoruesi aftësi programimi, 3 assertion-t e tjera krijohen me anë të ndërfaqes grafike. Ja, si duket dialogu për krijimin e një assertion-i për krahasimin e vlerave:

TestMace — një IDE e fuqishme për punë me API

Krejti në tortë është krijimi i shpejtë i assertion-esh nga përgjigjja, thjesht shikoni këtë!

TestMace — një IDE e fuqishme për punë me API

Megjithëse këto assertion-e kanë kufizime të qarta, kur përballeni me to, mund të përdorni javascript assertion. Edhe këtu, TestMace ofron një mjedis të rehatshëm me autokompaktim, ndriçim sintaksor dhe madje edhe një analizues static.

Përshkrimi i API

TestMace ofron mundësinë për të përdorur API dhe për ta dokumentuar atë. Përshkrimi ka një strukturë hierarkike dhe përshtatet natyrshëm me projektin e përgjithshëm. Përveç kësaj, aktualisht ekziston mundësia e importit të përshkrimit të API nga formatet Swagger 2.0 / OpenAPI 3.0. Përshkrimi nuk është thjesht një ngarkesë e vdekur, por integrohet ngushtë me pjesën tjetër të projektit, duke ofruar autokompaktimin e URL-ve, titujve HTTP, parametrave të pyetjeve dhe më shumë, dhe në të ardhmen planifikojmë të shtojmë teste për përputhshmërinë e përgjigjeve me përshkrimin e API.

Shirimi i nodave

Rasti: do të donit të ndanit një kërkesë problematike apo madje një skenar të tërë me një koleg apo thjesht ta bashkoni atë me një bug. TestMace mbulon edhe këtë rast: aplikacioni lejon serializimin e çdo node dhe madje të një nënpeme në një URL. Kopjoni-ngjitni dhe tashmë e keni transferuar lehtësisht kërkesën në një makinë tjetër ose projekt.

Formati i lexueshëm nga njeriu për ruajtjen e projektit

Aktualisht, çdo nyje ruhet në një skedar të veçantë me prapashtesën yml (ashtu si në rastin e nodës Assertion), ose në një dosje me emrin e nodës dhe skedarin index.yml në të.
Ja si duket për shembull skedari me kërkesën që bëmë në përmbledhjen më lart:

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

Siç e shihni, gjithçka është shumë e qartë. Nëse dëshironi, ky format mund të redaktohet shumë lehtësisht edhe manualisht.

Hierarkia e dosjeve në sistemin e skedarëve përsërit saktësisht hierarkinë e nodave në projekt. Për shembull, një skenar i tillë:

TestMace — një IDE e fuqishme për punë me API

Përmblidhet në sistemin e skedarëve në këto struktura (tregohet vetëm hierarkia e dosjeve, por thelbi është i qartë)

TestMace — një IDE e fuqishme për punë me API

Çka e lehtëson procesin e rishikimit të projektit.

Importi nga Postman

Pas pas lexhimit të lartpërmendur, disa përdorues do të dëshironin të provonin (në fakt?) produktin e ri ose (për çfarë është kjo!) të përdorin atë në projektin e tyre. Megjithatë, migrimi mund të ndalojë një numër të madh zhvillimesh të bëra në Postman. Për këto raste, TestMace mbështet importimin e koleksioneve nga Postman. Aktualisht mbështetet importi pa testet, megjithatë në të ardhmen nuk përjashtohet mbështetje për to.

Planet

Shpresoj se shumë nga ata që e lexuan deri në këtë pikë e pëlqyen produktin tonë. Megjithatë, kjo nuk është gjithçka! Puna mbi produktin po vazhdon me ritme të plota dhe këtu janë disa karakteristika që planifikojmë të shtojmë së shpejti.

Sinkronizimi në cloud

Një nga karakteristikat më të kërkuara. Aktualisht, ne ofrojmë si mundësi sinkronizimin përmes sistemeve të kontrollit të versioneve, për këtë arsye, ne po e bëjmë formatin më miqësor për këtë lloj ruajtjeje. Megjithatë, jo të gjithë u përshtaten këtij mënyre punuese, prandaj planifikohet të shtohet një mekanizëm sinkronizimi që është i njohur për shumë.

CLI

Siç u tha më sipër, produktet e nivelit IDE nuk mund të shkojnë pa integrime të ndryshme me aplikacione ose rrjedha pune ekzistuese. CLI është pikërisht ajo që nevojitet për integrimin e testeve të shkruara në TestMace në procesin e integrimit të vazhdueshëm. Puna mbi CLI po vazhdon me ritme të shpejta, në versionet e hershme do të ketë një projekt me një raport të thjeshtë në konsol. Më vonë, planifikohet të shtohet raportimi në formatin JUnit.

Sistemi i plugineve

Pavarësisht fuqisë sonë, numri i rasteve që kërkojnë zgjidhje është i paanë. Në fund të fundit, ka detyra që janë specifike për një projekt të caktuar. Pikërisht për këtë arsye, ne planifikojmë të shtojmë SDK për zhvillimin e plugineve dhe çdo programues do të mund të shtojë funksionalitet sipas dëshirës.

Zgjerimi i gamës së tipave të nyjeve

Ky set nyjesh nuk mbulon të gjithë rastet e nevojshme për përdoruesin. Nyjet që planifikojmë të shtojmë janë:

  • Nyja Script — transformon dhe vendos të dhënat duke përdorur js dhe API-në përkatëse. Duke përdorur këtë lloj nyje, mund të krijoni diçka si skedarët pre-request dhe post-request në Postman.
  • Nyja GraphQL — mbështetje për graphql
  • Nyja Custom assertion — do të lejojë zgjerimin e setit të assertion-ave ekzistuese në projekt
    Natyrisht, ky nuk është një listë përfundimtare, ajo do të plotësohet vazhdimisht, përfshirë edhe feedback-un tuaj.

FAQ

Çfarë e dallon ju nga Postman?

  1. Koncepti i nodave që lejon praktisht një zgjerim të pakufizuar të funksionalitetit të projektit
  2. Formati i lexueshëm për njerëzit të projektit, duke e ruajtur atë në sistemin e skedarëve, që e lehtëson punën me sistemet e kontrollit të versioneve
  3. Mundësia e krijimit të testeve pa programim dhe mbështetje më e avancuar për js në redaktorin e testeve (plotësimi automatik, analizuesi statik)
  4. Plotësim automatik i avancuar dhe ndriçimi i vlerës aktuale të variablave

A është ky një produkt open-source?

Jo, në këtë moment kodet burimore janë të mbyllura, megjithatë në të ardhmen ne shikojmë mundësinë e hapjes së kodit burimor

Si jetoni ju?)

Përveç versionit falas, ne planifikojmë të lançojmë një version të paguar të produktit. Kjo do të përfshijë së pari gjërat që kërkojnë një pjesë serverike, për shembull, sinkronizimin.

Përfundim

Projekti ynë po ecën me hapa të mëdhenj drejt një lëshimi stabil. Megjithatë, tashmë produkti është në përdorim dhe vlerësimet pozitive nga përdoruesit tanë të hershëm e konfirmojnë këtë. Ne jemi aktivisht në mbledhjen e feedback-ut, sepse pa një bashkëpunim të ngushtë me komunitetin, është e pamundur të ndërtohet një mjet i mirë. Mund të na gjeni këtu:

Faqja zyrtare

Telegram

Slack

Facebook

Issues-tracker

Presim me padurim dëshirat dhe sugjerimet tuaja!

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster