{"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\/novosti-interneta\/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>Alcuni di voi potrebbero gi\u00e0 conoscerci da <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">articoli precedenti<\/a><\/noindex>. Tuttavia, non c'era stata una panoramica completa dello strumento, quindi stiamo correggendo questa 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>Vorremmo iniziare da come siamo arrivati a questa situazione e abbiamo deciso di creare il nostro strumento per un lavoro avanzato con l'API. Iniziamo con un elenco delle funzionalit\u00e0 che il prodotto, di cui possiamo dire che \u00e8 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 API, incluso l'importazione da formati come Swagger, OpenAPI, WADL, ecc.<\/li>\n<li>Mocking delle richieste<\/li>\n<li>Ottimo 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>La lista pu\u00f2 essere ampliata a piacere. \u00c8 importante creare non solo l'IDE stessa, ma anche un'infrastruttura specifica, come la sincronizzazione nel cloud, strumenti da linea di comando, servizi di monitoraggio online, ecc. Dopotutto, le tendenze degli ultimi anni ci impongono non solo funzionalit\u00e0 potenti, ma anche un'interfaccia gradevole.<\/p>\n<p><\/p>\n<p>A chi serve uno strumento del genere? \u00c8 chiaro che \u00e8 utile a tutti coloro che sono in qualche modo coinvolti nello sviluppo e nel testing delle API: sviluppatori e tester =). Mentre per i primi \u00e8 spesso sufficiente inviare richieste singole e semplici scenari, per i tester rappresenta uno degli strumenti principali, che tra l'altro deve includere un potente meccanismo per la scrittura dei test con la possibilit\u00e0 di eseguirli in CI.<\/p>\n<p><\/p>\n<p>Dunque, seguendo queste linee guida, abbiamo iniziato a creare il nostro prodotto. Vediamo cosa siamo riusciti a realizzare fino a questo punto.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Avvio rapido<\/h1>\n<p><\/p>\n<p>Iniziamo con il primo incontro con l'applicazione. Puoi scaricarla <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">sul nostro sito.<\/a><\/noindex>. Attualmente sono supportate tutte e tre le principali piattaforme: Windows, Linux, MacOS. Scarichiamo, installiamo, avviamo. Al primo avvio, 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 nella parte superiore dell'area contenuto per creare la tua prima richiesta. Il tab della richiesta appare nella seguente maniera:<\/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 in modo pi\u00f9 dettagliato. L'interfaccia della richiesta ricorda molto quella dei popolari client REST, facilitando la migrazione da strumenti simili. Eseguiamo la prima richiesta su 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 presenta sorprese particolari. Tuttavia, desidero attirare la vostra attenzione su alcuni aspetti:<\/p>\n<p><\/p>\n<ol>\n<li>Il corpo della risposta \u00e8 rappresentato come un albero, il che aggiunge informativit\u00e0 e consente di implementare alcune interessanti funzionalit\u00e0 di cui parler\u00f2 di seguito.<\/li>\n<li>C'\u00e8 una scheda Assertions, che mostra l'elenco dei 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 qui se le sue capacit\u00e0 si limitassero solo all'invio di richieste. Di seguito, illustrer\u00f2 i concetti chiave e le funzionalit\u00e0 di TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Concetti principali 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, attualmente l'applicazione offre anche i seguenti tipi di nodi:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Questo nodo consente di creare una richiesta. Come elemento figlio, pu\u00f2 avere solo un nodo Assertion.<\/li>\n<li>Assertion. Questo nodo viene utilizzato per scrivere test. Pu\u00f2 essere un nodo figlio solo del nodo RequestStep.<\/li>\n<li>Folder. Permette di raggruppare nodi Folder e RequestStep al suo interno.<\/li>\n<li>Project. Questo \u00e8 il nodo radice, creato automaticamente quando viene creato un progetto. In tutte le altre caratteristiche, replica 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 (pannello a sinistra in basso, utile per creare rapidamente richieste 'usa e getta') e in project (pannello a sinistra in alto), su cui ci soffermeremo in dettaglio.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Progetto<\/h2>\n<p><\/p>\n<p>All'avvio dell'applicazione, potresti aver notato la solitaria riga Project nell'angolo in alto a sinistra. Questa \u00e8 la radice dell'albero del progetto. Quando avvii un progetto, viene creato un progetto temporaneo, il cui percorso dipende dal tuo sistema operativo. In qualsiasi momento, puoi spostare il progetto in una posizione a te pi\u00f9 comoda.<\/p>\n<p><\/p>\n<p>L'obiettivo principale del progetto \u00e8 la possibilit\u00e0 di salvare i progressi nel file system e successivamente sincronizzarli tramite sistemi di controllo versioni, eseguire script in CI, revisionare le 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 come TestMace potrebbero aver gi\u00e0 compreso di cosa si tratta. Quindi, le variabili sono un modo per memorizzare dati comuni e comunicare tra i nodi. Un equivalente, ad esempio, sono le variabili d'ambiente in Postman o Insomnia. Tuttavia, ci siamo spinti oltre e abbiamo sviluppato il tema. In TestMace, le variabili possono essere impostate a livello di nodo. Qualsiasi nodo. Esiste anche un meccanismo di eredit\u00e0 delle variabili dai genitori e di sovrascrittura delle variabili nei discendenti. Inoltre, ci sono diverse variabili integrate, i cui nomi iniziano con <code>$<\/code>. Ecco alcune di esse:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 link to variables of the previous node<\/li>\n<li><code>$nextStep<\/code> \u2014 link to variables of the next node<\/li>\n<li><code>$parent<\/code> \u2014 the same, but for the ancestor<\/li>\n<li><code>$response<\/code> \u2014 response from the server<\/li>\n<li><code>$env<\/code> \u2014 current environment variables<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dynamic variables created during script execution or request<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 these are essentially regular node-level Project variables, however, the set of environment variables changes based on the selected environment. <\/p>\n<p><\/p>\n<p>Accessing a variable is done through <code>${variable_name}<\/code><br \/>\nThe value of a variable can be another variable, or even a whole expression. For instance, a variable url could be an expression like<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>\u00c8 importante sottolineare la possibilit\u00e0 di assegnare variabili durante l'esecuzione dello script. Ad esempio, spesso \u00e8 necessario memorizzare i dati di autenticazione (token o intestazione completa) ricevuti dal server dopo un accesso riuscito. TestMace consente di salvare questi dati in variabili dinamiche di uno degli antenati. Per evitare conflitti con le 'variabili statiche' gi\u00e0 esistenti, le variabili dinamiche sono state isolate 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 funzionalit\u00e0 sopra elencate, puoi eseguire interi scenari di richieste. Ad esempio, creazione di un'entit\u00e0 -&gt; richiesta di un'entit\u00e0 -&gt; eliminazione di un'entit\u00e0. In questo caso, puoi utilizzare il nodo Folder per raggruppare pi\u00f9 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 necessario il completamento automatico. E, naturalmente, l'evidenziazione del valore dell'espressione, per semplificare e facilitare la comprensione del valore di una determinata variabile. Qui \u00e8 proprio il caso in cui \u00e8 meglio vedere una volta che sentirne parlare cento:<\/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>Vale la pena notare che il completamento automatico \u00e8 implementato non solo per le variabili, ma anche, ad esempio, per gli header, i valori di determinati header (ad esempio, completamento automatico per l'header Content-Type), protocolli e molto altro. L'elenco viene continuamente aggiornato con la crescita dell'applicazione.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Annulla\/ripeti<\/h2>\n<p><\/p>\n<p>L'annullamento\/ripetizione delle modifiche \u00e8 una funzione molto utile, ma sorprendentemente non \u00e8 implementata ovunque (e gli strumenti per lavorare con le API non fanno eccezione). Ma noi non siamo cos\u00ec!) L'undo\/redo \u00e8 implementato in tutto il progetto, il che consente di annullare non solo la modifica di un singolo nodo, 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 dei test \u00e8 responsabilit\u00e0 del 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. 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', 'non uguale', 'maggiore', 'maggiore o uguale', 'minore', 'minore o uguale'.<\/p>\n<p>\n<\/li>\n<li>\n<p>Contains value - verifica la presenza di una sottostringa all'interno di una stringa.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath - verifica che un determinato valore si trovi secondo il selettore in XML.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript assertion - uno script arbitrario in linguaggio JavaScript che restituisce true in caso di successo e false in caso di fallimento.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Noter\u00f2 che solo l'ultimo richiede abilit\u00e0 di programmazione da parte dell'utente, mentre gli altri 3 assertion vengono creati tramite un'interfaccia grafica. Ecco, ad esempio, come appare la finestra di dialogo per la creazione di un'asserzione 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 creazione rapida delle asserzioni direttamente 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 asserzioni presentano ovvie limitazioni, e di fronte a queste \u00e8 possibile utilizzare le asserzioni in JavaScript. Qui TestMace offre anche un ambiente confortevole con completamento automatico, evidenziazione della sintassi e anche 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. Questa documentazione ha una struttura gerarchica e si integra perfettamente nel resto del progetto. Inoltre, attualmente \u00e8 possibile importare la descrizione dell'API dai formati Swagger 2.0 \/ OpenAPI 3.0. La descrizione non rimane solo un peso morto, ma si integra strettamente con il resto del progetto, in particolare offre completamento automatico per URL, intestazioni HTTP, parametri di query e altro; in futuro prevediamo di aggiungere test per verificare la conformit\u00e0 della risposta alla descrizione dell'API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Condivisione nodi<\/h2>\n<p><\/p>\n<p>Caso: vuoi condividere una richiesta problematica o persino un intero scenario con un collega, oppure semplicemente allegarlo 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 leggibile per l'archiviazione del progetto<\/h2>\n<p><\/p>\n<p>Attualmente, ogni nodo \u00e8 salvato 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 creato 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 pu\u00f2 essere facilmente modificato anche manualmente.<\/p>\n<p><\/p>\n<p>La gerarchia delle cartelle nel file system replica completamente la gerarchia dei nodi nel progetto. Per 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 filesystem 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>Questo facilita il processo di revisione del progetto.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Importa da Postman<\/h2>\n<p><\/p>\n<p>Dopo aver letto quanto sopra, alcuni utenti vorranno provare (vero?) il nuovo prodotto o (chi lo sa!) usarlo a pieno nel proprio progetto. Tuttavia, la migrazione potrebbe essere ostacolata da un gran numero di risorse nello stesso Postman. Per tali casi, TestMace supporta l'importazione di collezioni da Postman. Attualmente, l'importazione \u00e8 supportata senza test, ma in futuro non escludiamo di estendere questa funzionalit\u00e0.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Piani<\/h1>\n<p><\/p>\n<p>Spero che molti di voi che sono arrivati fin qui trovino interessante il nostro prodotto. Ma non finisce qui! Il lavoro sul prodotto sta procedendo 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 la possibilit\u00e0 di utilizzare sistemi di controllo versione per la sincronizzazione, rendendo il formato pi\u00f9 adatto per questo tipo di archiviazione. Tuttavia, non tutti trovano adatta questa modalit\u00e0 di lavoro, quindi prevediamo di aggiungere 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 varie integrazioni con le applicazioni o i workflow esistenti. Il CLI \u00e8 fondamentale per integrare i test scritti in TestMace nel processo di continuous integration. Stiamo lavorando attivamente sul CLI; nelle versioni iniziali sar\u00e0 possibile avviare il progetto con un semplice report in console. In un secondo momento, prevediamo di aggiungere l'output del report nel 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 numero di casi che richiedono una soluzione \u00e8 illimitato. Ci sono, alla fine, compiti specifici per progetti particolari. Per questo motivo, prevediamo di aggiungere un SDK per lo sviluppo di plugin, permettendo a ciascun sviluppatore di aggiungere funzionalit\u00e0 a piacere.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Espansione dell'assortimento dei 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 si prevede di aggiungere:<\/p>\n<p><\/p>\n<ul>\n<li>Il nodo Script - trasforma e posiziona i dati utilizzando js e l'API corrispondente. Utilizzando questo tipo di nodo, \u00e8 possibile fare cose simili agli script pre-request e post-request in Postman.<\/li>\n<li>Nodo GraphQL - supporto per graphql<\/li>\n<li>Nodo di asserzione personalizzato - consentir\u00e0 di espandere il set di asserzioni esistenti nel progetto<br \/>\nNaturalmente, questo non \u00e8 un elenco definitivo, verr\u00e0 costantemente aggiornato anche grazie 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>La concezione di nodi che permette 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 l'uso dei sistemi di controllo versione<\/li>\n<li>Possibilit\u00e0 di creare test senza programmazione e supporto js pi\u00f9 avanzato nell'editor dei test (completamento automatico, analizzatore statico)<\/li>\n<li>Completamento automatico avanzato e evidenziazione del valore corrente 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 consideriamo la possibilit\u00e0 di rilasciare il codice sorgente<\/p>\n<p><\/p>\n<p><strong>Di cosa vivete?)<\/strong><\/p>\n<p><\/p>\n<p>Oltre alla versione gratuita, prevediamo di lanciare una versione a pagamento del prodotto. Questa includer\u00e0 in primis funzionalit\u00e0 che richiedono una infrastruttura server, come la sincronizzazione.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusione<\/h1>\n<p><\/p>\n<p>Il nostro progetto avanza a passi da gigante verso un rilascio stabile. Tuttavia, \u00e8 gi\u00e0 possibile utilizzare il prodotto, e le recensioni positive dei nostri primi utenti ne sono la conferma. Raccogliamo attivamente feedback, perch\u00e9 senza una stretta collaborazione con la community non \u00e8 possibile costruire uno strumento efficace. Potete 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 ascoltare i vostri desideri 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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.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\/novosti-interneta\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.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\/novosti-interneta\/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 IDE potente per lavorare con l'API | ProHoster","description":"Ciao a tutti! Oggi vogliamo presentare alla comunit\u00e0 IT il nostro prodotto: IDE per lavorare con l'API TestMace.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/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\/novosti-interneta\/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}]}}