TestMace. Inizio veloce

TestMace. Inizio veloce

Ciao a tutti. Stiamo lentamente emergendo dall'ombra e continuiamo la serie di articoli sul nostro prodotto. Dopo precedente articolo di revisione, abbiamo ricevuto molti feedback (per lo più positivi), suggerimenti e segnalazioni di bug. Oggi mostreremo Test Mace in azione e potrai apprezzare alcune delle funzionalità della nostra applicazione. Per un'immersione più completa, ti consiglio di fare riferimento alla nostra documentazione su http://docs-ru.testmace.com. Quindi andiamo!

Installazione

Partiamo dalla banalità. L'applicazione è disponibile e attualmente testata su tre piattaforme: Linux, Windows, MacOS. Puoi scaricare il programma di installazione per il sistema operativo che ti interessa il nostro sito. Per gli utenti Linux è possibile installare pacchetto a scatto. Speriamo davvero che Microsoft Store e App Store riescano presto a farlo (è necessario? Che ne pensate?).

Scenario sperimentale

Abbiamo scelto il seguente scenario standard come soggetto del test:

  • Accesso: utente - amministratore, password - password
  • aggiungere una nuova voce
  • Verifichiamo che il record sia stato aggiunto correttamente

Proveremo su https://testmace-quick-start.herokuapp.com/. Questo è il solito server json, perfetto per testare tali applicazioni. Abbiamo appena aggiunto l'autorizzazione tramite token a tutti i percorsi del server json e creato un metodo di accesso per ricevere questo token. Ci muoveremo progressivamente, migliorando gradualmente il nostro progetto.

Creazione di un progetto e tentativo di creare un'entità senza autorizzazione

Innanzitutto, creiamo un nuovo progetto (Compila il ->Nuovo progetto). Se avvii l'applicazione per la prima volta, si aprirà automaticamente un nuovo progetto. Per prima cosa, proviamo a fare una richiesta per creare un nuovo record (nel caso in cui la creazione di record sia disponibile senza autorizzazione). Seleziona gli elementi dal menu contestuale del nodo Progetto Aggiungi nodo -> Richiesta Passo. Imposta il nome del nodo su crea-post. Di conseguenza, verrà creato un nuovo nodo nell'albero e si aprirà una scheda per questo nodo. Impostiamo i seguenti parametri di richiesta:

TestMace. Inizio veloce

Tuttavia, se proviamo a soddisfare la richiesta, il server restituirà un codice 401 e senza autorizzazione non otterremo nulla su questo server. Bene, in generale, come previsto).

Aggiunta di una richiesta di autorizzazione

Come già detto, abbiamo un endpoint POST /login, che accetta json come corpo della richiesta del modulo: {"username": "<username>", "password": "<password>"}Dove username и password (ancora, dal paragrafo introduttivo sopra) hanno significati admin и password rispettivamente. In risposta, questo endpoint restituisce json like {"token": "<token>"}. Lo useremo per l'autorizzazione. Creiamo Richiesta Passo nodo con nome accesso, fungerà da antenato Progetto nodo Usando il trascinamento della selezione, sposta un dato nodo nell'albero più in alto rispetto al nodo crea-post. Impostiamo i seguenti parametri sulla richiesta appena creata:

Eseguiamo la richiesta e riceviamo in risposta il duecentesimo codice con il token. Qualcosa come questo:

TestMace. Inizio veloce

Refactoring: rimozione della duplicazione del dominio

Finora le richieste non sono collegate in un unico script. Ma questo non è l'unico inconveniente. Se guardi attentamente, noterai che almeno il dominio è duplicato in entrambe le richieste. Non bene. È tempo di rifattorizzare questa parte dello script futuro e le variabili ci aiuteranno in questo.

In prima approssimazione, le variabili svolgono lo stesso ruolo di altri strumenti e linguaggi di programmazione simili: eliminano le duplicazioni, aumentano la leggibilità, ecc. Puoi leggere ulteriori informazioni sulle variabili in la nostra documentazione. In questo caso, avremo bisogno delle variabili utente.

Definiamo una variabile a livello del nodo Progetto domain con significato https://testmace-quick-start.herokuapp.com. Per questo è necessario

  • Apri la scheda con questo nodo e clicca sull'icona della calcolatrice in alto a destra
  • Clicca su + AGGIUNGI VARIABILE
  • Immettere il nome e il valore della variabile
    Nel nostro caso, la finestra di dialogo con la variabile aggiunta sarà simile a questa:

TestMace. Inizio veloce

OK. Ora, a causa dell'ereditarietà, possiamo utilizzare questa variabile nei discendenti di qualsiasi livello di nidificazione. Nel nostro caso questi sono nodi accesso и crea-post. Per utilizzare una variabile in un campo di testo, è necessario scrivere ${<variable_name>}. Ad esempio, l'URL di accesso viene convertito in ${domain}/login, rispettivamente per crea-post apparirà l'URL del nodo ${domain}/posts.

Pertanto, guidati dal principio DRY, abbiamo leggermente migliorato lo scenario.

Salva il token in una variabile

Dato che stiamo parlando di variabili, espandiamo un po' l'argomento. Al momento, in caso di login riuscito, riceviamo dal server un token di autorizzazione, di cui avremo bisogno nelle richieste successive. Salviamo questo token in una variabile. Perché il valore della variabile verrà determinato durante l'esecuzione dello script, utilizziamo un meccanismo speciale per questo - variabili dinamiche.

Innanzitutto, eseguiamo una richiesta di accesso. Nella scheda Analizzato rispondi, posiziona il cursore sul token e nel menu contestuale (che si richiama sia con il tasto destro del mouse sia cliccando sul pulsante...) seleziona la voce Assegna alla variabile. Apparirà una finestra di dialogo con i seguenti campi:

  • sentiero — quale parte della risposta viene presa (nel nostro caso lo è body.token)
  • Valore corrente — quale valore si trova lungo il Percorso (nel nostro caso questo è il valore del token)
  • Nome della variabile — nome della variabile dove Valore corrente sarà preservato. Nel nostro caso lo sarà token
  • Nodo — in quale degli antenati verrà creata la variabile Nome della variabile. Selezioniamo Progetto

La finestra di dialogo completata è simile alla seguente:

TestMace. Inizio veloce

Ora ogni volta che il nodo viene eseguito accesso variabile dinamica token verrà aggiornato con il nuovo valore dalla risposta. E questa variabile verrà memorizzata in Progetto nodo e, grazie all'ereditarietà, sarà disponibile ai discendenti.

Per accedere alle variabili dinamiche, è necessario utilizzare variabile incorporata $dynamicVar. Ad esempio, per accedere a un token memorizzato, è necessario chiamare ${$dynamicVar.token}.

Passiamo il token di autorizzazione nelle richieste

Nei passaggi precedenti abbiamo ricevuto il token di autorizzazione e tutto ciò che dobbiamo fare è aggiungere un'intestazione Authorization con significato Bearer <tokenValue> in tutte le richieste che richiedono autorizzazione, comprese crea-post. Esistono diversi modi per farlo:

  1. Copia manualmente il token e aggiungi un'intestazione di autorizzazione alle richieste di interesse. Il metodo funziona, ma il suo utilizzo è limitato alle sole richieste del tipo “fatto e buttato”. Non adatto per l'esecuzione ripetuta di script
  2. Utilizza la funzionalità autorizzazione.
  3. Da usare intestazioni predefinite

L'utilizzo del secondo metodo sembra ovvio, ma nel contesto di questo articolo questo approccio è... poco interessante. Beh, davvero: il meccanismo di autorizzazione plus minus ti è familiare da altri strumenti (anche se abbiamo cose come ereditarietà dell'autorizzazione) ed è improbabile che sollevi interrogativi.

Un'altra cosa sono le intestazioni predefinite! In poche parole, le intestazioni predefinite sono intestazioni HTTP ereditate che vengono aggiunte alla richiesta per impostazione predefinita, a meno che non siano esplicitamente disabilitate. Utilizzando questa funzionalità è possibile, ad esempio, implementare autorizzazioni personalizzate o semplicemente eliminare la duplicazione negli script. Usiamo questa funzionalità per passare un token nelle intestazioni.

In precedenza, abbiamo prudentemente salvato il token in una variabile dinamica $dynamicVar.token a livello del nodo Progetto. Non resta che fare quanto segue:

  1. Definire il titolo predefinito Authorization con significato Bearer ${$dynamicVar.token} a livello del nodo Progetto. Per fare ciò, nell'interfaccia Progetto del nodo è necessario aprire una finestra di dialogo con intestazioni predefinite (pulsante Headers nell'angolo in alto a destra) e aggiungi un titolo corrispondente. La finestra di dialogo con i valori compilati sarà simile alla seguente:
    TestMace. Inizio veloce
  2. Disabilita questa intestazione dalla richiesta di accesso. Questo è comprensibile: al momento del login non abbiamo ancora un token e lo installeremo con questa richiesta. Pertanto, nell'interfaccia di login della richiesta nella tab Headers nella regione di Ereditato deseleziona l'intestazione Autorizzazione.

È tutto. Ora l'intestazione dell'autorizzazione verrà aggiunta a tutte le richieste che sono figli del nodo Progetto, ad eccezione del nodo di accesso. Si scopre che in questa fase abbiamo già uno script pronto e tutto ciò che dobbiamo fare è avviarlo. È possibile eseguire lo script selezionando Correre nel menu contestuale del nodo Progetto.

Verifica della correttezza della creazione del post

In questa fase il nostro script può effettuare il login e, utilizzando un token di autorizzazione, creare un post. Dobbiamo però assicurarci che il post appena creato abbia il nome corretto. Cioè, in sostanza, non resta che fare quanto segue:

  • Invia una richiesta per ricevere un post tramite ID,
  • Controlla che il nome ricevuto dal server corrisponda al nome inviato durante la creazione del post

Diamo un'occhiata al primo passo. Poiché il valore id viene determinato durante l'esecuzione dello script, è necessario creare una variabile dinamica (chiamiamola postId) dal nodo crea-post a livello del nodo Progetto. Sappiamo già come farlo, basta fare riferimento alla sezione Salva il token in una variabile. Non resta che creare una richiesta per ricevere un post utilizzando questo ID. Per fare ciò, creiamo un RequestStep get-post con i seguenti parametri:

  • Tipo di richiesta: GET
  • URL: ${dominio}/posts/${$dynamicVar.postId}

Per implementare il secondo passaggio, dobbiamo familiarizzare Affermazione nodo. Un nodo Asserzione è un nodo che consente di scrivere assegni per richieste specifiche. Ciascun nodo Asserzione può contenere diverse asserzioni (controlli). Puoi leggere di più su tutti i tipi di affermazioni dal ns documentazione. Noi useremo Compare asserzione con operatore equal. Esistono diversi modi per creare asserzioni:

  1. Lungo. Creare manualmente un nodo Asserzione dal menu contestuale del nodo RequestStep. Nel nodo Asserzione creato aggiungere l'asserzione di interesse e compilare i campi.
  2. Veloce. Crea un nodo Asserzione insieme a un'asserzione dalla risposta del nodo RequestStep utilizzando il menu contestuale

Usiamo il secondo metodo. Ecco come apparirà nel nostro caso.

TestMace. Inizio veloce

Per coloro che non capiscono, ecco cosa sta succedendo:

  1. Fai una richiesta nel node get-post
  2. Nella scheda Analizzato rispondi, richiama il menu contestuale e seleziona Creare asserzioni -> Confronta -> Pari

Congratulazioni, abbiamo creato il nostro primo test! Semplice, no? Ora puoi eseguire completamente lo script e goderti il ​​risultato. Tutto ciò che resta è rifattorizzarlo un po' ed eliminarlo title in una variabile separata. Ma questo te lo lasceremo come compito a casa)

conclusione

In questa guida abbiamo creato uno scenario completo e allo stesso tempo abbiamo esaminato alcune delle funzionalità del nostro prodotto. Naturalmente non abbiamo utilizzato tutte le funzionalità e nei seguenti articoli forniremo una panoramica dettagliata delle capacità di TestMace. Rimani sintonizzato!

PS Per chi è troppo pigro per riprodurre tutti i passaggi, li abbiamo gentilmente registrati deposito con il progetto dall'articolo. Puoi aprirlo con Compila il -> Progetto aperto e seleziona la cartella Progetto.

Fonte: habr.com

Aggiungi un commento