Andrea Casarin

Andrea Casarin

Published on: 7/9/2018, 3:49:45 PM - Reading time: 4 minutes

Unit testing, per un WordPress più sicuro e performante

Con oltre il 30% delle preferenze, WordPress è una delle piattaforme più usate al mondo per la realizzazione di siti web. In questo articolo vediamo come sfruttare le potenzialità dello unit testing in WordPress per rendere il tuo sito molto più sicuro e performante.

WordPress, perché piace così tanto

Innanzitutto cerchiamo di capire come mai WordPress piace così tanto e cosa gli ha consentito di imporsi nel mercato dei CMS per lo sviluppo dei siti internet. Ecco alcuni punti di forza:

  • Bassi costi: con poche decine di euro l’anno acquisti dominio + hosting e sei già pronto per l’installazione. Aggiungendo una piccola somma hai un template personalizzabile;
  • Flessibilità: sebbene WordPress sia nato come piattaforma di blogging è evoluto in uno strumento flessibile che si presta alla realizzazione di siti con funzionalità molto diverse grazie agli innumerevoli plugin;
  • Semplicità di utilizzo: WordPress è molto semplice da usare. In tantissimi lo scelgono per la sua rinomata facilità nell’aggiornamento dei contenuti, dal catalogo prodotti dell’e-commerce agli articoli per il blog;
  • Posizionamento SEO: WordPress ha tutto ciò che serve per ragionare in ottica di posizionamento SEO già di base, inoltre alcuni plugin estendono questa possibilità fino a renderla eccellente (vedasi il famosissimo Yoast SEO);
  • Community di supporto: in quanto software open source, WordPress ha un’attivissima community composta da sviluppatori e appassionati sempre pronti a dare supporto. Plugin, temi, aggiornamenti, quesiti tecnici: nei forum trovi risposta a ogni tua domanda.

Logo WordPress Unit Testing

Proprio la popolarità di WordPress è croce e delizia per noi sviluppatori. Perché se da un lato i clienti sono consapevoli della forza di questo strumento, dall’altro non tutti i developer lavorano con accuratezza e anzi, spesso tralasciano step importanti consegnando un prodotto che in quanto a sicurezza e performance lascia a desiderare. Per questo voglio evidenziare l’importanza dello unit testing, anche in WordPress.

Unit testing: cos’è

Lo unit testing è un’attività di test che prevede la verifica della correttezza delle singole unità di codice ed è un ottimo metodo per testare il corretto funzionamento di un sito in WordPress. L’idea di fondo è quella di creare un set di test in grado di capire se il codice, dati determinati input, risponda nel modo giusto. Per fare questo si utilizza un tool, PHPUnit, che consente al developer di verificare che lato codice il comportamento sia corretto.

Come si evince da queste breve descrizione, sottoporre WordPress a unit testing è estremamente più affidabile e approfondito dei normali test manuali che vengono di solito effettuati. Questi nella maggior parte dei casi consistono in un’analisi limitata dell’implementazione del frontend del sito, senza però andare a indagare oltre. Inoltre, non essendo automatizzati, sono soggetti ad errori umani e difficilmente ripetibili.

Unit testing in WordPress: un breve tutorial

Vediamo ora passaggio per passaggio come installare e usare PHPUnit Testing in WordPress.

Installare PHPUnit Testing

La prima cosa da fare è installare PHPUnit Testing, con il seguente comando:

composer global require phpunit/phpunit

Installare WP-CLI

WP-CLI è l’insieme degli eseguibili da linea di comando per integrare e gestire le installazioni WordPress. Questo sistema fornisce un’interfaccia di linea di comando per azioni che di solito si effettuano sia dentro che fuori l’area amministrativa. Per saperne di più visita la pagina ufficiale di WP-CLI.

Quello che a noi interessa è che WP-CLI ha semplificato di molto l’installazione di PHPUnit: per alcune operazioni è infatti molto più comodo e veloce usare linee di comando piuttosto che agire via browser. Esiste una guida molto dettagliata (in lingua inglese) che spiega come far girare unit tests; di seguito riassumo in italiano i principali step.

Per installare WP-CLI, scrivere il seguente comando:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 
chmod +x wp-cli.phar 
sudo mv wp-cli.phar /usr/local/bin/wp

Ora che hai installato PHPUnit e WP-CLI, useremo quest’ultimo per impostare lo unit test per il plugin.

Set up dello unit test per plugin

Accedi alla root della tua installazione di WordPress e scrivi questo comando per generare i file di test del plugin:

wp scaffold plugin-tests wp-my-test

Dopo aver generato i file di test, ecco ora la schermata con la struttura del plugin:

|-bin/
 |----install-wp-tests.sh
 |-tests/
 |----bootstrap.php
 |----test-sample.php
 |-.travis.yml
 |-phpcs.xml.dist
 |-phpunit.xml.dist
 |-wp-my-test.php

Scegli la directory del plugin e lancia l’installazione con questo script, sostituendo “username”, “password” e “host” con i dati relativi alla tua installazione:

bin/install-wp-tests.sh wordpress_test username 'password' host latest

Un consiglio: per fare queste operazioni usa un database di test.

Esegui gli unit test e verifica il risultato

Adesso puoi eseguire PHPUnit per lanciare il test di esempio e verificare il risultato:

phpunit

Se è tutto corretto dovresti ottenere:

Wordpress Unit Testing Sample

Puoi quindi procedere con la scrittura dei tuoi test, prendi spunto da “test-sample.php” è il file che contiene il test di esempio appena eseguito.

I benefici dello unit testing in WordPress

Molti sviluppatori non usano testare in questo modo i loro progetti semplicemente perché non sanno come fare, o peggio ancora perché considerano la fase di test una perdita di tempo. Senz’altro lo unit testing in WordPress comporta un investimento di tempo, ma porta con se notevoli vantaggi:

  • Hai la sicurezza che pochi o addirittura nessun bug colpiranno il tuo software;
  • Risparmi tempo e denaro nelle fasi più delicate, ovvero supporto e aggiornamento;
  • Eviti problemi con i clienti ed eventuali rivalse sul tuo operato.

Ecco un breve video riassunto di questo articolo (in inglese):

Per maggiori informazioni vedi il manuale di WordPress e la documentazione per PHPUnit.

Se ti serve supporto tecnico per scrivere codice e test contattami!