10 strumenti di test PHP per plugin di WordPress

Pubblicato: 2022-08-05

Nessun software è privo di bug. Questo è un assioma che si applica a ogni linguaggio di programmazione ea ogni applicazione.

Quando questi bug vengono distribuiti all'interno del tuo sito Web in produzione, puoi subire conseguenze negative di gravità variabile. Questi sono alcuni esempi, che vanno dal fastidioso all'economicamente dannoso:

  • Lieve: un utente non è in grado di fare clic su un collegamento interrotto.
  • Grave: il pulsante "Invia" di un modulo di contatto non funziona, che l'utente scopre solo dopo aver composto il messaggio.
  • Grave: un gateway di pagamento non configurato correttamente, che impedisce agli utenti di acquistare prodotti nel tuo negozio di e-commerce, abbandonando così il sito.

Nessuno strumento è sufficiente per gestire tutti gli aspetti del test di un'applicazione... ma con un piccolo aiuto da questa guida, puoi creare uno stack per il tuo prossimo progetto Clicca per Tweet
Nessuno strumento unico è sufficiente per gestire tutti gli aspetti del test di un'applicazione da tutte le diverse angolazioni possibili. Infatti, oltre a trovare bug, è fondamentale eseguire test aggiuntivi per validare altre funzioni dell'applicazione, come ad esempio:

  • Accessibilità e usabilità
  • Prestazioni accettabili
  • Movimentazione del traffico e del carico


In questo articolo, esamineremo 10 strumenti creati dalla comunità open source che possono aiutare a creare uno stack per testare il codice PHP nei plugin di WordPress. Alcuni di questi strumenti sono stati progettati specificamente per testare il codice PHP; altri sono pensati per testare il codice WordPress; e alcuni altri strumenti sono stati creati per gestire alcune funzionalità generiche utili per i test.

1. Dev Kinsta

Dettagli per un sito WordPress locale in DevKinsta.
Dettagli per un sito WordPress locale in DevKinsta.

DevKinsta è una suite di sviluppo locale per siti WordPress. Solo fornendo alcuni dettagli di base, un'istanza locale di un sito WordPress viene installata immediatamente e viene fornita in bundle con diversi strumenti di sviluppo utili come una casella di posta elettronica, un gestore di database e la registrazione per una più semplice risoluzione dei problemi.

DevKinsta è normalmente utilizzato da sviluppatori e designer durante la creazione di temi e plugin di WordPress. Ma può anche essere utilizzato come server Web locale per l'esecuzione di test di integrazione e funzionalità. Ciò viene realizzato in tandem con uno strumento HTTP che ti aiuta a verificare che il contenuto della risposta e le intestazioni siano corretti.

Le caratteristiche principali di DevKinsta sono:

  • Facile creare un nuovo ambiente WordPress ed eliminarlo una volta che non è più necessario
  • Consente di testare qualsiasi versione supportata di PHP e WordPress e qualsiasi combinazione di esse
  • Si integra perfettamente con MyKinsta dove gli utenti possono creare un backup esterno dei propri siti e dati

2. Unità PHP

Logo dell'unità PHP.
Logo dell'unità PHP.

PHPUnit è un framework di test orientato ai programmatori per PHP. È il framework più popolare per l'esecuzione di unit test nel codice PHP, con l'obiettivo di convalidare singole unità di codice sorgente.

I test PHPUnit consentono agli sviluppatori di trovare i problemi il prima possibile all'interno del ciclo di sviluppo, aiutando a garantire che non siano state introdotte regressioni del codice (cioè le modifiche a qualche pezzo di codice non hanno causato problemi da qualche altra parte).

Le caratteristiche principali di PHPUnit sono:

  • Test di nuove funzionalità
  • Convalida del codice appena rifattorizzato
  • Può essere completamente automatizzato ed eseguito all'interno del processo di integrazione continua di scelta
  • Debug
  • Documentazione automatica sull'uso previsto tramite richiamo di funzionalità e vincoli
  • Consente l'approccio Test-Driven Development (TDD) in cui gli sviluppatori creano prima i test, quindi le funzionalità

3. Scimmia cerebrale

Logo della scimmia del cervello.
Logo della scimmia del cervello.

Brain Monkey è un'utilità di test per PHP e WordPress. Fornisce strumenti indipendenti dal framework che consentono di ridefinire i metodi PHP e testare il comportamento di qualsiasi applicazione PHP. Fornisce inoltre strumenti specifici per testare il codice WordPress.

Le caratteristiche principali di Brain Monkey sono:

  • Consente agli unit test di interagire con librerie esterne scaricate
  • Consente l'invocazione delle funzioni di WordPress senza la necessità di caricare l'ambiente WordPress
  • Può affermare che le funzioni di WordPress (come add_filter o do_action ) richiamano la funzionalità come previsto

4. Falsificatore del cervello

Brain Faker su GitHub.
Brain Faker su GitHub.

Brain Faker utilizza Faker (una popolare libreria PHP per la generazione di dati falsi) e Brain Monkey per fornire una facile generazione di falsi oggetti WordPress e relative funzioni da testare, tra cui:

  • istanze WP_Post e simulazioni di funzioni correlate come get_post e get_post_field
  • WP_User e funzioni correlate fittizie come get_userdata , get_user_by , user_can e altro
  • istanze WP_Term e funzioni correlate fittizie come get_term e get_term_by
  • Istanze WP_Comment
  • Istanze di WP_Site e simulazioni di funzioni correlate come get_site
  • WP_Post_Type e funzioni correlate fittizie come get_post_type_object e post_type_exists
  • Istanze di WP_Taxonomy e finte funzioni correlate come get_taxonomy e taxonomy_exists
  • Istanze WP_Error

Le caratteristiche principali di Brain Faker sono:

  • Inserisce dati WordPress falsi ma realistici nello unit test: l'accesso alla data modificata di un post falso si comporterà come una data (ad es 2022-04-17T13:06:58+00:00 ), il nome di un utente sarà appropriato (ad es. "John Smith" ), un'istanza di post falsa è creata da un'istanza utente falsa e così via
  • I dati falsi possono essere forniti in anticipo o generati casualmente
  • Estensibile: gli sviluppatori possono deridere classi e funzioni dai propri plugin di WordPress

5. Presa in giro

Presa in giro su GitHub.
Presa in giro su GitHub.

Mockery è un framework di oggetti fittizi PHP semplice ma flessibile pensato per essere utilizzato insieme a PHPUnit, PHPSpec o qualsiasi altro framework di unit test. Offre un doppio framework di test in grado di definire tutte le possibili operazioni e interazioni con gli oggetti utilizzando un Domain Specific Language (DSL) leggibile dall'uomo.

Le caratteristiche principali di Mockery sono:

  • Consente la generazione flessibile di oggetti fittizi e stub (che forniscono risposte predefinite predefinite a chiamate specifiche effettuate durante i test)
  • Migliora le capacità di isolamento dei test di PHPUnit
  • API flessibile per esprimere aspettative derise, imitando il più possibile una descrizione in linguaggio naturale (ad esempio $mock->shouldReceive('myMethod')->once()->andReturn('Hello world!'); )
  • Unit test che utilizzano oggetti fittizi in memoria per evitare la necessità di accedere a sistemi più lenti (come database, file system o servizi esterni)
  • Può deridere comportamenti deterministici e non deterministici

6. Strumento di esportazione nativo di WordPress

Lo strumento di esportazione di WordPress.
Lo strumento di esportazione di WordPress.

Lo strumento di esportazione nativo di WordPress scarica i dati WordPress del sito sul tuo dispositivo come file XML, inclusi post, pagine, tipi di post personalizzati, commenti, campi personalizzati, categorie, tag, tassonomie personalizzate, utenti e media. Il file XML presenta un formato personalizzato (chiamato file WordPress eXtended RSS o WXR) che può essere importato in qualsiasi sito WordPress.

Questo strumento non è specificamente progettato per il test. Tuttavia, la sua utilità deriva dalla possibilità di creare snapshot del database di WordPress contenenti un set di dati adatto, che possono quindi essere utilizzati per i test. Ciò significa che il sito WordPress in produzione, che contiene dati reali, può essere esportato e importato in un'istanza di sviluppo o staging per testare nuove funzionalità.

Le funzionalità principali dello strumento di esportazione di WordPress sono:

  • Creazione di dati di test utilizzando un vero sito WordPress
  • File di esportazione condivisibile dell'intero database
  • Utile sia per integrazione che per unit test

7. Guzzle

Logo Guzzle.
Logo Guzzle.

Guzzle è un client HTTP PHP che semplifica l'invio di richieste HTTP e l'integrazione con i servizi Web.

Guzzle è uno strumento generico, quindi il test è solo uno dei suoi possibili casi d'uso. Insieme a un server Web locale come DevKinsta, Guzzle consente di eseguire test di integrazione: puoi utilizzare Guzzle per inviare una richiesta HTTP al server Web di sviluppo, quindi passare la risposta a uno unit test in PHPUnit che verifica il contenuto e le intestazioni sono impostati come previsto.

Le caratteristiche principali di Guzzle sono:

  • Soddisfa la raccomandazione dello standard PHP "PSR-7" (per interfacce di messaggi HTTP), precludendo il blocco del fornitore
  • Semplice e veloce
  • I test vengono eseguiti su un sito WordPress reale, aumentando l'affidabilità
  • Può essere eseguito dall'interno di PHPUnit per facilità e velocità
  • I test di integrazione possono essere automatizzati e aggiunti al processo di integrazione continua

8. WP-CLI

Logo WP-CLI.
Logo WP-CLI.

WP-CLI è l'interfaccia della riga di comando per WordPress. Con esso, puoi aggiornare plug-in, configurare installazioni multisito e molto altro, senza utilizzare un browser web.

WP-CLI non è specificamente uno strumento di test, ma il test è tra i suoi numerosi casi d'uso. Ad esempio, dopo aver avviato un nuovo server Web di sviluppo, è possibile eseguire uno script bash contenente i comandi WP-CLI per importare i dati di test nel sito WordPress, creare gli utenti con i ruoli e le capacità appropriati, installare i plug-in di terze parti necessari e altri compiti simili.

Poiché lo script con i comandi WP-CLI può essere archiviato nel tuo repository Git, il processo per eseguire i test di integrazione può quindi essere automatizzato e integrato all'interno del tuo processo di integrazione continua:

  1. Usa lo strumento di esportazione di WordPress per generare dati di test reali e archiviarli nel repository Git.
  2. Usa DevKinsta per avviare un server web con una nuova istanza di WordPress.
  3. Usa WP-CLI per importare i dati di test nel sito WordPress (DevKinsta può essere gestito tramite WP-CLI).
  4. Crea uno unit test in PHPUnit in modo che Guzzle esegua una richiesta HTTP sul server Web per verificare il contenuto e le intestazioni della risposta.

Le caratteristiche principali di WP-CLI sono:

  • Consente l'esecuzione remota di comandi sull'istanza di WordPress tramite un'interfaccia a riga di comando
  • Estensibile con altri strumenti
  • Migliora le capacità dello stack di test
  • Consente la completa automazione del processo

9. XDebug

Logo XDebug.
Logo XDebug.

XDebug è un'estensione per PHP che fornisce una gamma di funzionalità per migliorare l'esperienza di sviluppo di PHP, inclusi debugging, miglioramenti alla segnalazione degli errori di PHP, traccia, profilatura e analisi della copertura del codice.

XDebug non ti aiuterà a testare il tuo codice, ma ti aiuterà a scoprire dove si trova il bug. La combinazione di XDebug con PHPUnit è particolarmente efficace: se un test fallisce e non riesci a trovare l'origine del problema, puoi utilizzare XDebug per aggiungere punti di interruzione nel codice dello unit test. Quando si esegue nuovamente lo unit test, lo script PHP verrà messo in pausa in ciascuno di questi punti di interruzione, consentendo di ispezionare lo stato corrente dell'esecuzione (stack di chiamate, proprietà e valori degli oggetti, ecc.) e tentare di scoprire cosa c'è che non va.

Le caratteristiche principali di XDebug sono:

  • Presenta integrazioni per i più diffusi editor PHP, inclusi VS Code, PHPStorm e Sublime
  • Profila quanto tempo viene speso in ogni chiamata di funzione e quanta memoria consuma
  • Molto più potente del semplice utilizzo di var_dump per eseguire il debug del codice
  • Consente la modifica al volo dei valori delle variabili durante la pausa sui punti di interruzione

10. PHP Stan

Logo PHP Stan.
Logo PHP Stan.

PHPStan è uno strumento di analisi statica per PHP, progettato per trovare bug nel codice anche prima di scrivere i test.

L'obiettivo di PHPStan è ridurre il numero di test che gli sviluppatori devono scrivere. Questo strumento è il primo eseguito nello stack di test, rilevando preventivamente il maggior numero di bug possibile. Solo i bug che non possono essere dedotti dall'analisi statica (ad esempio quelli con logica errata) devono essere validati tramite unit test.

PHPStan funziona scansionando l'intera codebase e cercando le discrepanze. Ad esempio, il valore di risposta di una funzione che restituisce un float non può essere assegnato a un parametro di funzione di tipo intero. Ogni volta che il codice contiene una tale occorrenza, si tratta di un potenziale bug e PHPStan ti avviserà durante la fase di sviluppo, proprio mentre stai scrivendo il codice dell'applicazione.

Le caratteristiche principali di PHPstan sono:

  • Automazione e integrazione all'interno del processo di integrazione continua esistente
  • Individua molti bug complicati, come le mancate corrispondenze di tipo
  • Scansiona l'intera codebase, trovando bug in porzioni di codice eseguite raramente
  • Organizzato in livelli di complessità crescente per consentire un'integrazione graduale
  • Dispone di estensioni per i framework PHP e CMS più popolari, inclusi Symfony, Laravel, Doctrine, Nette e WordPress

Riepilogo

Il costo per cui i bug passano inosservati nell'applicazione in produzione può essere dannoso per la tua reputazione e il tuo reddito, quindi devi tentare di eliminarli prima che influiscano sui tuoi utenti.
Dai un'occhiata a questi 10 utili strumenti che possono aiutarti a creare un potente stack per testare il codice PHP nei plugin di WordPress Fai clic per twittare
In applicazioni complesse, è quasi impossibile avere la certezza al 100% che non conterrà bug. Per questo motivo, è necessario impostare un processo per trovare e rimuovere il maggior numero di bug possibile durante il ciclo di sviluppo iniziale.

Con un toolkit di test ben progettato, puoi ridurre notevolmente le possibilità che la tua applicazione si comporti in modi imprevisti. La comunità open source ha creato e reso disponibili numerosi strumenti per testare i diversi aspetti di un'applicazione, cosa che puoi e dovresti! — utilizzare per produrre uno stack di test completo.

In questo articolo, abbiamo esaminato 10 strumenti per aiutarti a raggiungere i tuoi obiettivi per testare il codice PHP in un plug-in di WordPress.

Quale di questi strumenti hai utilizzato per il tuo ultimo progetto? Facci sapere cosa hai costruito con esso nella sezione commenti qui sotto!