{"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\/it\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 un potente IDE per lavorare con le API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao a tutti! Oggi vogliamo presentare alla comunit\u00e0 IT il nostro prodotto: un IDE per lavorare con le API <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Forse alcuni di voi ci conoscono gi\u00e0 da <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">articoli precedenti<\/a><\/noindex>. Tuttavia, non c'\u00e8 stata una panoramica esaustiva dello strumento, quindi stiamo eliminando questa fastidiosa mancanza.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" 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\">Motivazione<\/h1>\n<p><\/p>\n<p>Vorrei iniziare spiegando come, di fatto, siamo arrivati a questa situazione e abbiamo deciso di creare il nostro strumento per un lavoro avanzato con le API. Cominceremo con un elenco delle funzionalit\u00e0 che il prodotto, che secondo noi pu\u00f2 essere definito come un 'IDE per lavorare con le API', dovrebbe avere:<\/p>\n<p><\/p>\n<ul>\n<li>Creazione ed esecuzione di richieste e script (sequenze di richieste)<\/li>\n<li>Scrittura di vari tipi di test<\/li>\n<li>Generazione di test<\/li>\n<li>Lavoro con la documentazione delle API, inclusa l'importazione da formati come Swagger, OpenAPI, WADL, ecc.<\/li>\n<li>Mocking delle richieste<\/li>\n<li>Buona supporto per uno o pi\u00f9 linguaggi di programmazione per la scrittura di script, inclusa l'integrazione con librerie popolari<\/li>\n<li>ecc.<\/li>\n<\/ul>\n<p><\/p>\n<p>L'elenco pu\u00f2 essere ampliato a piacere. \u00c8 importante creare non solo l'IDE stesso, ma anche un'infrastruttura adeguata, come la sincronizzazione cloud, strumenti da riga di comando, servizio di monitoraggio online, ecc. Alla fine, le tendenze degli ultimi anni ci indicano non solo un potente funzionalit\u00e0 dell'applicazione, ma anche una sua interfaccia gradevole.<\/p>\n<p><\/p>\n<p>A chi serve uno strumento simile? \u00c8 ovvio, a tutti quelli che sono in qualche modo coinvolti nello sviluppo e nel testing delle API: sviluppatori e tester =). Tuttavia, se per i primi spesso basta l'esecuzione di singole richieste e semplici scenari, per i tester questo \u00e8 uno degli strumenti principali, che oltre a tutto il resto deve includere un potente meccanismo di scrittura di test con possibilit\u00e0 di esecuzione nel CI.<\/p>\n<p><\/p>\n<p>Quindi, seguendo queste linee guida, abbiamo iniziato a creare il nostro prodotto. Diamo un'occhiata a cosa abbiamo ottenuto fino a questo punto.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Avvio veloce<\/h1>\n<p><\/p>\n<p>Iniziamo con un primo incontro con l'applicazione. Puoi scaricarla <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">sul nostro sito<\/a><\/noindex>. Attualmente supporta tutte e tre le principali piattaforme: Windows, Linux, MacOS. Scarica, installa e avvia. Alla prima apertura puoi vedere la seguente finestra:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Clicca sul segno pi\u00f9 in cima all'area dei contenuti per creare la tua prima richiesta. La scheda della richiesta appare come segue:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fermiamoci su questo punto in modo pi\u00f9 dettagliato. L'interfaccia della richiesta ricorda molto l'interfaccia dei popolari client REST, il che facilita la migrazione da strumenti simili. Eseguiamo la prima richiesta all'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 potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A prima vista, anche il pannello di risposta non sembra presentare sorprese particolari. Tuttavia, vi prego di prestare attenzione ad alcuni aspetti:<\/p>\n<p><\/p>\n<ol>\n<li>Il corpo della risposta \u00e8 strutturato ad albero, il che, da un lato, aumenta l'informativit\u00e0 e, dall'altro, consente di aggiungere alcune funzionalit\u00e0 interessanti che descriver\u00f2 di seguito<\/li>\n<li>C'\u00e8 una scheda Assertions, che mostra un elenco di test per questa richiesta<\/li>\n<\/ol>\n<p><\/p>\n<p>Come si pu\u00f2 notare, il nostro strumento pu\u00f2 essere utilizzato come un comodo client REST. Tuttavia, non ci saremmo riuniti qui se le sue funzionalit\u00e0 si limitassero solo all'invio di richieste. Di seguito illustro i concetti base e le funzionalit\u00e0 di TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Concetti base e funzionalit\u00e0<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Nodo<\/h2>\n<p><\/p>\n<p>Le funzionalit\u00e0 di TestMace sono suddivise in diversi tipi di nodi. Nell'esempio sopra abbiamo dimostrato il funzionamento del nodo RequestStep. Tuttavia, ora nell'applicazione sono disponibili anche i seguenti tipi di nodi:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Questo nodo consente di creare una richiesta. Pu\u00f2 avere solo un nodo Assertion come elemento figlio.<\/li>\n<li>Assertion. Questo nodo viene utilizzato per scrivere test. Pu\u00f2 essere un nodo figlio solo per un nodo RequestStep.<\/li>\n<li>Folder. Consente di raggruppare nodi Folder e RequestStep al suo interno.<\/li>\n<li>Project. \u00c8 il nodo radice, creato automaticamente al momento della creazione del progetto. Per il resto, ripete le funzionalit\u00e0 del nodo Folder.<\/li>\n<li>Link. Un collegamento a un nodo Folder o RequestStep. Permette di riutilizzare richieste e scenari.<\/li>\n<li>ecc.<\/li>\n<\/ul>\n<p><\/p>\n<p>I nodi si trovano in scratches (il pannello in basso a sinistra, che serve per creare rapidamente richieste 'usa e getta') e in project (il pannello in alto a sinistra), su cui ci soffermeremo di pi\u00f9.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Progetto<\/h2>\n<p><\/p>\n<p>All'avvio dell'applicazione, potreste aver notato una singola riga Project nell'angolo in alto a sinistra. Questo \u00e8 il nodo radice dell'albero del progetto. All'avvio del progetto viene creato un progetto temporaneo, il cui percorso dipende dal sistema operativo utilizzato. In qualsiasi momento \u00e8 possibile spostare il progetto nella posizione che preferite.<\/p>\n<p><\/p>\n<p>Lo scopo principale del progetto \u00e8 quello di salvare i lavori nel file system e di sincronizzarli successivamente tramite sistemi di controllo versione, eseguendo scenari in CI, revisionando modifiche, ecc.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Variabili<\/h2>\n<p><\/p>\n<p>Le variabili sono uno dei meccanismi chiave dell'applicazione. Coloro di voi che lavorano con strumenti simili a TestMace avranno gi\u00e0 capito di cosa si tratta. Quindi, le variabili sono un modo per conservare dati comuni e comunicare tra i nodi. Un esempio \u00e8 dato dalle variabili d'ambiente in Postman o Insomnia. Tuttavia, abbiamo fatto un passo avanti e sviluppato il tema. In TestMace, le variabili possono essere impostate a livello di nodo. Qualsiasi. Esiste anche un meccanismo di ereditariet\u00e0 delle variabili dai genitori e di sovrascrittura delle variabili nei discendenti. Inoltre, ci sono diverse variabili incorporate, i cui nomi iniziano con <code>$<\/code>. Ecco alcune di esse:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 riferimento alle variabili del nodo precedente<\/li>\n<li><code>$nextStep<\/code> \u2014 riferimento alle variabili del nodo successivo<\/li>\n<li><code>$parent<\/code> \u2014 lo stesso, ma per il genitore<\/li>\n<li><code>$response<\/code> \u2014 risposta dal server<\/li>\n<li><code>$env<\/code> \u2014 variabili d'ambiente correnti<\/li>\n<li><code>$dynamicVar<\/code> \u2014 variabili dinamiche, create durante l'esecuzione dello script o della richiesta<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 queste sono fondamentalmente variabili normali a livello del nodo Project, tuttavia, il set di variabili d'ambiente cambia a seconda dell'ambiente selezionato. <\/p>\n<p><\/p>\n<p>L'accesso a una variabile avviene tramite <code>${variable_name}<\/code><br \/>\nCome valore di una variabile pu\u00f2 essere un'altra variabile, o addirittura un'intera espressione. Ad esempio, come variabile url pu\u00f2 esserci un'espressione del tipo<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Vale la pena notare la possibilit\u00e0 di assegnare variabili durante l'esecuzione di uno script. Ad esempio, spesso si rende necessaria la conservazione delle credenziali di autorizzazione (token o l'intero header), che arrivano dal server dopo un login riuscito. TestMace consente di memorizzare tali dati in variabili dinamiche di uno dei genitori. Per evitare conflitti con le 'variabili statiche' gi\u00e0 esistenti, le variabili dinamiche sono state spostate in un oggetto separato. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Scenari<\/h2>\n<p><\/p>\n<p>Utilizzando tutte le possibilit\u00e0 sopra menzionate, \u00e8 possibile eseguire interi scenari di richieste. Ad esempio, creazione di un'entit\u00e0 -&gt; richiesta dell'entit\u00e0 -&gt; eliminazione dell'entit\u00e0. In questo caso, per esempio, puoi usare un nodo Folder per raggruppare diversi nodi RequestStep.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Completamento automatico e evidenziazione del valore dell'espressione<\/h2>\n<p><\/p>\n<p>Per un lavoro comodo con le variabili (e non solo) \u00e8 necessaria la completamento automatico. E naturalmente l'evidenziazione del valore dell'espressione, per facilitare e rendere pi\u00f9 semplice chiarire a quanto ammonta una determinata variabile. Qui si tratta proprio di quel caso in cui \u00e8 meglio vedere una volta che sentire cento volte:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Va notato che il completamento automatico \u00e8 implementato non solo per le variabili, ma anche, ad esempio, per le intestazioni, i valori di determinate intestazioni (ad esempio, completamento automatico per l'intestazione Content-Type), protocolli e molto altro. L'elenco viene costantemente aggiornato con la crescita dell'applicazione.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Annulla\/ripeti<\/h2>\n<p><\/p>\n<p>Annullare\/ripetere le modifiche \u00e8 una cosa molto comoda, tuttavia, per qualche motivo, non \u00e8 implementata ovunque (e gli strumenti per lavorare con le API non fanno eccezione). Ma noi non siamo cos\u00ec!) Annulla\/ripeti \u00e8 implementato nel contesto dell'intero progetto, il che consente di annullare non solo la modifica di un nodo specifico, ma anche la sua creazione, eliminazione, spostamento, ecc. Le operazioni pi\u00f9 critiche richiedono conferma.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Creazione di test<\/h2>\n<p><\/p>\n<p>La creazione di test \u00e8 gestita dal nodo Assertion. Una delle principali caratteristiche \u00e8 la possibilit\u00e0 di creare test senza programmazione, utilizzando editor integrati. <\/p>\n<p><\/p>\n<p>Il nodo Assertion \u00e8 composto da un insieme di assertion (affermazioni). Ogni assertion ha il proprio tipo, attualmente esistono diversi tipi di assertion.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Confronta valori \u2014 confronta semplicemente 2 valori. Ci sono diversi operatori di confronto: 'uguale', 'diverso', 'maggiore', 'maggiore o uguale', 'minore', 'minore o uguale'.<\/p>\n<p>\n<\/li>\n<li>\n<p>Contiene valore \u2014 verifica la presenza di una sottostringa nella stringa.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 verifica che vi sia un certo valore secondo il selettore in XML.<\/p>\n<p>\n<\/li>\n<li>\n<p>Assertion JavaScript \u2014 uno script arbitrario in linguaggio JavaScript che restituisce true in caso di successo e false in caso di errore.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Nota che solo l'ultima richiede all'utente competenze di programmazione, le altre 3 assertion sono create tramite un'interfaccia grafica. Ecco, ad esempio, come appare la finestra di dialogo per la creazione di un'assertion di confronto valori:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La ciliegina sulla torta \u00e8 la rapida creazione di assertion dalla risposta, basta dare un'occhiata a questo!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tuttavia, tali assertion presentano ovvie limitazioni, di fronte alle quali puoi utilizzare l'assertion JavaScript. E qui TestMace fornisce anche un ambiente confortevole con completamento automatico, evidenziazione della sintassi e persino un analizzatore statico.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Descrizione API<\/h2>\n<p><\/p>\n<p>TestMace consente non solo di utilizzare l'API, ma anche di documentarla. La descrizione stessa ha una struttura gerarchica ed \u00e8 organicamente integrata nel resto del progetto. Inoltre, attualmente esiste la possibilit\u00e0 di importare la descrizione dell'API dai formati Swagger 2.0 \/ OpenAPI 3.0. La descrizione non giace semplicemente come un peso morto, ma si integra strettamente con il resto del progetto; in particolare, \u00e8 disponibile il completamento automatico degli URL, delle intestazioni HTTP, dei parametri di query e altro, e in futuro prevediamo di aggiungere test per la corrispondenza della risposta con la descrizione dell'API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Condivisione delle nodi<\/h2>\n<p><\/p>\n<p>Caso d'uso: vorresti condividere una richiesta problematica o persino un intero scenario con un collega o semplicemente allegarla a un bug. TestMace copre anche questo caso: l'app consente di serializzare qualsiasi nodo e persino un sottoalbero in un URL. Copia e incolla e hai gi\u00e0 trasferito facilmente la richiesta su un'altra macchina o progetto.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">Formato di archiviazione leggibile dall'uomo del progetto<\/h2>\n<p><\/p>\n<p>Attualmente, ogni nodo \u00e8 archiviato in un file separato con estensione yml (come nel caso del nodo Assertion), oppure in una cartella con il nome del nodo e un file index.yml al suo interno.<br \/>\nEcco come appare, ad esempio, il file con la richiesta che abbiamo fatto nella recensione sopra:<\/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>Come puoi vedere, tutto \u00e8 estremamente chiaro. Se lo desideri, questo formato \u00e8 piuttosto facile da modificare anche manualmente.<\/p>\n<p><\/p>\n<p>La gerarchia delle cartelle nel sistema di file riproduce completamente la gerarchia dei nodi nel progetto. Ad esempio, uno scenario di questo tipo:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si mappa nel sistema di file nella seguente struttura (\u00e8 mostrata solo la gerarchia delle cartelle, ma il concetto \u00e8 chiaro)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 un potente IDE per lavorare con le API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il che facilita il processo di revisione del progetto.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importazione da Postman<\/h2>\n<p><\/p>\n<p>Dopo aver letto tutto quanto sopra, alcuni utenti vorranno provare (giusto?) il nuovo prodotto o (chi lo sa!) utilizzarlo pienamente nel proprio progetto. Tuttavia, la migrazione potrebbe essere ostacolata da un gran numero di risorse gi\u00e0 accumulate nello stesso Postman. Per questi casi, TestMace supporta l'importazione di collezioni da Postman. Attualmente \u00e8 supportata l'importazione senza test, ma in futuro non escludiamo di includere anche il loro supporto.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Piani<\/h1>\n<p><\/p>\n<p>Spero che a molti di coloro che hanno letto fino a questo punto, il nostro prodotto sia piaciuto. Tuttavia, non \u00e8 tutto! Il lavoro sul prodotto sta proseguendo a pieno ritmo ecco alcune funzionalit\u00e0 che prevediamo di aggiungere a breve.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Sincronizzazione cloud<\/h2>\n<p><\/p>\n<p>Una delle funzionalit\u00e0 pi\u00f9 richieste. Attualmente offriamo come opzione di sincronizzazione di utilizzare sistemi di controllo versione, per cui stiamo rendendo il formato pi\u00f9 amichevole per questo tipo di archiviazione. Tuttavia, non a tutti si adatta questo flusso di lavoro, quindi \u00e8 prevista l'aggiunta di un meccanismo di sincronizzazione attraverso i nostri server, familiare a molti. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Come gi\u00e0 accennato, i prodotti di livello IDE non possono fare a meno di diverse integrazioni con applicazioni o flussi di lavoro esistenti. La CLI \u00e8 esattamente ci\u00f2 che \u00e8 necessario per integrare i test scritti in TestMace nel processo di integrazione continua. Il lavoro sulla CLI \u00e8 in corso, nelle versioni iniziali ci sar\u00e0 l'avvio del progetto con un semplice report console. In seguito, \u00e8 prevista l'aggiunta dell'output del report in formato JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Sistema a plugin<\/h2>\n<p><\/p>\n<p>Nonostante tutta la potenza del nostro strumento, il set di casi che richiedono soluzione \u00e8 illimitato. Alla fine ci sono compiti specifici per il progetto in questione. \u00c8 per questo che in futuro prevediamo di aggiungere un SDK per lo sviluppo di plugin, e ogni sviluppatore potr\u00e0 aggiungere funzionalit\u00e0 a piacimento.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Espansione dell'assortimento di tipi di nodi<\/h2>\n<p><\/p>\n<p>Questo set di nodi non copre tutti i casi necessari per l'utente. I nodi che prevediamo di aggiungere:<\/p>\n<p><\/p>\n<ul>\n<li>Nodo Script \u2014 trasforma e colloca i dati utilizzando js e l'API corrispondente. Utilizzando questo tipo di nodo, si possono realizzare cose come script di pre-request e post-request in Postman.<\/li>\n<li>Nodo GraphQL \u2014 supporto per graphql<\/li>\n<li>Nodo di affermazione personalizzata \u2014 permetter\u00e0 di ampliare il set di affermazioni esistenti nel progetto<br \/>\nNaturalmente, questo non \u00e8 un elenco definitivo, sar\u00e0 costantemente aggiornato grazie anche al vostro feedback.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">FAQ<\/h1>\n<p><\/p>\n<p><strong>Cosa vi distingue da Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Concetto di nodi che consente di scalare praticamente all'infinito la funzionalit\u00e0 del progetto<\/li>\n<li>Formato leggibile dall'uomo del progetto con salvataggio nel file system, che semplifica il lavoro utilizzando sistemi di controllo versione<\/li>\n<li>Possibilit\u00e0 di creare test senza programmazione e supporto avanzato per js nell'editor dei test (autocomplete, analizzatore statico)<\/li>\n<li>Completamento automatico avanzato e evidenziazione del valore attuale delle variabili<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>\u00c8 un prodotto open-source?<\/strong><\/p>\n<p><\/p>\n<p>No, attualmente il codice sorgente \u00e8 chiuso, ma in futuro prendiamo in considerazione la possibilit\u00e0 di aprire il codice sorgente<\/p>\n<p><\/p>\n<p><strong>Di cosa vivete?)<\/strong><\/p>\n<p><\/p>\n<p>Insieme alla versione gratuita, prevediamo di rilasciare una versione a pagamento del prodotto. Questa conterr\u00e0 prima di tutto funzionalit\u00e0 che richiedono una parte server, ad esempio la sincronizzazione.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusione<\/h1>\n<p><\/p>\n<p>Il nostro progetto sta facendo passi da gigante verso un rilascio stabile. Tuttavia, il prodotto \u00e8 gi\u00e0 utilizzabile, e le recensioni positive dei nostri primi utenti lo confermano. Stiamo raccogliendo attivamente feedback, poich\u00e9 senza una stretta collaborazione con la community non \u00e8 possibile costruire uno strumento di qualit\u00e0. Puoi trovarci qui:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Sito ufficiale<\/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\">Issue tracker<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Non vediamo l'ora di ricevere le vostre richieste e suggerimenti!<\/p>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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 potente IDE per lavorare con API | ProHoster","description":"Ciao a tutti! Oggi vogliamo presentare al pubblico IT il nostro prodotto: IDE per lavorare con l'API TestMace.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}