Perché TestMace è migliore di Postman

Perché TestMace è migliore di Postman

Ciao a tutti, ecco qua Test Mace! Forse molte persone ci conoscono da nostro precedente articoli. Per coloro che si sono appena iscritti: stiamo sviluppando un IDE per lavorare con l'API TestMace. La domanda più frequente quando si confronta TestMace con i prodotti concorrenti è “In cosa sei diverso da Postman?” Abbiamo deciso che era giunto il momento di dare una risposta dettagliata a questa domanda. Di seguito abbiamo delineato i nostri vantaggi rispetto a Postino.

Suddivisione in nodi

Se lavori con Postman, sai che l'interfaccia di richiesta contiene tutte le funzionalità necessarie. Ci sono script, test e, di fatto, le richieste stesse. Ciò rende tutto più semplice per i principianti, ma in scenari di grandi dimensioni questo approccio non è flessibile. Cosa succede se desideri creare diverse query ed eseguire l'aggregazione su di esse? Cosa succede se si desidera eseguire uno script senza richiesta oppure più script logicamente separati uno dopo l'altro? Dopotutto, sarebbe una buona idea separare i test dai normali script di utilità. Inoltre, l'approccio "aggiungi tutte le funzionalità in un nodo" non è scalabile: l'interfaccia diventa rapidamente sovraccarica.

TestMace divide inizialmente tutte le funzionalità in diversi tipi di nodi. Desideri fare una richiesta? È per te fase di richiesta nodo Vuoi scrivere una sceneggiatura? È per te copione nodo Hai bisogno di test? Per favore - Affermazione nodo Oh sì, puoi ancora concludere l'intera faccenda cartella nodo E tutto questo può essere facilmente combinato tra loro. Questo approccio non solo è molto flessibile, ma, in conformità con il principio della responsabilità unica, ti consente di utilizzare solo ciò di cui hai veramente bisogno al momento. Perché ho bisogno di script e test se voglio semplicemente fare una richiesta?

Formato di progetto leggibile dall'uomo

Esiste una differenza concettuale tra TestMace e Postman nel modo in cui vengono archiviati. In Postman, tutte le richieste vengono archiviate da qualche parte nella memoria locale. Se è necessario condividere le richieste tra più utenti, è necessario utilizzare la sincronizzazione integrata. In realtà, questo è un approccio generalmente accettato, ma non privo di inconvenienti. E la sicurezza dei dati? Dopotutto, la politica di alcune aziende potrebbe non consentire l'archiviazione di dati presso terzi. Tuttavia, riteniamo che TestMace abbia qualcosa di meglio da offrire! E il nome di questo miglioramento è “formato di progetto leggibile dall’uomo”.

Partiamo dal fatto che in TestMace, in linea di principio, esiste un'entità “progetto”. E l'applicazione è stata inizialmente sviluppata con un occhio alla memorizzazione dei progetti nei sistemi di controllo della versione: l'albero del progetto è quasi proiettato uno a uno sulla struttura del file, yaml è utilizzato come formato di archiviazione (senza parentesi e virgole aggiuntive) e il la rappresentazione del file di ciascun nodo è descritta in dettaglio nella documentazione con commenti. Ma nella maggior parte dei casi non guarderai lì: tutti i nomi dei campi hanno nomi logici.

Cosa offre questo all'utente? Ciò consente di modificare il flusso di lavoro del team in modo molto flessibile, utilizzando approcci familiari. Ad esempio, gli sviluppatori possono archiviare un progetto nello stesso repository del backend. Nei rami, oltre a modificare la base di codice stessa, lo sviluppatore può correggere script e test di query esistenti. Dopo aver apportato le modifiche al repository (git, svn, mercurial - qualunque cosa ti piaccia di più), CI (il tuo preferito, non imposto da nessuno) avvia la nostra utility console testmace-clie il report ricevuto dopo l'esecuzione (ad esempio, in formato junit, supportato anche in testmace-cli) viene inviato al sistema appropriato. E il problema di sicurezza sopra menzionato non è più un problema.

Come puoi vedere, TestMace non impone il suo ecosistema e paradigma. Invece, si adatta facilmente ai processi consolidati.

Variabili dinamiche

TestMace segue il concetto no-code: se un problema può essere risolto senza utilizzare codice, proviamo a fornire questa opportunità. Lavorare con le variabili è esattamente il tipo di funzionalità in cui nella maggior parte dei casi puoi fare a meno della programmazione.

Esempio: abbiamo ricevuto una risposta dal server e vogliamo salvare parte della risposta in una variabile. In Postman, in uno script di test (il che è di per sé strano) scriveremmo qualcosa del tipo:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

Ma a nostro avviso, scrivere una sceneggiatura per uno scenario così semplice e utilizzato di frequente sembra ridondante. Pertanto in TestMace è possibile assegnare una parte della risposta ad una variabile utilizzando l'interfaccia grafica. Guarda com'è semplice:

Perché TestMace è migliore di Postman

E ora con ogni richiesta questa variabile dinamica verrà aggiornata. Ma puoi obiettare, sostenendo che l'approccio Postman è più flessibile e consente non solo di assegnare un incarico, ma anche di eseguire alcune pre-elaborazione. Ecco come modificare l'esempio precedente:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

Bene, a questo scopo TestMace ha copione nodo, che copre questo scenario. Per riprodurre il caso precedente, ma già eseguito da TestMace, è necessario creare un nodo script a seguito della richiesta e utilizzare come script il seguente codice:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

Come puoi vedere, anche qui la composizione dei nodi ha funzionato bene. E per un caso semplice come quello descritto sopra, puoi semplicemente assegnare l'espressione ${crypto.MD5($response.data)} variabile creata tramite la GUI!

Creazione di test tramite GUI

Postman ti consente di creare test scrivendo script (nel caso di Postman, questo è JavaScript). Questo approccio presenta molti vantaggi: flessibilità quasi illimitata, disponibilità di soluzioni già pronte, ecc.

Tuttavia, spesso la realtà è tale (noi non siamo così, la vita è così) che un tester non ha capacità di programmazione, ma vorrebbe portare beneficio al team in questo momento. Per questi casi, seguendo il concetto di no-code, TestMace consente di creare semplici test tramite una GUI senza ricorrere alla scrittura di script. Ecco, ad esempio, come appare il processo di creazione di un test che confronta i valori per l'uguaglianza:

Perché TestMace è migliore di Postman

Tuttavia, la creazione di test in un editor grafico non elimina questa possibilità scrivere test in codice. Tutte le stesse librerie sono qui come nel nodo script e chai per la scrittura delle prove.

Spesso si verificano situazioni in cui una determinata query o addirittura un intero script deve essere eseguito più volte in diverse parti del progetto. Un esempio di tali richieste potrebbe essere l'autorizzazione personalizzata in più fasi, portando l'ambiente allo stato desiderato, ecc. In generale, parlando in termini di linguaggi di programmazione, vorremmo avere funzioni che possano essere riutilizzate in diverse parti dell'applicazione. In TestMace questa funzione viene eseguita da link nodo È molto facile da usare:
1) creare una query o uno script
2) creare un nodo di tipo Link
3) nei parametri specificare un collegamento allo script creato nel primo passaggio

In una versione più avanzata, è possibile specificare quali variabili dinamiche dello script vengono passate a un livello superiore rispetto al collegamento. Sembra confuso? Diciamo che abbiamo creato una cartella con il nome crea-post, all'interno del quale a questo nodo viene assegnata una variabile dinamica postId. Ora nel nodo Collegamento crea-post-link è possibile specificare esplicitamente che la variabile postId assegnato ad un antenato crea-post-link. Questo meccanismo (di nuovo, nel linguaggio di programmazione) può essere utilizzato per restituire un risultato da una “funzione”. In generale, va bene, DRY è in pieno svolgimento e ancora una volta nessuna riga di codice è stata danneggiata.

Perché TestMace è migliore di Postman

Per quanto riguarda Postman, esiste una richiesta di funzionalità per il riutilizzo delle richieste sospeso dal 2015, e sembra che ci sia persino alcuni suggerimentiche stanno lavorando su questo problema. Nella sua forma attuale, Postman, ovviamente, ha la capacità di cambiare il filo dell'esecuzione, il che in teoria probabilmente rende possibile implementare un comportamento simile, ma questo è più uno sporco hack che un approccio veramente funzionante.

Altre differenze

  • Maggiore controllo sulla portata delle variabili. L'ambito più piccolo entro il quale una variabile può essere definita in Postman è la raccolta. TestMace ti consente di definire variabili per qualsiasi query o cartella. In Postman Share la raccolta ti consente di esportare solo le raccolte, mentre in TestMace la condivisione funziona per qualsiasi nodo
  • Supporta TestMace intestazioni ereditabili, che può essere sostituito nelle query secondarie per impostazione predefinita. Il postino ha qualcosa a riguardo: compito, ed è anche chiuso, ma si propone come soluzione... utilizzare gli script. In TestMace, tutto questo è configurato tramite la GUI e c'è un'opzione per disabilitare facoltativamente le intestazioni ereditate in discendenti specifici
  • Annulla Ripristina. Funziona non solo durante la modifica dei nodi, ma anche durante lo spostamento, l'eliminazione, la ridenominazione e altre operazioni che modificano la struttura del progetto
  • I file allegati alle richieste diventano parte del progetto e vengono archiviati con esso, pur essendo perfettamente sincronizzati, a differenza di Postman. (Sì, non è più necessario selezionare manualmente i file ogni volta che si avvia e trasferirli ai colleghi negli archivi)

Funzionalità già in arrivo

Non abbiamo potuto resistere alla tentazione di sollevare il velo di segretezza sulle prossime versioni, soprattutto quando la funzionalità è molto gustosa ed è già in fase di perfezionamento pre-release. Allora, incontriamoci.

funzioni

Come sai, Postman utilizza le cosiddette variabili dinamiche per generare valori. L'elenco di loro è impressionante e la stragrande maggioranza delle funzioni viene utilizzata per generare valori falsi. Ad esempio, per generare un'email casuale è necessario scrivere:

{{$randomEmail}}

Trattandosi però di variabili (seppur dinamiche), non possono essere utilizzate come funzioni: non sono parametrizzabili, quindi non sarà possibile togliere un hash da una stringa.

Abbiamo in programma di aggiungere funzioni "oneste" a TestMace. Proprio all'interno di ${} sarà possibile non solo accedere ad una variabile, ma anche chiamare una funzione. Quelli. se hai bisogno di generare la famigerata email falsa, ti scriveremo semplicemente

${faker.internet.email()}

Oltre al fatto che si tratta di una funzione, noterai che è possibile chiamare un metodo su un oggetto. E invece di un lungo elenco piatto di variabili dinamiche, abbiamo un insieme di oggetti raggruppati logicamente.

Cosa succede se vogliamo calcolare l'hash di una stringa? Facilmente!

${crypto.MD5($dynamicVar.data)}

Noterai che puoi persino passare variabili come parametri! A questo punto, un lettore curioso potrebbe sospettare che qualcosa non va...

Utilizzo di JavaScript nelle espressioni

... E per una buona ragione! Quando si stavano formando i requisiti per le funzioni, siamo improvvisamente giunti alla conclusione che Javascript valido dovrebbe essere scritto nelle espressioni. Quindi ora sei libero di scrivere espressioni come:

${1 + '' + crypto.MD5('asdf')}

E tutto questo senza script, direttamente nei campi di input!

Per quanto riguarda Postman, qui puoi usare solo variabili e quando provi a scrivere la più piccola espressione, il validatore impreca e si rifiuta di calcolarla.

Perché TestMace è migliore di Postman

Completamento automatico avanzato

Attualmente TestMace ha un completamento automatico standard simile al seguente:

Perché TestMace è migliore di Postman

Qui, oltre alla riga di completamento automatico, è indicato a cosa appartiene questa riga. Questo meccanismo funziona solo nelle espressioni racchiuse tra parentesi ${}.

Come puoi vedere, sono stati aggiunti dei marcatori visivi che indicano il tipo di variabile (ad esempio, stringa, numero, array, ecc.). Puoi anche modificare le modalità di completamento automatico (ad esempio, puoi selezionare il completamento automatico con variabili o intestazioni). Ma anche questa non è la cosa più importante!

Innanzitutto, il completamento automatico funziona anche nelle espressioni (ove possibile). Ecco come appare:

Perché TestMace è migliore di Postman

In secondo luogo, il completamento automatico è ora disponibile negli script. Dai un'occhiata a come funziona!

Perché TestMace è migliore di Postman

Non ha senso confrontare questa funzionalità con Postman: il completamento automatico è limitato solo a elenchi statici di variabili, intestazioni e relativi valori (correggimi se ho dimenticato qualcosa). Gli script non vengono completati automaticamente :)

conclusione

Ottobre ha segnato un anno dall'inizio dello sviluppo del nostro prodotto. Durante questo periodo siamo riusciti a fare molte cose e, per certi aspetti, abbiamo raggiunto i nostri concorrenti. Comunque sia, il nostro obiettivo è creare uno strumento veramente conveniente per lavorare con le API. Abbiamo ancora molto lavoro da fare, ecco un piano di massima per lo sviluppo del nostro progetto per il prossimo anno: https://testmace.com/roadmap.

Il tuo feedback ci consentirà di esplorare meglio l'abbondanza di funzionalità e il tuo supporto ci dà forza e fiducia nel fatto che stiamo facendo la cosa giusta. Si dà il caso che oggi sia un giorno importante per il nostro progetto: il giorno in cui è stato pubblicato TestMace ProductHunt. Sostieni il nostro progetto, per noi è molto importante. Inoltre, oggi c'è un'offerta allettante sulla nostra pagina PH ed è limitata

Fonte: habr.com

Aggiungi un commento