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. Постои табот Асерции, кој прикажува листа на тестови за дадено барање

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

Основни концепти и карактеристики

Јазол

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

  • RequestStep. Ова е јазолот преку кој можете да креирате барање. Може да има само еден јазол на Асерција како дете елемент.
  • Тврдење. Јазолот се користи за пишување тестови. Може да биде само дете јазол на јазолот 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 е одговорен за креирање тестови. Една од главните карактеристики е можноста за креирање тестови без програмирање, користејќи вградени уредници.

Јазол за тврдење се состои од збир на тврдења. Секое тврдење има свој тип, во моментот има неколку видови на тврдења

  1. Споредете вредности - едноставно споредете 2 вредности. Постојат неколку споредбени оператори: еднаков, не еднаков, поголем од, поголем или еднаков на, помал од, помал или еднаков на.

  2. Содржи вредност - ја проверува појавата на подниза во низа.

  3. XPath - проверува дали избирачот во XML содржи одредена вредност.

  4. Тврдењето на JavaScript е произволна JavaScript скрипта која враќа true при успех и неточно при неуспех.

Забележувам дека само последното бара програмски вештини од корисникот, а другите 3 тврдења се креирани со помош на графички интерфејс. Еве, на пример, вака изгледа дијалогот за создавање на тврдење за споредување вредности:

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

Шлагот на тортата е брзото создавање на тврдења од одговорите, само погледнете го!

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

Сепак, таквите тврдења имаат очигледни ограничувања, кои можеби ќе сакате да ги користите тврдењата на Javascript за да ги надминете. И тука TestMace, исто така, обезбедува удобно опкружување со автоматско пополнување, истакнување на синтаксата, па дури и статичен анализатор.

Опис на API

TestMace ви овозможува не само да го користите API, туку и да го документирате. Покрај тоа, самиот опис има и хиерархиска структура и органски се вклопува во остатокот од проектот. Покрај тоа, моментално е можно да се увезуваат описи на API од форматите Swagger 2.0 / OpenAPI 3.0. Самиот опис не лежи само на мртва тежина, туку е тесно интегриран со остатокот од проектот, особено, достапно е автоматско пополнување на URL-адреси, HTTP заглавија, параметри за пребарување итн., а во иднина планираме да додадеме тестови за усогласеност на одговорот со описот на API.

Јазол за споделување

Случај: би сакале да споделите проблематично барање или дури и цела скрипта со колега или едноставно да ја прикачите на грешка. TestMace го покрива и овој случај: апликацијата ви овозможува да серилизирате кој било јазол, па дури и поддрво во URL-то. Copy-paste и лесно може да го пренесете барањето на друга машина или проект.

Формат за складирање на проекти читлив за луѓе

Во моментов, секој јазол е зачуван во посебна датотека со наставката yml (како што е случајот со јазолот Assertion), или во папка со името на јазолот и датотеката index.yml во неа.
На пример, вака изгледа датотеката со барање што ја направивме во прегледот погоре:

индекс.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

Ова го олеснува процесот на разгледување на проектот.

Увоз од Поштар

Откако ќе го прочитаат сето горенаведено, некои корисници ќе сакаат да пробаат (нели?) нов производ или (што, по ѓаволите, не се шегува!) целосно да го искористат во својот проект. Сепак, миграцијата може да се запре со голем број случувања во истиот Поштар. За такви случаи, TestMace поддржува увоз на колекции од Postman. Во моментов е поддржан увоз без тестови, но не исклучуваме поддршка во иднина.

Планови

Се надевам дека на многумина од оние кои читале до овој момент им се допадна нашиот производ. Сепак, тоа не е се! Работата на производот е во полн ек и еве неколку карактеристики што планираме да ги додадеме наскоро.

Облачная синхронизација

Една од најбараните карактеристики. Во моментов, предлагаме користење на системи за контрола на верзии за синхронизација, за што го правиме форматот попријател за овој тип на складирање. Сепак, овој работен тек не е погоден за секого, затоа планираме да додадеме механизам за синхронизација познат на многумина преку нашите сервери.

CLI

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

Систем за приклучоци

И покрај сета моќ на нашата алатка, множеството случаи што бараат решенија е неограничено. На крајот на краиштата, постојат задачи кои се специфични за одреден проект. Затоа во иднина планираме да додадеме SDK за развој на приклучоци и секој развивач ќе може да додаде функционалност по свој вкус.

Проширување на опсегот на типови јазли

Овој сет на јазли не ги опфаќа сите случаи што ги бара корисникот. Јазли што се планира да се додадат:

  • Јазол на скрипта - конвертира и поставува податоци користејќи js и соодветниот API. Користејќи го овој тип на јазол, можете да правите работи како скрипти пред барање и по барање во Поштар.
  • GraphQL јазол - поддршка за graphql
  • Прилагоден јазол за тврдење - ќе ви овозможи да го проширите множеството постоечки тврдења во проектот
    Секако, ова не е конечна листа, таа постојано ќе се ажурира поради, меѓу другото, вашите повратни информации.

Често поставувани прашања

По што се разликувате од Поштарот?

  1. Концептот на јазли, кој ви овозможува речиси бескрајно да ја зголемувате функционалноста на проектот
  2. Формат на проект читлив од луѓе со негово зачувување во датотечен систем, што ја поедноставува работата со користење на системи за контрола на верзии
  3. Способност за креирање тестови без програмирање и понапредна js поддршка во уредувачот на тестови (автоматско пополнување, статички анализатор)
  4. Напредно автоматско комплетирање и истакнување на моменталната вредност на променливите

Дали е ова производ со отворен код?

Не, во моментов изворите се затворени, но во иднина ја разгледуваме можноста за отворање на изворите

Од што живееш?)

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

Заклучок

Нашиот проект се движи со скокови и граници кон стабилно ослободување. Сепак, производот веќе може да се користи, а позитивните повратни информации од нашите рани корисници се доказ за тоа. Активно собираме повратни информации, бидејќи без блиска соработка со заедницата е невозможно да се изгради добра алатка. Можете да не најдете овде:

Официјална веб-страница

Телеграма

Гасена

Facebook

Следење на проблеми

Ги очекуваме вашите желби и предлози!

Извор: www.habr.com

Додадете коментар