TestMace – galingas IDE, skirtas darbui su API

Sveiki visi! Šiandien norime IT visuomenei pristatyti mūsų produktą – IDE darbui su API TestMace. Galbūt kai kurie iš jūsų jau žino apie mus ankstesni straipsniai. Tačiau nebuvo atlikta išsami įrankio peržiūra, todėl pašaliname šį apgailėtiną trūkumą.

TestMace – galingas IDE, skirtas darbui su API

Motyvacija

Norėčiau pradėti nuo to, kaip mes iš tikrųjų atėjome į šį gyvenimą ir nusprendėme sukurti savo įrankį pažangiam darbui su API. Pradėkime nuo funkcijų, kurias turėtų turėti produktas, sąrašo, apie kurį, mūsų nuomone, galime pasakyti, kad tai yra „IDE darbui su API“:

  • Užklausų ir scenarijų (užklausų sekos) kūrimas ir vykdymas
  • Įvairių testų rašymas
  • Bandomoji karta
  • Darbas su API aprašais, įskaitant importavimą iš tokių formatų kaip Swagger, OpenAPI, WADL ir kt.
  • Šaipūs prašymai
  • Geras palaikymas vienai ar kelioms kalboms rašant scenarijus, įskaitant integraciją su populiariomis bibliotekomis
  • ir tt

Sąrašas gali būti išplėstas, kad atitiktų jūsų skonį. Be to, svarbu sukurti ne tik patį IDE, bet ir tam tikrą infrastruktūrą, tokią kaip debesų sinchronizavimas, komandų eilutės įrankiai, internetinio stebėjimo paslauga ir kt. Galų gale, pastarųjų metų tendencijos mums diktuoja ne tik galingą programos funkcionalumą, bet ir malonią sąsają.

Kam reikalingas toks įrankis? Akivaizdu, kad visi tie, kurie bent kažkaip susiję su API kūrimu ir testavimu, yra kūrėjai ir testuotojai =). Be to, jei pirmiesiems dažnai pakanka vykdyti pavienes užklausas ir paprastus scenarijus, tada bandytojams tai yra vienas iš pagrindinių įrankių, kuris, be kita ko, turėtų apimti galingą testų rašymo mechanizmą su galimybe juos paleisti. CI.

Taigi, vadovaudamiesi šiomis gairėmis, pradėjome kurti savo produktą. Pažiūrėkime, ką pasiekėme šiame etape.

Greita pradžia

Pradėkime nuo pirmosios pažinties su programa. Galite atsisiųsti mūsų svetainėje. Šiuo metu palaikomos visos 3 pagrindinės platformos – Windows, Linux, MacOS. Atsisiųskite, įdiekite, paleiskite. Kai paleidžiate pirmą kartą, galite pamatyti šį langą:

TestMace – galingas IDE, skirtas darbui su API

Spustelėkite pliuso ženklą turinio srities viršuje, kad sukurtumėte pirmąją užklausą. Užklausos skirtukas atrodo taip:

TestMace – galingas IDE, skirtas darbui su API

Pažvelkime į tai išsamiau. Užklausos sąsaja yra labai panaši į populiarių poilsio klientų sąsają, todėl perkėlimas iš panašių įrankių yra lengvesnis. Pateikime pirmąją užklausą url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace – galingas IDE, skirtas darbui su API

Apskritai iš pirmo žvilgsnio atsakymų skydelis taip pat nepateikia jokių staigmenų. Tačiau norėčiau atkreipti jūsų dėmesį į kai kuriuos dalykus:

  1. Atsakymo tekstas pateikiamas medžio pavidalu, kuris, pirma, prideda informacijos turinį ir, antra, leidžia pridėti keletą įdomių funkcijų, apie kurias žemiau
  2. Yra skirtukas Assertions, kuriame rodomas tam tikros užklausos testų sąrašas

Kaip matote, mūsų įrankis gali būti naudojamas kaip patogus poilsio klientas. Tačiau mes čia nebūtume, jei jo galimybės apsiribotų tik užklausų siuntimu. Toliau pateiksiu pagrindines „TestMace“ sąvokas ir funkcijas.

Pagrindinės sąvokos ir funkcijos

Mazgas

„TestMace“ funkcionalumas yra padalintas į skirtingų tipų mazgus. Aukščiau pateiktame pavyzdyje pademonstravome RequestStep mazgo veikimą. Tačiau dabar programoje taip pat yra šių tipų mazgų:

  • Užklausos veiksmas. Tai mazgas, per kurį galite sukurti užklausą. Jame gali būti tik vienas tvirtinimo mazgas kaip antrinis elementas.
  • Teigimas. Mazgas naudojamas testams rašyti. Gali būti tik antrinis mazgo RequestStep mazgas.
  • Aplankas. Leidžia sugrupuoti aplanko ir „RequestStep“ mazgus savyje.
  • Projektas. Tai yra šakninis mazgas, sukuriamas automatiškai, kai sukuriamas projektas. Priešingu atveju jis pakartoja aplanko mazgo funkcijas.
  • Nuoroda. Nuoroda į aplanką arba „RequestStep“ mazgą. Leidžia pakartotinai naudoti užklausas ir scenarijus.
  • ir tt

Mazgai yra įbrėžimų vietose (apačioje kairėje esantis skydelis, naudojamas greitai sukurti „vienkartines“ užklausas) ir projektuose (viršuje kairėje esantis skydelis), prie kurių kalbėsime išsamiau.

Projektas

Kai paleisite programą, viršutiniame kairiajame kampe galite pastebėti vienišą projekto eilutę. Tai yra projekto medžio šaknis. Kai pradedate projektą, sukuriamas laikinas projektas, kurio kelias priklauso nuo jūsų operacinės sistemos. Bet kada galite perkelti projektą į jums patogią vietą.

Pagrindinis projekto tikslas – galimybė išsaugoti patobulinimus failų sistemoje ir toliau juos sinchronizuoti naudojant versijų valdymo sistemas, paleisti scenarijus CI, peržiūrėti pakeitimus ir kt.

Kintamieji

Kintamieji yra vienas iš pagrindinių programos mechanizmų. Tie, kurie dirba su tokiais įrankiais kaip „TestMace“, jau gali suprasti, apie ką mes kalbame. Taigi, kintamieji yra būdas saugoti bendrus duomenis ir palaikyti ryšį tarp mazgų. Pvz., analogas yra aplinkos kintamieji „Postman“ arba „Insomnia“. Tačiau mes nuėjome toliau ir plėtojome temą. „TestMace“ kintamuosius galima nustatyti mazgo lygiu. Bet koks. Taip pat yra mechanizmas, leidžiantis paveldėti kintamuosius iš protėvių ir persidengiančius palikuonių kintamuosius. Be to, yra keletas integruotų kintamųjų, kurių pavadinimai prasideda $. Štai keletas iš jų:

  • $prevStep — nuoroda į ankstesnio mazgo kintamuosius
  • $nextStep — nuoroda į kito mazgo kintamuosius
  • $parent – tas pats, bet tik protėviui
  • $response - atsakymas iš serverio
  • $env - dabartiniai aplinkos kintamieji
  • $dynamicVar - dinaminiai kintamieji, sukurti scenarijaus arba užklausos vykdymo metu

$env - tai iš esmės įprasti projekto mazgo lygio kintamieji, tačiau aplinkos kintamųjų rinkinys kinta priklausomai nuo pasirinktos aplinkos.

Kintamasis pasiekiamas per ${variable_name}
Kintamojo reikšmė gali būti kitas kintamasis arba net visa išraiška. Pavyzdžiui, url kintamasis gali būti tokia išraiška kaip
http://${host}:${port}/${endpoint}.

Atskirai verta paminėti galimybę priskirti kintamuosius scenarijaus vykdymo metu. Pavyzdžiui, dažnai reikia išsaugoti autorizacijos duomenis (žetoną arba visą antraštę), kurie atkeliavo iš serverio po sėkmingo prisijungimo. „TestMace“ leidžia išsaugoti tokius duomenis į vieno iš protėvių dinaminius kintamuosius. Siekiant išvengti susidūrimų su jau esančiais „statiniais“ kintamaisiais, dinaminiai kintamieji dedami į atskirą objektą $dynamicVar.

Scenarijai

Naudodami visas aukščiau pateiktas funkcijas, galite paleisti visus užklausos scenarijus. Pavyzdžiui, objekto sukūrimas -> objekto užklausa -> objekto ištrynimas. Pavyzdžiui, šiuo atveju galite naudoti aplanko mazgą, kad sugrupuotumėte kelis RequestStep mazgus.

Automatinis užbaigimas ir išraiškų paryškinimas

Norint patogiai dirbti su kintamaisiais (ir ne tik), būtinas automatinis užbaigimas. Ir, žinoma, paryškinti išraiškos reikšmę, kad būtų lengviau ir patogiau išsiaiškinti, kam lygus konkretus kintamasis. Būtent taip yra, kai geriau vieną kartą pamatyti, nei šimtą kartų išgirsti:

TestMace – galingas IDE, skirtas darbui su API

Verta paminėti, kad automatinis užbaigimas įgyvendinamas ne tik kintamiesiems, bet ir, pavyzdžiui, antraštėms, tam tikrų antraščių reikšmėms (pavyzdžiui, turinio tipo antraštės automatinis užbaigimas), protokolams ir dar daugiau. Sąrašas nuolat atnaujinamas, kai programa auga.

Anuliuoti / perdaryti

Pakeitimų atšaukimas/perdaryti yra labai patogus dalykas, bet kažkodėl ne visur jis įdiegtas (ne išimtis ir įrankiai, skirti dirbti su API). Bet mes nesame iš tų!) Viso projekto metu įdiegėme anuliavimą/perdarymą, kuris leidžia anuliuoti ne tik konkretaus mazgo redagavimą, bet ir jo sukūrimą, trynimą, perkėlimą ir pan. Svarbiausios operacijos reikalauja patvirtinimo.

Testų kūrimas

Tvirtinimo mazgas yra atsakingas už testų kūrimą. Viena iš pagrindinių savybių yra galimybė kurti testus be programavimo, naudojant įmontuotus redaktorius.

Teigimo mazgas susideda iš tvirtinimų rinkinio. Kiekvienas teiginys turi savo tipą; šiuo metu yra keletas teiginių tipų

  1. Palyginkite reikšmes – tiesiog palyginkite 2 vertes. Yra keletas palyginimo operatorių: lygus, nelygus, didesnis už, didesnis arba lygus, mažesnis už, mažesnis arba lygus.

  2. Contains value – tikrina poeilutės atsiradimą eilutėje.

  3. XPath – patikrina, ar XML parinkiklyje yra tam tikra reikšmė.

  4. „JavaScript“ tvirtinimas yra savavališkas „JavaScript“ scenarijus, kuris grąžina teisingą sėkmės atveju ir klaidingą, kai nepavyksta.

Atkreipiu dėmesį, kad tik paskutinis reikalauja iš vartotojo programavimo įgūdžių, kiti 3 teiginiai kuriami naudojant grafinę sąsają. Pavyzdžiui, kaip atrodo lyginamųjų verčių tvirtinimo kūrimo dialogo langas:

TestMace – galingas IDE, skirtas darbui su API

Vyšna ant torto yra greitas tvirtinimų kūrimas iš atsakymų, tiesiog pažiūrėkite!

TestMace – galingas IDE, skirtas darbui su API

Tačiau tokie tvirtinimai turi akivaizdžių apribojimų, kuriuos galite įveikti naudodami javascript tvirtinimą. O štai TestMace taip pat suteikia patogią aplinką su automatiniu užbaigimu, sintaksės paryškinimu ir net statiniu analizatoriumi.

API aprašymas

„TestMace“ leidžia ne tik naudoti API, bet ir ją dokumentuoti. Be to, pats aprašymas taip pat turi hierarchinę struktūrą ir organiškai dera su likusia projekto dalimi. Be to, šiuo metu galima importuoti API aprašus iš Swagger 2.0 / OpenAPI 3.0 formatų. Pats aprašymas yra ne tik tuščias svoris, bet ir glaudžiai integruotas su likusia projekto dalimi, ypač galimas automatinis URL užpildymas, HTTP antraštės, užklausos parametrai ir kt., o ateityje planuojame pridėti testų. kad atsakymas atitiktų API aprašą.

Bendrinimo mazgas

Atvejis: norėtumėte pasidalinti problemine užklausa ar net visu scenarijumi su kolega arba tiesiog pridėti jį prie klaidos. „TestMace“ taip pat apima šį atvejį: programa leidžia suskirstyti bet kurį URL mazgą ir net pomedį. Nukopijuokite-įklijuokite ir galėsite lengvai perkelti užklausą į kitą įrenginį ar projektą.

Žmogaus skaitomas projektų saugojimo formatas

Šiuo metu kiekvienas mazgas yra saugomas atskirame faile su yml plėtiniu (kaip ir Assertion mazgo atveju), arba aplanke su mazgo pavadinimu ir jame esančiu index.yml failu.
Pavyzdžiui, taip atrodo užklausos failas, kurį sukūrėme anksčiau pateiktoje apžvalgoje:

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

Kaip matote, viskas labai aišku. Jei pageidaujate, šį formatą galima lengvai redaguoti rankiniu būdu.

Failų sistemos aplankų hierarchija visiškai pakartoja projekto mazgų hierarchiją. Pavyzdžiui, toks scenarijus:

TestMace – galingas IDE, skirtas darbui su API

Susieja failų sistemą su tokia struktūra (rodoma tik aplankų hierarchija, bet esmė aiški)

TestMace – galingas IDE, skirtas darbui su API

Tai palengvina projekto peržiūros procesą.

Importuoti iš paštininko

Perskaitę visa tai, kas išdėstyta aukščiau, kai kurie vartotojai norės išbandyti (tiesa?) naują produktą arba (kas nejuokauja!) visiškai jį panaudoti savo projekte. Tačiau migraciją gali sustabdyti daugybė to paties paštininko įvykių. Tokiais atvejais „TestMace“ palaiko kolekcijų importavimą iš „Postman“. Šiuo metu importas be testų yra palaikomas, tačiau neatmetame galimybės juos palaikyti ir ateityje.

Planai

Tikiuosi, kad daugeliui tų, kurie skaitė iki šiol, patiko mūsų produktas. Tačiau tai dar ne viskas! Darbas su produktu įsibėgėja ir štai keletas funkcijų, kurias planuojame greitai pridėti.

Debesų sinchronizavimas

Viena iš labiausiai pageidaujamų funkcijų. Šiuo metu sinchronizavimui siūlome naudoti versijų valdymo sistemas, kurių formatą darome patogesnį šio tipo saugykloms. Tačiau ši darbo eiga tinka ne visiems, todėl planuojame pridėti daugeliui per mūsų serverius pažįstamą sinchronizavimo mechanizmą.

CLI

Kaip minėta aukščiau, IDE lygio produktai negali išsiversti be visų rūšių integracijų su esamomis programomis ar darbo eigomis. CLI yra būtent tai, ko reikia norint integruoti TestMace parašytus testus į nuolatinį integravimo procesą. Darbas su CLI įsibėgėja; ankstyvosiose versijose projektas bus paleistas su paprasta konsolės ataskaita. Ateityje planuojame pridėti ataskaitos išvestį JUnit formatu.

Įskiepių sistema

Nepaisant visos mūsų įrankio galios, atvejų, kuriems reikia sprendimų, rinkinys yra neribotas. Juk yra užduočių, kurios būdingos konkrečiam projektui. Štai kodėl ateityje planuojame pridėti SDK, skirtą įskiepiams kurti, ir kiekvienas kūrėjas galės pridėti funkcijų pagal savo skonį.

Išplečiamas mazgų tipų diapazonas

Šis mazgų rinkinys neapima visų naudotojui reikalingų atvejų. Mazgai, kuriuos planuojama pridėti:

  • Scenarijaus mazgas – konvertuoja ir talpina duomenis naudodamas js ir atitinkamą API. Naudodami šio tipo mazgus galite atlikti tokius veiksmus kaip scenarijus iš anksto ir po užklausos „Postman“.
  • GraphQL mazgas – graphql palaikymas
  • Pasirinktinis tvirtinimo mazgas – leis išplėsti projekte esamų tvirtinimų rinkinį
    Žinoma, tai nėra galutinis sąrašas, jis bus nuolat atnaujinamas dėl, be kita ko, jūsų atsiliepimų.

Dažnai užduodami klausimai

Kuo tu skiri nuo Paštininko?

  1. Mazgų koncepcija, leidžianti beveik be galo išplėsti projekto funkcionalumą
  2. Žmonėms skaitomas projekto formatas su išsaugojimu failų sistemoje, o tai supaprastina darbą naudojant versijų valdymo sistemas
  3. Galimybė kurti testus be programavimo ir pažangesnis js palaikymas testų rengyklėje (automatinis užbaigimas, statinis analizatorius)
  4. Išplėstinis automatinis užbaigimas ir dabartinės kintamųjų reikšmės paryškinimas

Ar tai atvirojo kodo produktas?

Ne, šiuo metu šaltiniai yra uždaryti, bet ateityje svarstome galimybę atverti šaltinius

Iš ko gyveni?)

Kartu su nemokama versija planuojame išleisti ir mokamą produkto versiją. Tai visų pirma apims dalykus, kuriems reikalinga serverio pusė, pavyzdžiui, sinchronizavimą.

išvada

Mūsų projektas dideliais šuoliais juda link stabilaus išleidimo. Tačiau produktas jau gali būti naudojamas, o teigiami atsiliepimai iš mūsų pirmųjų vartotojų yra to įrodymas. Mes aktyviai renkame atsiliepimus, nes be glaudaus bendradarbiavimo su bendruomene neįmanoma sukurti gero įrankio. Mus galite rasti čia:

Oficiali svetainė

Telegram

Palaidas

Facebook

Problemų stebėjimo priemonė

Laukiame Jūsų pageidavimų ir pasiūlymų!

Šaltinis: www.habr.com

Добавить комментарий