
Ciao a tutti, qui è ! Molti di voi potrebbero conoscerci da . Per chi si è appena unito: sviluppiamo un IDE per lavorare con l'API di TestMace. La domanda più comune quando si confronta TestMace con i prodotti concorrenti è: «Cosa vi distingue da Postman?». Abbiamo deciso che era ora di fornire una risposta dettagliata a questa domanda. Di seguito abbiamo elencato i nostri vantaggi rispetto a .
Separazione in nodi
Se lavori con Postman, sai che l'interfaccia delle richieste contiene tutte le funzionalità necessarie. Ci sono script, test e, ovviamente, le stesse richieste. Questo semplifica il lavoro per i principianti, ma su scenari complessi questo approccio non è flessibile. Cosa succede se vuoi creare più richieste e fare aggregazione su di esse? Cosa succede se desideri eseguire uno script senza richiesta o più script logicamente separati in sequenza? Infine, sarebbe utile separare i test dagli script utilitari normali. Inoltre, l'approccio di «aggiungere tutte le funzionalità in un solo nodo» non è scalabile: l'interfaccia diventa rapidamente sovraccarica.
TestMace separa fin dall'inizio tutte le funzionalità in diversi tipi di nodi. Vuoi fare una richiesta? Ecco a te nodo. Vuoi scrivere uno script? Ecco a te nodo. Hai bisogno di test? Prego — nodo. Ah, puoi anche avvolgere tutto questo in nodo. E tutto ciò si combina facilmente. Questo approccio non solo è molto flessibile, ma, in conformità con il principio di responsabilità unica, consente di utilizzare solo ciò di cui hai davvero bisogno in quel momento. Perché dovrei avere script e test se voglio solo fare una richiesta?
Formato leggibile dall'uomo del progetto
Tra TestMace e Postman c'è una differenza concettuale nel modo di memorizzare. In Postman tutte le richieste sono memorizzate da qualche parte nello storage locale. Se c'è bisogno di condividere richieste tra più utenti, è necessario utilizzare la sincronizzazione integrata. Questo è un approccio abbastanza comune, ma non privo di difetti. E riguardo alla sicurezza dei dati? Infatti, la politica di alcune aziende può non consentire di memorizzare dati presso terzi. Tuttavia, riteniamo che TestMace possa offrire qualcosa di migliore! E il nome di questo miglioramento è «formato leggibile dall'uomo del progetto».
Cominciamo col fatto che in TestMace esiste in effetti un'entità chiamata “progetto”. L'applicazione è stata originariamente sviluppata con l'obiettivo di memorizzare progetti nei sistemi di controllo versione: l'albero del progetto si proietta praticamente uno a uno sulla struttura dei file, utilizzando il formato yaml (senza parentesi e virgole superflue), e la rappresentazione file di ogni nodo è descritta nel dettaglio nella documentazione con commenti. Ma nella maggior parte dei casi non dovrete guardare lì — tutti i nomi dei campi hanno denominazioni logiche.
Cosa offre agli utenti? Questo consente di cambiare il flusso di lavoro del team in modo molto flessibile, utilizzando approcci familiari. Ad esempio, gli sviluppatori possono memorizzare il progetto nello stesso repository del backend. Nei branch, oltre a modificare direttamente la base di codice, lo sviluppatore può correggere gli scenari di richiesta esistenti e i test. Dopo aver registrato le modifiche nel repository (git, svn, mercurial — quello che preferite) il CI (la vostra amata, non imposta da nessuno) avvia la nostra utility da console. , e il rapporto ottenuto dopo l'esecuzione (ad esempio, in formato junit, anch'esso supportato in testmace-cli) viene inviato al sistema corrispondente. Inoltre, la questione della sicurezza sopra menzionata non rappresenta più un problema.
Come potete vedere, TestMace non impone il proprio ecosistema e paradigma. Al contrario, si integra facilmente nei processi già consolidati.
Variabili dinamiche
TestMace segue il concetto di no-code: se un problema può essere risolto senza l'uso di codice, cerchiamo di offrire tale possibilità. Lavorare con le variabili è proprio quella funzionalità in cui, nella maggior parte dei casi, si può fare a meno della programmazione.
Esempio: abbiamo ricevuto una risposta dal server e vogliamo salvare parte di essa in una variabile. In Postman, nel nostro script di test (che di per sé è strano), scriveremmo qualcosa del tipo:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);Ma a nostro avviso, scrivere uno script per uno scenario così semplice e frequentemente utilizzato appare superfluo. Ecco perché in TestMace c'è la possibilità di assegnare a una variabile un pezzo della risposta utilizzando l'interfaccia grafica. Scoprite quanto sia semplice:

E ora, ad ogni richiesta, questa variabile dinamica verrà aggiornata. Ma potreste obiettare, sostenendo che l'approccio di Postman è più flessibile e permette non solo di effettuare un'assegnazione, ma anche di eseguire un certo pre-processing. Ecco come si può modificare l'esempio precedente:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));Bene, per questo in TestMace c'è un nodo che copre questo scenario. Per riprodurre il caso precedente, ma già in esecuzione con TestMace, è necessario creare un nodo script dopo la richiesta e utilizzare il seguente codice come script:
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));Come vedete, la composizione dei nodi ha di nuovo svolto un buon lavoro. E per un caso così semplice come quello descritto sopra, potete semplicemente assegnare l'espressione ${crypto.MD5($response.data)} a una variabile creata attraverso l'interfaccia grafica!
Creazione di test tramite GUI
Postman consente di creare test scrivendo script (nel caso di Postman, si tratta di JavaScript). Questo approccio ha vantaggi indiscutibili: flessibilità praticamente illimitata, soluzioni pronte all'uso, e così via.
Tuttavia, la realtà è spesso tale (non siamo noi, è la vita) che il tester non possiede abilità di programmazione, mentre sarebbe desideroso di contribuire al team già da subito. Per situazioni come queste, seguendo il concetto di no-code, TestMace consente di creare test semplici attraverso un'interfaccia grafica, senza dover scrivere script. Ecco, ad esempio, come appare il processo di creazione di un test che confronta i valori per l'uguaglianza:

Tuttavia, la creazione di test nell'editor grafico non esclude la possibilità . Qui troviamo tutte le stesse librerie che si trovano nel nodo script, e per scrivere test.
La possibilità di eseguire un copione esistente tramite un link (nodo Link)
Spesso si presentano situazioni in cui è necessario eseguire una certa richiesta o addirittura un intero scenario più volte in diverse parti del progetto. Un esempio di tali richieste potrebbe essere l'autenticazione multi-fase personalizzata, la preparazione dell'ambiente per uno stato desiderato, ecc. In generale, usando termini di linguaggi di programmazione, vorremmo avere funzioni che possano essere riutilizzate in diverse parti dell'applicazione. In TestMace, questa funzione è svolta da un nodo. È molto semplice da utilizzare:
1) crea una richiesta o uno scenario
2) crea un nodo di tipo Link
3) nelle impostazioni, specifica il link allo scenario creato nel primo passaggio
In una versione più avanzata, puoi specificare quali variabili dinamiche dello scenario passare al livello superiore rispetto al link. Suona complicato? Supponiamo di aver creato una Cartella con il nome create-post, all'interno della quale viene assegnata una variabile dinamica a questo nodo postId. Ora nel nodo Link create-post-link puoi specificare esplicitamente che la variabile postId venga assegnata all'antenato create-post-link. Questo meccanismo (ancora una volta, parlando il linguaggio dei programmatori) può essere utilizzato per restituire un risultato da una «funzione». In generale è fantastico, DRY al massimo e ancora nessuna riga di codice è stata compromessa.

Per quanto riguarda Postman, la richiesta di funzionalità per il riutilizzo delle richieste , e sembra anche che ci siano , che ci si stia lavorando. Nella sua forma attuale, Postman ha sicuramente la possibilità di cambiare il flusso di esecuzione, il che in teoria potrebbe consentire di implementare un comportamento simile, ma è più un hack sporco che un vero approccio funzionante.
Altre differenze
- Maggiore controllo sull'ambito delle variabili. L'ambito più limitato all'interno del quale è possibile definire una variabile in Postman è la collezione. TestMace consente di definire variabili per qualsiasi richiesta o cartella. In Postman, la condivisione della collezione consente di esportare solo collezioni, mentre in TestMace la condivisione funziona per qualsiasi nodo.
- TestMace supporta , che possono essere inserite per impostazione predefinita nelle richieste figlie. A questo riguardo, in Postman c'è , che è anche stato chiuso, ma come soluzione viene proposto... . In TestMace, everything is configured through the GUI, and there is an option to disable inherited headers in specific child elements.
- Undo/Redo. This works not only when editing nodes but also when moving, deleting, renaming, and performing other operations that change the project structure.
- Files attached to requests become part of the project and are stored together with it, syncing seamlessly unlike in Postman. (Yes, no more manually selecting files at each run and transferring them to colleagues in archives.)
Features that are already on the way.
We couldn't resist the temptation to lift the veil on the upcoming releases, especially when the functionality is very enticing and already undergoing pre-release polishing. So, here we go.
Le funzioni
As you know, dynamic variables are used for generating values in Postman. And the overwhelming majority of functions serve to generate fake values. For example, to generate a random email, you need to write:
{{$randomEmail}}Tuttavia, poiché sono variabili (anche se dinamiche), non possono essere utilizzate come funzioni: non sono parametrizzabili, quindi non è possibile calcolare l'hash di una stringa.
In TestMace abbiamo in programma di aggiungere funzioni "oneste". All'interno di ${} sarà possibile non solo fare riferimento a una variabile, ma anche chiamare una funzione. Cioè, se dobbiamo generare il famigerato indirizzo email fittizio, scriveremo semplicemente
${faker.internet.email()}Oltre al fatto che si tratta di una funzione, si può notare che c’è la possibilità di chiamare un metodo di un oggetto. E invece di un grande elenco piatto di variabili dinamiche, abbiamo un insieme di oggetti logicamente raggruppati.
E se vogliamo calcolare l'hash di una stringa? Facile!
${crypto.MD5($dynamicVar.data)}Si può notare che come parametri è anche possibile passare variabili! In questo punto, il lettore curioso potrebbe sospettare qualcosa di strano…
Uso di JavaScript nelle espressioni
… E non a torto! Quando sono state definite le esigenze per le funzioni, abbiamo improvvisamente giunto alla conclusione che nelle espressioni dovevamo permettere di scrivere JavaScript valido. Quindi ora sei libero di scrivere espressioni nel modo seguente:
${1 + '' + crypto.MD5('asdf')}E tutto questo senza script direttamente nei campi di input!
Per quanto riguarda Postman, qui è possibile utilizzare solo variabili, e quando si cerca di scrivere un'espressione anche minimamente complessa, il validatore genera un errore e si rifiuta di calcolarla.
![]()
Completamento automatico avanzato
Attualmente TestMace offre un completamento automatico standard, che appare come segue:

Qui, oltre alla stringa di completamento automatico, è indicato a cosa appartiene questa stringa. Questo meccanismo funziona solo all'interno delle espressioni racchiuse tra parentesi ${}.
Come si può notare, sono stati aggiunti indicatori visivi che indicano il tipo di variabile (ad esempio, stringa, numero, array, ecc.). Inoltre, è possibile cambiare le modalità di completamento automatico (ad esempio, si può scegliere il completamento automatico con variabili o intestazioni). Ma questo non è nemmeno il punto principale!
Innanzitutto, il completamento automatico funziona anche nelle espressioni (dove possibile). Ecco come appare:

E in secondo luogo, ora il completamento automatico è disponibile anche negli script. Date un'occhiata a come funziona!

Non ha senso confrontare questa funzionalità con Postman: il suo completamento automatico si limita solo a elenchi statici di variabili, intestazioni e i loro valori (correggetemi se mi scordo qualcosa). Gli script non vengono completati automaticamente 🙁
Conclusione
Ottobre segna un anno dall'inizio dello sviluppo del nostro prodotto. In questo periodo abbiamo realizzato molte cose e in alcuni parametri ci siamo messi al passo con i nostri concorrenti. Tuttavia, il nostro obiettivo è creare uno strumento davvero conveniente per lavorare con le API. Abbiamo ancora molto lavoro da fare, ecco un piano indicativo per lo sviluppo del nostro progetto nel prossimo anno: .
Il vostro feedback ci aiuterà a muoverci meglio nell'abbondanza di funzionalità, e il vostro supporto ci dà forza e fiducia nel fatto che stiamo facendo la cosa giusta. Oggi è un giorno importante per il nostro progetto: il giorno della pubblicazione di TestMace su . Vi preghiamo di supportare il nostro progetto, è molto importante per noi. Soprattutto considerando che sulla nostra pagina PH oggi c'è un'offerta allettante, e questa è limitata
Fonte: habr.com
