REST Assured vs. JMeter: un confronto tra gli strumenti di test REST

Pubblicato: 2022-03-11

Il test automatizzato è una componente fondamentale del processo di garanzia della qualità del software. Ma testare le API di trasferimento dello stato rappresentativo (REST) ​​può essere un affare complicato. Molti di coloro che ricorrono al test manuale delle API REST trascurano i dettagli e perdono i modi in cui potrebbero risparmiare tempo.

Qualsiasi servizio API REST testato correttamente avrà queste aree coperte:

  • Verifica della conformità del servizio API agli standard REST
  • Test dei codici di risposta del servizio API
  • Affermazione del contenuto della risposta del servizio API
  • Analisi comparativa delle prestazioni del servizio API

Strumenti per il test REST

Per questo, hai bisogno degli strumenti giusti. Apache JMeter e REST Assured sono due popolari strumenti di test REST per testare i servizi API REST. Puoi saperne di più su come utilizzarli nella pratica da qui e qui.

In questo articolo imparerai i pro ei contro di entrambi questi strumenti e dove si adattano meglio ai tuoi progetti API REST esistenti.

Facilità di installazione

Esiste un prerequisito: sia JMeter che REST Assured richiedono Java, quindi è necessario che Java sia installato sul computer per eseguire JMeter o REST Assured.

Installare Apache JMeter è molto semplice: vai alla pagina di download, scegli lo ZIP o il TAR, scarica l'archivio, decomprimilo e sei pronto per partire.

Vai alla cartella in cui hai decompresso l'archivio, vai alla sottocartella bin ed esegui jmeter.bat (o simile per il tuo sistema operativo, se diverso da Windows). Per informazioni più dettagliate su come configurare Apache JMeter, vedere questa pagina.

L'installazione di REST Assured è un'esperienza leggermente diversa. REST Assured non è uno strumento autonomo. È una libreria Java. Per usarlo, devi impostare un nuovo progetto Java e includerlo come libreria per il tuo progetto. Naturalmente, c'è il supporto per molti strumenti di compilazione, quindi puoi semplicemente puntare il tuo risolutore di dipendenze su alcuni repository pubblici (Maven). Puoi trovare informazioni più dettagliate su come configurare REST Assured qui.

Documentazione

La documentazione di Apache JMeter può essere trovata sul sito Web ufficiale di JMeter. Fornisce una documentazione piuttosto completa dall'inizio a funzionalità complesse come gli ascoltatori. Inoltre, nel sito Web ufficiale di JMeter, puoi trovare collegamenti ad alcune risorse molto ricche come tutorial video. Se sei meno interessato a leggere e più a guardare, questo è sicuramente un vantaggio per te.

La documentazione REST Assured, come lo strumento/libreria stessa, può essere trovata all'interno del repository Github. Ha un ampio elenco di funzionalità elencate nella documentazione in linea con spiegazioni molto dettagliate su come ottenere qualcosa. Tuttavia, l'intera documentazione è un'unica pagina Web enorme, non il modo più intuitivo per esplorare uno strumento.

Creazione e manutenzione automatizzate di test REST

Apache JMeter, come applicazione standalone con un'interfaccia utente grafica (GUI), ti consente di creare i tuoi test dalla GUI. Questo può essere utile soprattutto a causa della gerarchia di entità introdotta da JMeter: tutto ciò che crei all'interno del tuo test verrà mostrato in una rappresentazione ad albero nella GUI di JMeter.

Per creare un test, non è necessario avere alcuna abilità di codifica. Tuttavia, la GUI non limita nessuna delle possibilità relative alla pianificazione dei test. Se desideri comunque aggiungere un po' di programmazione/flusso personalizzato, i componenti BeanShell ti permetteranno di farlo.

Schermata della GUI di JMeter

Quando salvi il tuo progetto JMeter, tutto ciò che hai creato verrà salvato in un enorme file XML (con estensione .jmx ). In genere, anche per una piccola modifica in uno dei test, dovrai (molto probabilmente) riaprire il progetto nella GUI per apportare la modifica.

Se hai bisogno di collaborare con altri sullo stesso file di progetto JMeter, questo enorme file XML non sarà facile da mantenere utilizzando nessuno dei sistemi di gestione del controllo del codice sorgente (SCM) (come Git, SVN, Perforce, ecc.).

REST Assured, d'altra parte, richiede competenze di codifica Java per creare i test. Non esiste una GUI intuitiva per la creazione di test. Tuttavia, REST Assured ti consente di scrivere i test utilizzando il linguaggio Gherkin (sintassi Given-When-Then), quindi anche se hai bisogno di alcune abilità di codifica Java, i test sono abbastanza leggibili dall'uomo.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

Poiché REST Assured è una libreria e i test sono effettivamente scritti in Java, puoi organizzare i tuoi test in file Java separati, quindi quando devi modificare un test, devi solo aprire un file. Non hai bisogno di una GUI, quindi puoi modificare facilmente il test anche tramite un terminale SSH. La collaborazione con altri è abbastanza semplice perché è facile mantenere i file Java utilizzando qualsiasi SCM.

Tipi di test REST

JMeter è noto come strumento di test delle prestazioni per testare app e servizi Web. Immediato, ha belle opzioni di reporting con diversi tipi di grafici che puoi utilizzare per mostrare le metriche del test delle prestazioni.

Schermata dei tempi di risposta di JMeter

D'altra parte, non è nemmeno lo scenario di utilizzo principale per JMeter. È possibile creare test funzionali per le API REST con JMeter, inclusa l'asserzione di risposta.

Lo scenario di utilizzo principale di REST Assured è per il test funzionale dei servizi API REST. Viene fornito anche con il proprio meccanismo di asserzione della risposta (la sintassi Gherkin). Poiché REST Assured è una libreria Java, può essere facilmente integrata con gli unit test.

Quando si tratta di test delle prestazioni, REST Assured non supporta il test delle prestazioni pronto all'uso. Se, tuttavia, desideri utilizzarlo per i test delle prestazioni, dovresti sviluppare il tuo framework personalizzato per i test delle prestazioni attorno a REST Assured.

Esecuzione del test

I test JMeter possono essere invocati in due modi.

Dall'interfaccia utente facendo clic sul pulsante Esegui:

Schermata del pulsante Esegui JMeter

Dalla riga di comando:

 jmeter -n -t your_script.jmx

La raccomandazione ufficiale di JMeter è di non eseguire i test delle prestazioni utilizzando la GUI, poiché i test verranno eseguiti più lentamente (in termini di numero di richieste al secondo) rispetto all'esecuzione dalla riga di comando.

REST Assured, d'altra parte, richiede un test runner separato, ad esempio jUnit o TestNG (o qualsiasi altro modo per eseguire codice Java).

Da Eclipse usando TestNG:

REST Assured Eclipse Screenshot

Dalla riga di comando utilizzando, ad esempio, lo strumento di compilazione Ant:

 ant run-tests

Tipi di rapporti

Apache JMeter, a causa del suo scopo principale, ha un gran numero di tipi di report che puoi creare dai risultati dei tuoi test. Poiché puoi eseguire test delle prestazioni da JMeter, le metriche delle prestazioni vengono generalmente mostrate utilizzando grafici come questo:

Rapporto sulle prestazioni del JMeter

Puoi saperne di più sui rapporti JMeter e sui tipi di rapporti che puoi creare da qui.

REST Assured stesso non crea alcun report, quindi dipende da te e da un framework di test che hai scelto. Tuttavia, se integrato con alcuni framework di unit test, puoi ottenere report abbastanza utilizzabili nei formati HTML, testo o XML.

Rapporto HTML REST Assured

Integrazione con Jenkins

Quando si tratta di integrazione continua dei prodotti sottoposti a test, è molto importante integrare il framework di automazione dei test con gli strumenti CI sia per l'esecuzione dei test che per il reporting dei risultati.

I test automatici di JMeter possono essere facilmente integrati con Jenkins utilizzando il plug-in Performance che consente di impostare azioni post-compilazione e di ottenere una pagina dashboard dall'aspetto gradevole da una pagina di lavoro Jenkins.

Schermata di JMeter Jenkins

REST Assured può anche essere facilmente integrato con Jenkins perché Jenkins ha plug-in per quasi tutti i framework di test; ad esempio, il plug-in TestNG che può creare di nuovo un solido grafico di tendenza per i risultati dei test.

REST Assured Jenkins Screenshot

Attività comunitaria

Questa è una categoria che non può essere misurata facilmente. L'attività della comunità dipende da una serie di fattori come la maturità dello strumento o il numero di contributori.

Apache JMeter ha una comunità più ampia al giorno d'oggi. Ciò è dovuto principalmente al fatto che JMeter è apparso sul mercato molto tempo fa ed è considerato uno standard del settore quando si tratta di test delle prestazioni di app e servizi Web. JMeter pubblica rilasci ufficiali ogni 5-6 mesi. Il suo repository GitHub è molto attivo, con nuovi commit su base giornaliera. JMeter utilizza Bugzilla come tracker dei problemi e ha un elenco di problemi aperti che vengono modificati di frequente. Ci sono più di 23000 risultati per JMeter nella ricerca StackOverflow. Dai siti di social network, JMeter ha un account Twitter ufficiale. Su Facebook e LinkedIn non esiste un account ufficiale per JMeter, ma ci sono un paio di gruppi, il più grande dei quali è questo gruppo Facebook e questo gruppo LinkedIn.

REST Assured si sta facendo strada verso la fase principale ed è diventata la prima scelta, una raccomandazione da più fonti, quando si tratta di automatizzare i test funzionali del servizio API REST. REST Assured ha pubblicato rilasci ufficiali una volta ogni 6 mesi negli ultimi due anni. Il repository GitHub ha molti contributori ed è un po' meno attivo di quello di JMeter, ma è anche molto attivo. REST Assured tiene traccia dei problemi nel repository GitHub, quindi tutto è in un unico posto. In StackOverflow, ci sono oltre 2000 risultati di ricerca per REST Assured, quindi possiamo dire che è significativamente inferiore rispetto ai risultati di ricerca di JMeter. Per quanto riguarda i gruppi di social network, solo il gruppo LinkedIn è stato trovato con un numero di membri significativamente inferiore rispetto a JMeter. La comunità REST Assured potrebbe non essere grande quanto la comunità JMeter, ma è molto attiva.

Sommario

Sia JMeter che REST Assured hanno i loro vantaggi l'uno sull'altro. Ma in base al progetto su cui stai lavorando, uno sarà più adatto dell'altro per l'automazione dei test dell'API REST. Entrambi sono molto robusti, hanno utili opzioni di test, vantano buone capacità di reporting e possono essere facilmente integrati con framework di test personalizzati.

Ecco un riepilogo di tutti i criteri di confronto esplorati in questo articolo per questi due popolari strumenti di test REST:

Apache JMeter Stia tranquillo
Richiede abilità di codifica No Sì (Java)
Documenti accurati
Prove funzionali Sì (ma eccessivo)
Test delle prestazioni No (fuori dagli schemi)
Adatto per SCM (Git, P4...) No
Rapporti di prova No
Integrazione con strumenti CI
Integrazione con unit test No
Test di parallelizzazione
Attività comunitaria