TestMace - potenca IDE por labori kun APIoj

Saluton al ĉiuj! Hodiaŭ ni volas prezenti al la IT-publiko nian produkton - IDE por labori kun APIoj TestMace. Eble kelkaj el vi jam scias pri ni de antaŭaj artikoloj. Tamen, ne estis ampleksa revizio de la ilo, do ni traktas ĉi tiun bedaŭrindan mankon.

TestMace - potenca IDE por labori kun APIoj

Motivacio

Mi ŝatus komenci per kiel, fakte, ni venis al ĉi tiu vivo kaj decidis krei nian propran ilon por altnivela laboro kun la API. Ni komencu per listo de funkcioj, kiujn produkto devus havi, pri kiu, laŭ nia opinio, ni povas diri, ke ĝi estas "IDE por labori kun API-oj":

  • Krei kaj efektivigi demandojn kaj skriptojn (sekvencoj de demandoj)
  • Verkado de diversaj specoj de testoj
  • Testgeneracio
  • Laborante kun API-priskriboj, inkluzive de importado de formatoj kiel Swagger, OpenAPI, WADL, ktp.
  • Mokantaj petoj
  • Bona subteno por unu aŭ pluraj lingvoj por verki skriptojn, inkluzive de integriĝo kun popularaj bibliotekoj
  • kaj tiel plu.

La listo povas esti vastigita laŭ via gusto. Plie, gravas krei ne nur la IDE mem, sed ankaŭ certan infrastrukturon, kiel nuba sinkronigado, komandliniaj iloj, interreta monitora servo ktp. Fine, la tendencoj de la lastaj jaroj diktas al ni ne nur la potencan funkciecon de la aplikaĵo, sed ankaŭ ĝian agrablan interfacon.

Kiu bezonas tian ilon? Evidente, ĉiuj tiuj, kiuj almenaŭ iel estas ligitaj kun la disvolviĝo kaj testado de API-oj, estas programistoj kaj testistoj =). Plie, se por la unuaj ofte sufiĉas efektivigi unuopaj demandojn kaj simplajn skriptojn, tiam por testantoj ĉi tiu estas unu el la ĉefaj iloj, kiuj, interalie, devus inkluzivi potencan mekanismon por verki testojn kun la kapablo ruli ilin en CI.

Do, sekvante ĉi tiujn gvidliniojn, ni komencis krei nian produkton. Ni vidu, kion ni atingis en ĉi tiu etapo.

Rapida komenco

Ni komencu per unua konatiĝo kun la aplikaĵo. Vi povas elŝuti ĝin en nia retejo. Nuntempe ĉiuj 3 ĉefaj platformoj estas subtenataj - Vindozo, Linukso, MacOS. Elŝutu, instali, lanĉi. Kiam vi lanĉas ĝin por la unua fojo, vi eble vidos la sekvan fenestron:

TestMace - potenca IDE por labori kun APIoj

Alklaku la plus-signon ĉe la supro de la enhavareo por krei vian unuan peton. La demanda langeto aspektas jene:

TestMace - potenca IDE por labori kun APIoj

Ni rigardu ĝin pli detale. La peta interfaco estas tre simila al la interfaco de popularaj ripozklientoj, kio faciligas migradon de similaj iloj. Ni faru la unuan peton al la url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - potenca IDE por labori kun APIoj

Ĝenerale, unuavide, la respondpanelo ankaŭ ne donas surprizojn. Tamen mi ŝatus atentigi vin pri kelkaj punktoj:

  1. La korpo de la respondo estas reprezentita en formo de arbo, kiu unue aldonas informenhavon kaj due permesas aldoni kelkajn interesajn funkciojn pri kiuj sube.
  2. Estas langeto Asertoj, kiu montras liston de testoj por donita peto

Kiel vi povas vidi, nia ilo povas esti uzata kiel oportuna ripoza kliento. Tamen ni ne estus ĉi tie, se ĝiaj kapabloj estus limigitaj nur al sendado de petoj. Poste, mi skizos la bazajn konceptojn kaj funkciojn de TestMace.

Bazaj Konceptoj kaj Trajtoj

Nodo

TestMace-funkcio estas dividita en malsamaj specoj de nodoj. En la supra ekzemplo, ni pruvis la funkciadon de la nodo RequestStep. Tamen, la sekvaj specoj de nodoj nun ankaŭ haveblas en la aplikaĵo:

  • PetoPaŝo. Ĉi tiu estas la nodo per kiu vi povas krei peton. Ĝi povas nur havi unu Asertion-nodon kiel infanelemento.
  • Aserto. La nodo estas uzata por skribi testojn. Povas esti nur infana nodo de la RequestStep nodo.
  • Dosierujo. Permesas vin grupigi Dosierujon kaj RequestStep-nodojn ene de si.
  • Projekto. Ĉi tiu estas la radika nodo, kreita aŭtomate kiam la projekto estas kreita. Alie, ĝi ripetas la funkciojn de la nodo Dosierujo.
  • Ligo. Ligo al la dosierujo aŭ RequestStep nodo. Ebligas al vi reuzi demandojn kaj skriptojn.
  • kaj tiel plu.

La nodoj troviĝas en grataĵoj (la panelo maldekstre malsupre, uzata por rapide krei "unufojajn" demandojn) kaj en projektoj (la panelo supre maldekstre), pri kiuj ni pritraktos pli detale.

La projekto

Kiam vi lanĉas la aplikaĵon, vi eble rimarkos solan Projektan linion en la supra maldekstra angulo. Ĉi tio estas la radiko de la projektarbo. Kiam vi komencas projekton, provizora projekto estas kreita, kies vojo dependas de via operaciumo. En ajna momento vi povas movi la projekton al loko oportuna por vi.

La ĉefa celo de la projekto estas la kapablo konservi evoluojn en la dosiersistemo kaj plu sinkronigi ilin per versio-kontrolsistemoj, ruli skriptojn en CI, revizii ŝanĝojn ktp.

Variabloj

Variabloj estas unu el la ŝlosilaj mekanismoj de aplikaĵo. Tiuj el vi, kiuj laboras kun iloj kiel TestMace, eble jam havas ideon pri tio, pri kio ni parolas. Do, variabloj estas maniero stoki komunajn datumojn kaj komuniki inter nodoj. Analogo, ekzemple, estas mediaj variabloj en Postman aŭ Sendormeco. Tamen ni iris plu kaj disvolvis la temon. En TestMace, variabloj povas esti agorditaj ĉe la nodnivelo. Ajna. Ekzistas ankaŭ mekanismo por heredado de variabloj de prapatroj kaj interkovrado de variabloj en posteuloj. Krome estas kelkaj enkonstruitaj variabloj, la nomoj de la enkonstruitaj variabloj komenciĝas per $. Jen kelkaj el ili:

  • $prevStep — ligo al variabloj de la antaŭa nodo
  • $nextStep — ligo al variabloj de la sekva nodo
  • $parent - la sama afero, sed nur por la praulo
  • $response - respondo de la servilo
  • $env - aktualaj mediovariabloj
  • $dynamicVar - dinamikaj variabloj kreitaj dum skripto aŭ demanda ekzekuto

$env - ĉi tiuj estas esence ordinaraj Projekt-nodnivelaj variabloj, tamen la aro de mediovariabloj ŝanĝiĝas depende de la elektita medio.

La variablo estas alirebla per ${variable_name}
La valoro de variablo povas esti alia variablo, aŭ eĉ tuta esprimo. Ekzemple, la url-variablo povas esti esprimo kiel
http://${host}:${port}/${endpoint}.

Aparte, indas noti la eblecon atribui variablojn dum skripto-ekzekuto. Ekzemple, ofte necesas konservi rajtigajn datumojn (ĵetonon aŭ la tutan kaplinion) kiuj venis de la servilo post sukcesa ensaluto. TestMace permesas vin konservi tiajn datumojn en dinamikajn variablojn de unu el la prapatroj. Por eviti koliziojn kun jam ekzistantaj "senmovaj" variabloj, dinamikaj variabloj estas metitaj en apartan objekton. $dynamicVar.

Scenaroj

Uzante ĉiujn ĉi-suprajn funkciojn, vi povas ruli tutajn demandajn skriptojn. Ekzemple, kreado de ento -> pridemando de ento -> forigo de ento. En ĉi tiu kazo, ekzemple, vi povas uzi la dosierujon por grupigi plurajn RequestStep-nodojn.

Aŭtomata kompletigo kaj esprimo reliefigo

Por oportuna laboro kun variabloj (kaj ne nur) estas necesa aŭtokompleto. Kaj kompreneble, reliefigante la valoron de esprimo por faciligi kaj pli oportune klarigi al kio aparta variablo estas egala. Ĝuste tia estas, kiam estas pli bone vidi unufoje ol aŭdi cent fojojn:

TestMace - potenca IDE por labori kun APIoj

Indas noti, ke aŭtomata kompletigo estas efektivigita ne nur por variabloj, sed ankaŭ, ekzemple, por kaplinioj, valoroj de certaj kaplinioj (ekzemple, aŭtomata kompletigo por la Enhavo-Tipo-kapo), protokoloj kaj multe pli. La listo estas konstante ĝisdatigita dum la aplikaĵo kreskas.

Malfari/refari

Malfari/refari ŝanĝojn estas tre oportuna afero, sed ial ĝi ne estas efektivigita ĉie (kaj iloj por labori kun API-oj ne estas escepto). Sed ni ne estas unu el tiuj!) Ni efektivigis malfari/refari tra la tuta projekto, kio ebligas malfari ne nur redaktadon de specifa nodo, sed ankaŭ ĝian kreadon, forigon, movon ktp. La plej kritikaj operacioj postulas konfirmon.

Kreante testojn

La Asertion-nodo respondecas pri kreado de testoj. Unu el la ĉefaj trajtoj estas la kapablo krei testojn sen programado, uzante enkonstruitajn redaktilojn.

Asertion-nodo konsistas el aro de asertoj. Ĉiu aserto havas sian propran tipon; nuntempe ekzistas pluraj specoj de asertoj

  1. Komparu valorojn - simple komparas 2 valorojn. Estas pluraj komparaj operatoroj: egala, ne egala, pli granda ol, pli granda ol aŭ egala al, malpli ol, malpli ol aŭ egala al.

  2. Enhavas valoron - kontrolas la aperon de subĉeno en ĉeno.

  3. XPath - kontrolas ke la elektilo en XML enhavas certan valoron.

  4. Ĝavaskripto-aserto estas arbitra Ĝavaskripto-skripto, kiu resendas vera ĉe sukceso kaj malvera ĉe malsukceso.

Mi rimarkas, ke nur la lasta postulas programajn kapablojn de la uzanto, la aliaj 3 asertoj estas kreitaj per grafika interfaco. Jen, ekzemple, kiel aspektas la dialogo por krei aserton pri kompara valoro:

TestMace - potenca IDE por labori kun APIoj

La glaciaĵo sur la kuko estas la rapida kreado de asertoj el respondoj, nur rigardu ĝin!

TestMace - potenca IDE por labori kun APIoj

Tamen tiaj asertoj havas evidentajn limigojn, kiujn vi eble volas uzi javaskripton por venki. Kaj ĉi tie TestMace ankaŭ provizas komfortan medion kun aŭtomata kompletigo, sintaksa reliefigo kaj eĉ senmova analizilo.

API Priskribo

TestMace permesas al vi ne nur uzi la API, sed ankaŭ dokumenti ĝin. Krome, la priskribo mem ankaŭ havas hierarkian strukturon kaj konvenas organike al la resto de la projekto. Krome, nuntempe eblas importi API-priskribojn de Swagger 2.0 / OpenAPI 3.0 formatoj. La priskribo mem ne nur kuŝas morta pezo, sed estas proksime integrita kun la resto de la projekto, precipe, aŭtomata kompletigo de URL-oj, HTTP-kapoj, konsultaj parametroj ktp. estas disponebla, kaj estonte ni planas aldoni testojn. por konformeco de la respondo kun la API-priskribo.

Kundivida nodo

Kazo: vi ŝatus kunhavigi probleman peton aŭ eĉ tutan skripton kun kolego aŭ simple ligi ĝin al cimo. TestMace ankaŭ kovras ĉi tiun kazon: la aplikaĵo permesas seriigi ajnan nodon kaj eĉ subarbon en URL. Kopiu-algluu kaj vi povas facile translokigi la peton al alia maŝino aŭ projekto.

Hom-legebla projekto-stokado-formato

Nuntempe, ĉiu nodo estas konservita en aparta dosiero kun la etendaĵo yml (kiel estas la kazo de la nodo Aserto), aŭ en dosierujo kun la nomo de la nodo kaj la dosiero index.yml en ĝi.
Ekzemple, jen kiel aspektas la peta dosiero, kiun ni faris en la supra revizio:

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

Kiel vi povas vidi, ĉio estas tre klara. Se vi deziras, ĉi tiu formato povas esti facile redaktita permane.

La hierarkio de dosierujoj en la dosiersistemo tute ripetas la hierarkion de nodoj en la projekto. Ekzemple, skripto kiel:

TestMace - potenca IDE por labori kun APIoj

Mapas la dosiersistemon al la sekva strukturo (nur la dosierujo-hierarkio montriĝas, sed la esenco estas klara)

TestMace - potenca IDE por labori kun APIoj

Ĉi tio faciligas la procezon de revizio de la projekto.

Importo de Poŝtisto

Post legi ĉion supre, iuj uzantoj volos provi (ĉu?) novan produkton aŭ (kio diable ne ŝercas!) tute uzi ĝin en sia projekto. Tamen, migrado povas esti ĉesigita per granda nombro da evoluoj en la sama Leterportisto. Por tiaj kazoj, TestMace subtenas importi kolektojn de Postman. Nuntempe, importadoj sen testoj estas subtenataj, sed ni ne ekskludas subteni ilin estonte.

Planoj

Mi esperas, ke multaj el tiuj, kiuj legis ĝis ĉi tiu punkto, ŝatis nian produkton. Tamen tio ne estas ĉio! Laboro pri la produkto estas en plena svingo kaj jen kelkaj funkcioj, kiujn ni planas aldoni baldaŭ.

Nuba sinkronigo

Unu el la plej petitaj funkcioj. Nuntempe ni proponas uzi sistemojn de kontrolo de versioj por sinkronigado, por kio ni faras la formaton pli amika por ĉi tiu tipo de stokado. Tamen ĉi tiu laborfluo ne taŭgas por ĉiuj, do ni planas aldoni sinkronigan mekanismon konatan al multaj per niaj serviloj.

CLI

Kiel menciite supre, IDE-nivelaj produktoj ne povas malhavi ĉiajn integriĝojn kun ekzistantaj aplikoj aŭ laborfluoj. La CLI estas ĝuste tio, kio necesas por integri testojn skribitajn en TestMace en la kontinuan integrigan procezon. Laboro pri la CLI estas en plena svingo; fruaj versioj lanĉos la projekton kun simpla konzola raporto. Estonte ni planas aldoni raportan eligon en formato JUnit.

Kromprogramo

Malgraŭ la tuta potenco de nia ilo, la aro de kazoj, kiuj postulas solvojn, estas senlima. Post ĉio, estas taskoj, kiuj estas specifaj por aparta projekto. Tial estonte ni planas aldoni SDK por disvolvi kromaĵojn kaj ĉiu programisto povos aldoni funkciojn laŭ sia plaĉo.

Vastigante la gamon de nodtipoj

Ĉi tiu aro de nodoj ne kovras ĉiujn kazojn postulatajn de la uzanto. Nodoj kiuj estas planitaj esti aldonitaj:

  • Skripto-nodo - konvertas kaj metas datumojn uzante js kaj la respondan API. Uzante ĉi tiun tipon de nodo, vi povas fari aferojn kiel antaŭpetojn kaj postpetajn skriptojn en Postman.
  • GraphQL-nodo - graphql-subteno
  • Propra aserta nodo - permesos al vi vastigi la aron de ekzistantaj asertoj en la projekto
    Kompreneble, ĉi tio ne estas fina listo; ĝi estos konstante ĝisdatigita pro, interalie, viaj rimarkoj.

Oftaj Demandoj

Kiel vi diferencas de Postman?

  1. La koncepto de nodoj, kiu permesas vin preskaŭ senfine grimpi la funkciecon de la projekto
  2. Homlegebla projektformato kun konservado de ĝi en dosiersistemo, kiu simpligas laboron per versio-kontrolsistemoj
  3. Kapablo krei testojn sen programado kaj pli altnivela js-subteno en la testa redaktilo (aŭtomatkompleto, senmova analizilo)
  4. Altnivela aŭtomata kompletigo kaj reliefigo de la nuna valoro de variabloj

Ĉu ĉi tio estas malfermfonta produkto?

Ne, nuntempe la fontoj estas fermitaj, sed estonte ni pripensas la eblecon malfermi la fontojn

De kio vi vivas?)

Kune kun la senpaga versio, ni planas liberigi pagitan version de la produkto. Ĝi ĉefe inkluzivos aferojn, kiuj postulas servilan flankon, ekzemple sinkronigon.

konkludo

Nia projekto moviĝas per saltoj kaj saltegoj al stabila liberigo. Tamen, la produkto jam povas esti uzata, kaj la pozitivaj reagoj de niaj fruaj uzantoj estas pruvo de tio. Ni aktive kolektas komentojn, ĉar sen proksima kunlaboro kun la komunumo estas neeble konstrui bonan ilon. Vi povas trovi nin ĉi tie:

Oficiala retejo

Telegramo

slack

Facebook

Spurilo de problemoj

Ni antaŭĝojas viajn dezirojn kaj sugestojn!

fonto: www.habr.com

Aldoni komenton