{"id":54187,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-moshhnaya-ide-dlya-raboty-s-api"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"testmace-moshhnaya-ide-dlya-raboty-s-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Salut tuturor! Ast\u0103zi vrem s\u0103 v\u0103 prezent\u0103m produsul nostru \u2014 un IDE pentru lucrul cu API-uri <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Poate c\u0103 unii dintre voi \u0219tiu deja despre noi din <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">articolele anterioare<\/a><\/noindex>. Cu toate acestea, nu a existat o prezentare general\u0103 cuprinz\u0103toare a instrumentului, a\u0219a c\u0103 remediem aceast\u0103 nepl\u0103cere.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/798c0783510a07e7fd162bdf14151c29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"motivaciya\">Motiva\u021bia<\/h1>\n<p><\/p>\n<p>Ar trebui s\u0103 \u00eencepem cu modul \u00een care am ajuns \u00een aceast\u0103 situa\u021bie \u0219i am decis s\u0103 dezvolt\u0103m propriul nostru instrument pentru lucrul avansat cu API. Vom \u00eencepe cu lista func\u021bionalit\u0103\u021bilor pe care ar trebui s\u0103 le aib\u0103 produsul despre care, \u00een opinia noastr\u0103, se poate spune c\u0103 este \u201eIDE pentru lucrul cu API\u201d:<\/p>\n<p><\/p>\n<ul>\n<li>Crearea \u0219i executarea de solicit\u0103ri \u0219i scripturi (secven\u021be de solicit\u0103ri)<\/li>\n<li>Scrierea diferitelor tipuri de teste<\/li>\n<li>Generarea de teste<\/li>\n<li>Lucrul cu descrierile API-ului, inclusiv importul din formate precum Swagger, OpenAPI, WADL etc.<\/li>\n<li>Mocking-ul solicit\u0103rilor<\/li>\n<li>O bun\u0103 suportare a unuia sau mai multor limbaje de programare pentru scrierea scripturilor, inclusiv integrarea cu biblioteci populare<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Lista poate fi completat\u0103 dup\u0103 preferin\u021be. Este important s\u0103 cre\u0103m nu doar IDE-ul \u00een sine, ci \u0219i o anumit\u0103 infrastructur\u0103, precum sincronizarea \u00een cloud, instrumente de linie de comand\u0103, servicii de monitorizare online etc. \u00cen cele din urm\u0103, tendin\u021bele din ultimii ani ne impun nu doar un func\u021bional bogat, ci \u0219i o interfa\u021b\u0103 pl\u0103cut\u0103.<\/p>\n<p><\/p>\n<p>Pentru cine este destinat un astfel de instrument? Evident, pentru to\u021bi cei care sunt cumva implica\u021bi \u00een dezvoltarea \u0219i testarea API-urilor \u2014 dezvoltatori \u0219i testeri =). De cele mai multe ori, pentru primii este suficient s\u0103 execute solicit\u0103ri unice \u0219i scenarii simple, \u00een timp ce pentru testeri acesta este unul dintre principalele instrumente, care, pe l\u00e2ng\u0103 alte func\u021bionalit\u0103\u021bi, ar trebui s\u0103 includ\u0103 un mecanism puternic pentru scrierea testelor cu posibilitatea de a le rula \u00een CI.<\/p>\n<p><\/p>\n<p>A\u0219adar, urm\u00e2nd aceste orient\u0103ri, am \u00eenceput s\u0103 ne cre\u0103m produsul. S\u0103 vedem ce am realizat p\u00e2n\u0103 acum.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Pornire rapid\u0103<\/h1>\n<p><\/p>\n<p>S\u0103 \u00eencepem cu prima \u00eent\u00e2lnire cu aplica\u021bia. O pute\u021bi desc\u0103rca <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">pe site-ul nostru<\/a><\/noindex>. \u00cen prezent, sunt suportate toate cele 3 platforme principale \u2014 Windows, Linux, MacOS. Desc\u0103rca\u021bi, instala\u021bi, rula\u021bi. La prima rulare, pute\u021bi vedea fereastra urm\u0103toare:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Face\u021bi clic pe plusul din partea de sus a zonei de con\u021binut pentru a crea prima solicitare. Tab-ul de solicit\u0103ri arat\u0103 astfel:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S\u0103 ne concentr\u0103m pu\u021bin mai \u00een detaliu. Interfa\u021ba cererii seam\u0103n\u0103 foarte mult cu interfa\u021ba clien\u021bilor rest populari, ceea ce u\u0219ureaz\u0103 migrarea de la astfel de instrumente. S\u0103 facem prima cerere la url <noindex><a rel=\"nofollow\" href=\"https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8\">https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cen general, la prima vedere, panoul de r\u0103spuns nici nu aduce vreo surpriz\u0103. Totu\u0219i, vreau s\u0103 subliniez c\u00e2teva puncte:<\/p>\n<p><\/p>\n<ol>\n<li>Corpul r\u0103spunsului are o reprezentare sub form\u0103 de arbore, ceea ce, pe de o parte, adaug\u0103 informativitate \u0219i, pe de alt\u0103 parte, permite ad\u0103ugarea unor caracteristici interesante, despre care voi vorbi mai jos.<\/li>\n<li>Exist\u0103 o fil\u0103 numit\u0103 Assertions, care afi\u0219eaz\u0103 lista testelor pentru aceast\u0103 cerere.<\/li>\n<\/ol>\n<p><\/p>\n<p>Dup\u0103 cum se poate observa, instrumentul nostru poate fi utilizat ca un client rest convenabil. Totu\u0219i, nu ne-am adunat aici dac\u0103 capacit\u0103\u021bile sale s-ar limita doar la trimiterea cererilor. Mai departe, voi prezenta conceptele de baz\u0103 \u0219i func\u021bionalit\u0103\u021bile TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Conceptele \u0219i func\u021bionalit\u0103\u021bile principale<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Nod<\/h2>\n<p><\/p>\n<p>Func\u021bionalitatea TestMace este \u00eemp\u0103r\u021bit\u0103 \u00een diferite tipuri de noduri. \u00cen exemplul de mai sus, am demonstrat func\u021bionarea nodului RequestStep. Totu\u0219i, \u00een aplica\u021bie sunt disponibile \u0219i urm\u0103toarele tipuri de noduri:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Acesta este nodul prin care se poate crea o cerere. Ca element copil, poate avea doar un singur nod Assertion.<\/li>\n<li>Assertion. Nodul este folosit pentru a scrie teste. Poate fi un nod copil doar pentru nodul RequestStep.<\/li>\n<li>Folder. Permite gruparea nodurilor Folder \u0219i RequestStep \u00een interiorul s\u0103u.<\/li>\n<li>Project. Acesta este nodul r\u0103d\u0103cin\u0103, creat automat la crearea unui proiect. \u00cen rest, repet\u0103 func\u021bionalit\u0103\u021bile nodului Folder.<\/li>\n<li>Link. Leg\u0103tur\u0103 c\u0103tre un nod Folder sau RequestStep. Permite reutilizarea cererilor \u0219i scenariilor.<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nodurile sunt situate \u00een scratches (panoul din st\u00e2nga jos, care serve\u0219te pentru crearea rapid\u0103 a cererilor \u201ede o singur\u0103 utilizare\u201d) \u0219i \u00een project (panoul din st\u00e2nga sus), pe care ne vom opri \u00een mod detaliat.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Proiect<\/h2>\n<p><\/p>\n<p>C\u00e2nd a\u021bi lansat aplica\u021bia, a\u021bi putut observa o singur\u0103 linie Project \u00een col\u021bul din st\u00e2nga sus. Aceasta este r\u0103d\u0103cina arborelui proiectului. Atunci c\u00e2nd se lanseaz\u0103 un proiect, se creeaz\u0103 un proiect temporar, a c\u0103rui cale depinde de sistemul dumneavoastr\u0103 de operare. \u00cen orice moment, pute\u021bi muta proiectul \u00eentr-un loc convenabil pentru dumneavoastr\u0103.<\/p>\n<p><\/p>\n<p>Principala destina\u021bie a proiectului este posibilitatea de a salva progresul \u00een sistemul de fi\u0219iere \u0219i de a realiza sincronizarea ulterioar\u0103 prin sisteme de control al versiunilor, rularea scenariilor \u00een CI, revizuirea modific\u0103rilor etc.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variabile<\/h2>\n<p><\/p>\n<p>Variabilele sunt un mecanism cheie al aplica\u021biei. Cei dintre voi care lucreaz\u0103 cu instrumente precum TestMace probabil c\u0103 \u0219i-au dat deja seama despre ce este vorba. A\u0219adar, variabilele sunt o modalitate de a p\u0103stra date comune \u0219i de a comunica \u00eentre noduri. Un exemplu ar fi variabilele de mediu \u00een Postman sau Insomnia. Cu toate acestea, noi am mers mai departe \u0219i am dezvoltat subiectul. \u00cen TestMace, variabilele pot fi setate la nivel de nod. Orice nod. De asemenea, exist\u0103 un mecanism de mo\u0219tenire a variabilelor de la p\u0103rin\u021bi \u0219i de suprascriere a variabilelor \u00een descenden\u021bi. \u00cen plus, exist\u0103 un set de variabile \u00eencorporate, numele variabilelor \u00eencorporate \u00eencep cu <code>$<\/code>. Iat\u0103 c\u00e2teva dintre ele:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 referin\u021b\u0103 la variabilele nodului anterior<\/li>\n<li><code>$nextStep<\/code> \u2014 referin\u021b\u0103 la variabilele nodului urm\u0103tor<\/li>\n<li><code>$parent<\/code> \u2014 acela\u0219i lucru, dar pentru p\u0103rinte<\/li>\n<li><code>$response<\/code> \u2014 r\u0103spuns de la server<\/li>\n<li><code>$env<\/code> \u2014 variabilele de mediu curente<\/li>\n<li><code>$dynamicVar<\/code> \u2014 variabile dinamice, create \u00een timpul execu\u021biei scenariului sau al cererii<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 acestea sunt, practic, variabile obi\u0219nuite la nivelul nodului Project, \u00eens\u0103 setul de variabile de mediu se schimb\u0103 \u00een func\u021bie de mediul selectat. <\/p>\n<p><\/p>\n<p>Accesul la variabil\u0103 se face prin <code>${variable_name}<\/code><br \/>\nCa valoare a variabilei poate fi o alt\u0103 variabil\u0103 sau chiar o \u00eentreag\u0103 expresie. De exemplu, ca variabil\u0103 url poate fi o expresie de forma<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Merit\u0103 men\u021bionat\u0103 \u00een mod special posibilitatea de a atribui variabile \u00een timpul execu\u021biei scriptului. De exemplu, adesea apare necesitatea de a salva datele de autorizare (token-ul sau \u00eentregul antet) care au venit de la server dup\u0103 un login reu\u0219it. TestMace permite salvarea acestor date \u00een variabile dinamice ale unuia dintre str\u0103mo\u0219i. Pentru a evita coliziunile cu variabilele \u201estatice\u201d existente, variabilele dinamice sunt plasate \u00eentr-un obiect separat. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Scenarii<\/h2>\n<p><\/p>\n<p>Folosind toate aceste posibilit\u0103\u021bi, pute\u021bi executa \u00eentregi scenarii de cereri. De exemplu, crearea unei entit\u0103\u021bi -&gt; cererea entit\u0103\u021bii -&gt; \u0219tergerea entit\u0103\u021bii. \u00cen acest caz, pute\u021bi folosi nodul Folder pentru a grupa mai multe noduri RequestStep.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Autocompletare \u0219i eviden\u021bierea valorii expresiei<\/h2>\n<p><\/p>\n<p>Pentru o utilizare convenabil\u0103 a variabilelor (\u0219i nu numai) este necesar\u0103 completarea automat\u0103. \u0218i, desigur, eviden\u021bierea valorii expresiei, pentru a fi mai u\u0219or \u0219i mai confortabil s\u0103 clarific\u0103m la ce valoreaz\u0103 fiecare variabil\u0103. Aici este un caz \u00een care este mai bine s\u0103 vezi o dat\u0103 dec\u00e2t s\u0103 auzi de o sut\u0103 de ori:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se cuvine s\u0103 men\u021bion\u0103m c\u0103 completarea automat\u0103 este implementat\u0103 nu doar pentru variabile, ci \u0219i, de exemplu, pentru titluri, valorile anumitor titluri (de exemplu, completarea automat\u0103 pentru titlul Content-Type), protocoale \u0219i multe altele. Lista este constant actualizat\u0103 pe m\u0103sur\u0103 ce aplica\u021bia cre\u0219te.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Anulare \/ refacere<\/h2>\n<p><\/p>\n<p>Anularea \/ refacerea modific\u0103rilor este o func\u021bie foarte util\u0103, totu\u0219i, dintr-un motiv oarecare, nu este implementat\u0103 peste tot (instrumentele pentru lucrul cu API-ul nu fac excep\u021bie). Dar noi nu facem parte din ace\u0219ti!) Anularea \/ refacerea este implementat\u0103 \u00een cadrul \u00eentregului proiect, ceea ce permite anularea nu doar a edit\u0103rii unei anumite nod, ci \u0219i a cre\u0103rii, \u0219tergerii, mut\u0103rii acesteia etc. Opera\u021biile cele mai critice necesit\u0103 confirmare.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Crearea testelor<\/h2>\n<p><\/p>\n<p>Crearea testelor este responsabilitatea nodului Assertion. Una dintre tr\u0103s\u0103turile principale este capacitatea de a crea teste f\u0103r\u0103 programare, folosind editorii \u00eencorpora\u021bi. <\/p>\n<p><\/p>\n<p>Nodul Assertion este compus dintr-un set de aser\u021biuni. Fiecare aser\u021biune are tipul s\u0103u, \u00een prezent exist\u00e2nd mai multe tipuri de aser\u021biuni.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compararea valorilor \u2014 compar\u0103 pur \u0219i simplu 2 valori. Exist\u0103 mai mul\u021bi operatori de compara\u021bie: \u201eegal\u201d, \u201enu este egal\u201d, \u201emai mare\u201d, \u201emai mare sau egal\u201d, \u201emai mic\u201d, \u201emai mic sau egal\u201d.<\/p>\n<p>\n<\/li>\n<li>\n<p>Con\u021bine valoare \u2014 verific\u0103 includerea unui substring \u00eentr-un string.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 verific\u0103 dac\u0103 un selector din XML are o anumit\u0103 valoare.<\/p>\n<p>\n<\/li>\n<li>\n<p>Aser\u021biune JavaScript \u2014 un script arbitrar scris \u00een limbajul JavaScript, care returneaz\u0103 true \u00een cazul succesului \u0219i false \u00een cazul e\u0219ecului.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Observ c\u0103 numai ultima necesit\u0103 abilit\u0103\u021bi de programare din partea utilizatorului, celelalte 3 aser\u021biuni sunt create cu ajutorul interfe\u021bei grafice. Iat\u0103, de exemplu, cum arat\u0103 dialogul de creare a unei aser\u021biuni de comparare a valorilor:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cirea\u0219a de pe tort este crearea rapid\u0103 a aser\u021biunilor din r\u0103spuns, doar prive\u0219te la asta!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cu toate acestea, aceste aser\u021biuni au limit\u0103ri evidente, \u00een fa\u021ba c\u0103rora po\u021bi folosi aser\u021biunea JavaScript. \u0218i aici TestMace ofer\u0103, de asemenea, un mediu confortabil cu completare automat\u0103, eviden\u021bierea sintaxei \u0219i chiar un analist static.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Descriere API<\/h2>\n<p><\/p>\n<p>TestMace permite nu doar utilizarea API-ului, ci \u0219i documentarea acestuia. Descrierea are, de asemenea, o structur\u0103 ierarhic\u0103 \u0219i se integreaz\u0103 organic \u00een restul proiectului. \u00cen plus, \u00een acest moment exist\u0103 posibilitatea de a importa descrierea API din formatele Swagger 2.0 \/ OpenAPI 3.0. Descrierea nu st\u0103 doar ca un bagaj mort, ci se integreaz\u0103 str\u00e2ns cu restul proiectului, \u00een special oferind completarea automat\u0103 a URL-urilor, anteturilor HTTP, parametrilor de interogare \u0219i altele, iar \u00een viitor planific\u0103m s\u0103 ad\u0103ug\u0103m teste pentru conformitatea r\u0103spunsului cu descrierea API-ului.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Partajarea nodurilor<\/h2>\n<p><\/p>\n<p>Caz: \u021bi-ar pl\u0103cea s\u0103 partajezi o cerere problematic\u0103 sau chiar un \u00eentreg scenariu cu un coleg sau pur \u0219i simplu s\u0103 o atasezi la un bug. TestMace acoper\u0103 \u0219i acest caz: aplica\u021bia permite serializarea oric\u0103rui nod \u0219i chiar a subarborescen\u021bei \u00een URL. Copy-paste \u0219i deja ai transferat cu u\u0219urin\u021b\u0103 cererea pe o alt\u0103 ma\u0219in\u0103 sau proiect.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Format de stocare u\u0219or de citit pentru proiect<\/h2>\n<p><\/p>\n<p>\u00cen prezent, fiecare nod este stocat \u00eentr-un fi\u0219ier separat cu extensia yml (ca \u00een cazul nodului Assertion), sau \u00eentr-un folder cu numele nodului \u0219i un fi\u0219ier index.yml \u00een interiorul acestuia.<br \/>\nIat\u0103 cum arat\u0103, de exemplu, fi\u0219ierul cu cererea pe care am realizat-o \u00een revizuirea de mai sus:<\/p>\n<p>\n<b class=\"spoiler_title\">index.yml<\/b><\/p>\n<pre><code class=\"ruby\">children: []\nvariables: {}\ntype: RequestStep\nassignVariables: []\nrequestData:\n  request:\n    method: GET\n    url: 'https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8'\n  headers: []\n  disabledInheritedHeaders: []\n  params: []\n  body:\n    type: Json\n    jsonBody: ''\n    xmlBody: ''\n    textBody: ''\n    formData: []\n    file: ''\n    formURLEncoded: []\n  strictSSL: Inherit\nauthData:\n  type: inherit\nname: Scratch 1<\/code><\/pre>\n<p><\/p>\n<p>Dup\u0103 cum po\u021bi vedea, totul este extrem de clar. Dac\u0103 dore\u0219ti, acest format este destul de confortabil de editat \u0219i manual.<\/p>\n<p><\/p>\n<p>Ierarhia folderelor \u00een sistemul de fi\u0219iere reproduce complet ierarhia nodurilor din proiect. De exemplu, un scenariu de gen:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Se mappeaz\u0103 \u00een sistemul de fi\u0219iere pe urm\u0103toarea structur\u0103 (doar ierarhia folderelor este ar\u0103tat\u0103, dar ideea este clar\u0103)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un IDE puternic pentru lucrul cu API-uri\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ceea ce faciliteaz\u0103 procesul de revizuire a proiectului.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importul din Postman<\/h2>\n<p><\/p>\n<p>Citind tot ce a fost prezentat mai sus, unii utilizatori ar putea dori s\u0103 \u00eencerce (nu-i a\u0219a?) noul produs sau (cine \u0219tie?) s\u0103-l foloseasc\u0103 pe deplin \u00een proiectul lor. Cu toate acestea, migrarea poate fi oprit\u0103 de un num\u0103r mare de lucr\u0103ri realizate \u00een acela\u0219i Postman. Pentru astfel de cazuri, TestMace suport\u0103 importul colec\u021biilor din Postman. \u00cen acest moment, se suport\u0103 imporul f\u0103r\u0103 teste, dar \u00een viitor nu excludem \u0219i suportul acestora.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Planuri<\/h1>\n<p><\/p>\n<p>Sper c\u0103 mul\u021bi dintre cei care au citit p\u00e2n\u0103 aici au g\u0103sit produsul nostru pe plac. Totu\u0219i, asta nu e tot! Lucr\u0103rile la produs continu\u0103 cu av\u00e2nt \u0219i iat\u0103 c\u00e2teva caracteristici pe care pl\u0103nuim s\u0103 le ad\u0103ug\u0103m \u00een cur\u00e2nd.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sincronizare \u00een cloud<\/h2>\n<p><\/p>\n<p>Una dintre cele mai solicitate caracteristici. \u00cen prezent, oferim ca solu\u021bie de sincronizare utilizarea sistemelor de control al versiunilor, de aceea facem formatul mai prietenos pentru acest tip de stocare. Totu\u0219i, nu toat\u0103 lumea prefer\u0103 acest flux de lucru, a\u0219a c\u0103 pl\u0103nuim s\u0103 ad\u0103ug\u0103m un mecanism de sincronizare obi\u0219nuit, cunoscut de mul\u021bi, prin intermediul serverelor noastre. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Dup\u0103 cum s-a men\u021bionat anterior, produsele de tip IDE nu sunt complete f\u0103r\u0103 diverse integra\u021bii cu aplica\u021biile existente sau cu fluxurile de lucru. CLI este exact ceea ce avem nevoie pentru integrarea testelor scrise \u00een TestMace \u00een procesul de integrare continu\u0103. Lucr\u0103rile la CLI se desf\u0103\u0219oar\u0103 intens, iar \u00een versiunile timpurii va exista un proiect care va genera un raport simplu \u00een consol\u0103. Ulterior, ne propunem s\u0103 ad\u0103ug\u0103m o ie\u0219ire a raportului \u00een format JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Sistem de pluginuri<\/h2>\n<p><\/p>\n<p>\u00cen ciuda puterii instrumentului nostru, setul de cazuri care necesit\u0103 solu\u021bionare este nelimitat. La urma urmei, exist\u0103 sarcini specifice pentru fiecare proiect. Din acest motiv, ne propunem s\u0103 ad\u0103ug\u0103m un SDK pentru dezvoltarea de pluginuri, astfel \u00eenc\u00e2t fiecare programator s\u0103 poat\u0103 ad\u0103uga func\u021bionalit\u0103\u021bi dup\u0103 preferin\u021bele sale.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Extinderea gamei de tipuri de noduri<\/h2>\n<p><\/p>\n<p>Acest set de noduri nu acoper\u0103 toate cazurile necesare utilizatorilor. Nodurile pe care pl\u0103nuim s\u0103 le ad\u0103ug\u0103m sunt:<\/p>\n<p><\/p>\n<ul>\n<li>Nod Script \u2014 transform\u0103 \u0219i plaseaz\u0103 date folosind js \u0219i API-ul corespunz\u0103tor. Folosind acest tip de nod, se pot realiza lucruri precum scripturi pre-request \u0219i post-request \u00een Postman.<\/li>\n<li>Nod GraphQL \u2014 suport pentru graphql<\/li>\n<li>Nod Custom assertion \u2014 va permite extinderea setului de aser\u021biuni existente \u00een proiect<br \/>\nBine\u00een\u021beles, aceasta nu este o list\u0103 final\u0103; aceasta va fi constant \u00eembog\u0103\u021bit\u0103, inclusiv cu feedback-ul dumneavoastr\u0103.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">\u00centreb\u0103ri frecvente<\/h1>\n<p><\/p>\n<p><strong>Ce v\u0103 diferen\u021biaz\u0103 de Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Conceptul de noduri, care permite scalarea aproape infinit\u0103 a func\u021bionalit\u0103\u021bii proiectului<\/li>\n<li>Format prietenos pentru utilizatori al proiectului, cu stocarea acestuia \u00een sistemul de fi\u0219iere, ceea ce simplific\u0103 utilizarea sistemelor de control al versiunilor<\/li>\n<li>Posibilitatea de a crea teste f\u0103r\u0103 programare \u0219i o suport mai avansat pentru js \u00een editorul de teste (completare automat\u0103, analizator static)<\/li>\n<li>Autocompletare avansat\u0103 \u0219i eviden\u021bierea valorii curente a variabilelor<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Este un produs open-source?<\/strong><\/p>\n<p><\/p>\n<p>Nu, \u00een prezent sursele sunt \u00eenchise, dar \u00een viitor analiz\u0103m posibilitatea de a le deschide<\/p>\n<p><\/p>\n<p><strong>Din ce v\u0103 \u00eentre\u021bine\u021bi?)<\/strong><\/p>\n<p><\/p>\n<p>Pe l\u00e2ng\u0103 versiunea gratuit\u0103, pl\u0103nuim s\u0103 lans\u0103m o versiune pl\u0103tit\u0103 a produsului. Aceasta va include \u00een primul r\u00e2nd caracteristici care necesit\u0103 parte de server, de exemplu, sincronizarea.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Concluzie<\/h1>\n<p><\/p>\n<p>Proiectul nostru avanseaz\u0103 rapid spre o lansare stabil\u0103. Totu\u0219i, deja acum produsul poate fi folosit, iar feedback-ul pozitiv al utilizatorilor no\u0219tri timpurii confirm\u0103 acest lucru. Colect\u0103m activ feedback, deoarece f\u0103r\u0103 o colaborare str\u00e2ns\u0103 cu comunitatea nu se poate construi un instrument bun. Ne pute\u021bi g\u0103si aici:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Site oficial<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/testmace\">Telegram<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/testmaceslackin.herokuapp.com\">Slack<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/testmace\">Facebook<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/TestMace-issues\">Tracker de probleme<\/a><\/noindex><\/p>\n<p><\/p>\n<p>A\u0219tept\u0103m cu ner\u0103bdare dorin\u021bele \u0219i propunerile voastre!<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0430\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043a\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0442\u0430\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54187","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TestMace \u2014 o IDE puternic\u0103 pentru lucru cu API | ProHoster","description":"Salut tuturor! Ast\u0103zi dorim s\u0103 v\u0103 prezent\u0103m produsul nostru \u2013 o IDE pentru lucru cu API TestMace.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TestMace \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.","og:url":"https:\/\/prohoster.info\/ro\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54187","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}