Passa ai contenuti principali

Testare massivamente servizi Rest-API



Testare massivamente servizi Rest-API


E' facile e comodo usare Postman per testare e prototipare servizi REST/API ma come si progettano ed effettuano dei test per mettere sotto stress uno o più servizi ?


Configurare una collection ad-hoc

Il concetto di test massivo, quantomeno, in postman è collegato all'entità "Collection". Quindi bisogna creare una collection ad-hoc che contenga, clonandole, tutte le richieste che si vogliono testare massivamente.


All'interno di questa collection vanno raccolte tutte le variabili "statiche". Queste variabili sono i parametri che NON cambiano ad ogni iterazione. Per le variabili che cambiano ad ogni iterazione useremo un file apposito.

Configurare l'authorization a livello di collection

Nel caso di servizi con un sistema di autenticazione bisogna configurare questo sempre a livello di collection.



Una volta configurata l'autenticazione a livello di collection e magari testata isolatamente si passa all'autenticazione a livello di ogni singola request.


Bisogna specificare, come modalità di autenticazione, "Inherit auth from parent" per fare in modo che la specifica richiesta erediti l'autenticazione dalla collection.

ATTENZIONE: è fondamentale salvare ad ogni passaggio altrimenti non prende le modifiche.

Le richieste

Conviene iniziare con le richieste preparando un caso specifico di chiamata e accertandosi che funzioni.

Nella tab "Tests" è possibile scrivere del codice che effettui specifiche verifiche sul risultato ottenuto dall'esecuzione della richiesta, qui ad esempio si verifica se la risposta ha un codice HTTP 200, che equivale allo stato "OK":


Qui invece si verifica che la risposta sia un oggetto json, che abbia un oggetto "entry", che questo sia un vettore, che in questo vettore il primo elemento abbia una chiave "response" e che il suo valore sia 200:




Reiterare l'operazione per tutte le richieste che si vogliono testare raccogliendole nella medesima collection.

Parametri letti da file

Per parametrizzare le variabili con valori pescati da un file, che cambieranno ad ogni iterazione. Cioè i valori delle variabili verranno sostituiti, da quelli specificati nel file, ad ogni iterazione pescando dalle righe del file. Quindi se si vogliono fare 3 iterazioni con, ad ogni iterazione valori diversi per le seguenti tre variabili, va preparato un file come questo rappresentato:


Il file deve essere nel formato CSV.

Parametri generati dinamicamente

Alcuni parametri possono essere generati casualmente e dinamicamente da Postman come, ad esempio i guid nella forma "611c2e81-2ccb-42d8-9ddc-2d0bfa65c1b4". Per ottenere ciò basta assegnare alla variabile il valore "{{$guid}}" e lanciare la sua rigenerazione nel momento in cui serve il valore rinnovato. Nell'esempio in fase di "pre-request":



Esecuzione

In fase di esecuzione del test, che avviene mandando in "Run collection" dal menu contestuale alla collection:



Il run consentirà di selezionare il numero di iterazioni, l'attesa fra una iterazione e l'altra e l'eventuale file con i parametri di esecuzione visto prima:


Selezionato il file si può anche vederne un'ateprima:


I risultati riporteranno il superamento o meno dei singoli script di test, il codice di stato della risposta, il tempo di esecuzione e le dimensioni della risposta:


La console riporterà eventuali errori includendo tutti gli oggetti scambiati.

Commenti

Post popolari in questo blog

Telecamere Ip con accesso "nascosto"

Telecamere Ip con accesso "nascosto" Storia triste di un auto-hacking obbligato che mi ha fatto scoprire come la nostra privacy è realmente messa a rischi. Storia Ho acquistato dal mercatino/fiera del Radioamatore di Fasano quattro telecamere IP. La scatola riporta "Smart Camera" LF4810. Ne ho montata una e testata in tutte le sue funzionalità per oltre un mese. Chiaramente la manualistica scarsissima, come da tradizione in questi prodotti cinesi di costo molto concorrenziale, consiste in un "pieghevole" di 4 facciate. Chiaramente non erano documentate le impostazioni necessarie per attivare i protocolli ONVIF e RTSP che mi sono indispensabili per l'uso che ne devo fare. Nonostante questa scarsa documentazione dopo l'installazione base fatta con l'apposita app: tutto sembrava corretto. Chiaramente la prima azione che ho compiuto è stata quella di cambiare la password che di default è "123". Subito dopo h

Dynamic DNS con Duckdns.org in HTTPS

Obiettivo Avere un dominio https con certificato valido da usare come endpoint pubblico per Homeassistant e per un WebHook per i bot telegram. Fase 1 Registrazione del dominio in un servizio di dynamic DNS come https://www.duckdns.org/   : Scegliere per quale sistema operativo installare il client che si occuperà dell'aggiornamento dell'ip: Seguire la semplice guida per la configurazione del processo cron: Fase 2 Creazione del certificato e installazione sul server. Di tutto questo si occuperà una applicazione che si chiama certbot. $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt install python-certbot-apache $ sudo certbot --apache -d ol3.duckdns.org -d www.ol3.duckdns.org Fase 3 Esporre il servizio https sulla rete pubblica. Aprire o reindirizzare la porta 443 verso l'host sul quale si è fatta la configurazione di certbot dal proprio router. Il certificato di certbot è valido per novanta giorn

JHipster - Uso base

Cosa è JHipster è un "generatore di applicazioni" che fornisce tutto lo stack necessario ad implementare una applicazione web e/o a microservizi basata su Spring Boot e AngularJs. E' dotato di un marketplace di componenti già pronte: https://www.jhipster.tech/#modules E' dotato di uno strumento web per la modellazione dello schema E-R: https://start.jhipster.tech/jdl-studio/ Prerequisiti - Java 8  - Node.js (usare la versione LTS 64-bit) - NPM viene installato con Node.js ma va aggiornato      $ npm install -g npm - Per usare il JHipster Marketplace, installare Yeoman:       $ npm install -g yo Uso base Gli step, presi dal sito ufficiale sono questi: 1. Installare JHipster:       $ npm install -g generator-jhipster Nota: per installare una versione specifica del generator:   $ npm install -g generator-jhipster@6.0.5 2. Crea una nuova directory ed entra dentro questa:   $ mkdir myApp   $ cd M yApp 3. Eseguire JHipster e