9 migliori framework di test automatici per PHP
Hai mai passato lunghe ore a eseguire il debug del codice PHP? Beh, per la maggior parte dei programmatori non è probabilmente la sfida più affascinante, ma c'è una soluzione che può aiutarci ad abbreviare questo noioso compito. Test automatizzati può migliorare significativamente il flusso di lavoro dello sviluppo PHP di consentendo test pre-scritti per guidare il processo di sviluppo.
In questo post cercheremo di capire perché i test automatici sono così interessanti, come funziona e cosa sono i migliori quadri di test puoi iniziare con.
Perché il test è importante
Novizio Gli sviluppatori PHP tendono a non scrivere test per il loro codice. Molti di noi hanno iniziato la nostra carriera testando nuove funzionalità e funzioni che avevamo appena scritto nella finestra del browser una per una, e quando qualcosa è andato storto non avevamo idea di cosa fare.
La scrittura di test per il nostro codice può risparmiare tempo prezioso per il debugging e ore di mal di testa. Quando il codice non testato verrà messo in produzione, le recensioni che otterremo probabilmente non saranno così belle. Quindi cosa possiamo fare?
Probabilmente l'idea migliore è quella di stabilire un flusso di lavoro di test produttivo in cui abbiamo bisogno di scrivere il nostro codice di test che controlla se il nostro codice dell'applicazione funziona correttamente.
Il trucco è quello il codice di test deve essere scritto prima del codice dell'applicazione. In questo modo possiamo garantire sin dall'inizio che il codice che scriviamo funzioni correttamente. Il codice di test andrà in file separati. Se in seguito ci imbattiamo in errori nella nostra app PHP, non abbiamo bisogno di fare altro, basta eseguire i nostri test che si spera possano darci suggerimenti adeguati sui problemi.
Oltre a risparmiare tempo e preparare correttamente la nostra app per la produzione, il test ha anche molti altri vantaggi, come ad esempio:
- codice più gestibile
- facilitazione del refactoring
- meno problemi di sicurezza
- codice base meno gonfiato (l'adattamento del codice dell'applicazione al codice di prova pre-scritto ci farà dimenticare parti superflue)
- prestazioni migliori
Che cosa è il test automatico??
Naturalmente, possiamo scrivere i nostri test manualmente, ma dopo un po 'può essere noioso e dispendioso in termini di tempo con molte attività ripetitive. I test manuali possono essere sostituiti da test automatizzati in cui utilizziamo software specifici che faranno il lavoro faticoso per noi e possiamo dedicare più tempo alla creazione della logica del codice di test.
PHP è per fortuna un linguaggio di programmazione abbastanza popolare, quindi ci sono molti framework di test automatizzati tra cui scegliere.
Sviluppo basato sui test (TDD) vs. Sviluppo basato sul comportamento (BDD)
I due principali approcci utilizzati dai framework di test automatizzati sono lo sviluppo basato su test (TDD) e lo sviluppo basato sul comportamento (BDD). In entrambi, il processo di sviluppo è guidato dai test, il che significa che i test vengono scritti prima del codice dell'applicazione.
La principale differenza tra i test guidati dai test e quelli comportamentali è nella sintassi del codice di test: TDD utilizza il codice PHP corretto nei file di test, mentre BDD usa frasi leggibili dall'uomo che descrivono il comportamento di ciascuna caratteristica e possono essere compresi anche da soggetti non tecnici.
Un test TDD si presenta così nell'editor di codice, è solo un normale codice PHP orientato agli oggetti:
Un test BDD è simile a questo, i non programmatori possono anche dare un senso a questo:
10 framework di test automatici PHP
Con questo in mente, diamo un'occhiata a 10 potenti framework di test automatizzati per PHP che puoi usare.
1. PHPUnit
PHPUnit è il framework di test più conosciuto per la scrittura dei Test di unità per le app PHP. I test unitari prendono piccole porzioni di codice chiamate unità e le testano una ad una. Con l'aiuto di PHPUnit possiamo condurre lo sviluppo basato su test.
Può essere utilizzato tramite il riga di comando, e ci fornisce a pratica classe TestCase che possiamo estendere in base alle nostre esigenze. PHPUnit consente anche agli sviluppatori di utilizzare metodi di asserzione pre-scritti per affermare che l'app si comporta in un certo modo.
2. Codeception
La codeception non ci consente solo di scrivere test unitari, ma anche test funzionali e di accettazione. Questi ultimi due test l'app di PHP nel suo insieme con tutte le funzionalità legate insieme, non come unità. La codeception ci consente di abilitare e configurare diversi moduli in base alle nostre esigenze di sviluppo.
È integrato con molti framework di sviluppo PHP come Symfony2, Laravel4, Yii, Phalcon e Zend Framework. Ciò significa che possiamo utilizzare insieme un framework di testing dell'automazione PHP e un framework di sviluppo PHP per stabilire un flusso di lavoro di sviluppo super-efficiente.
3. Behat
Behat è un popolare framework di testing PHP basato sul comportamento. I test che possiamo scrivere con Behat sembrano piuttosto mi piacciono le storie che il codice. Behat utilizza il sottotipo StoryBDD di sviluppo basato sul comportamento (l'altro sottotipo è SpecBDD).
Il framework è stato ispirato dal progetto Cucumber che è un framework di test per il linguaggio di programmazione Ruby.
4. PHPSpec
PHPSpec segue anche l'approccio di testing basato sul comportamento, ma il suo altro sottotipo chiamato SpecBDD. Con PHPSpec abbiamo bisogno di scrivere prima le specifiche che descrivono il comportamento del codice dell'applicazione. È stato anche ispirato da un framework di test Ruby chiamato RSpec.
5. Storyplayer
Storyplayer è un framework di test completo che rende possibile scrivere test end-to-end per un'intera piattaforma. Storyplayer ha il supporto per creare e distruggere ambienti di test su richiesta. Segue l'approccio di test TDD e ci consente di scrivere test funzionali che possono controllare un'applicazione nel suo complesso.
6. Peridot
Peridot è un framework di test leggero ed estensibile per PHP. È dotato di un architettura guidata dagli eventi che consente ai tester di facilmente personalizzare il framework tramite plugin e reporter.
Peridot usa il descrivilo sintassi per stabilire un linguaggio di test chiaro e leggibile che descriva chiaramente come dovrebbe comportarsi il nostro codice applicativo.
7. Atoum
Atoum è un framework di test PHP intuitivo e moderno che ci consente di eseguire test unitari. Semplifica lo sviluppo dei test e, poiché è un framework giovane, sfrutta alcune funzionalità più recenti introdotte in PHP 5.3 (puòessere usato con versioni PHP precedenti) per fornirci un processo di test rapido e facile da capire.
Atoum garantisce a elevato livello di sicurezza durante l'esecuzione del test, come isola ogni metodo di test nel proprio processo PHP.
8. Kahlan
Kahlan è un framework di test BDD completo che rende possibile scrivere Test unitari usando il descrivilo sintassi. Abbraccia il principio del disegno KISS (Keep It Simple, Stupid). Kahlan richiede almeno PHP 5.5.
Ha una piccola base di codice, si dice che sia circa 10 volte più piccola di PHPUnit, e ha un sacco di funzionalità che ci forniscono un flusso di lavoro di test estendibile e personalizzabile.
9. Selenio
Il selenio è un sofisticato framework di test che automatizza i browser. Ciò significa che è possibile scrivere test di accettazione degli utenti che esaminare l'intera app nel suo complesso.
Il selenio è uno strumento robusto con la propria API WebDriver che può guidare un browser in modo nativo come sebbene un utente reale possa usarlo localmente o su una macchina remota. Il selenio è uno strumento eccellente per testare applicazioni web più mature.
Pensieri finali
I framework di test automatizzati ci consentono di scrivere codice PHP di qualità superiore e, grazie alla popolarità del linguaggio, abbiamo molte scelte, quindi possiamo optare per quello che soddisfa le nostre esigenze di sviluppo..
C'è una cosa importante però che dobbiamo sempre tenere a mente. I test automatici possono essere potenti, ma possono mai sostituire il beta test - test eseguiti da veri umani che saranno i futuri utenti dell'applicazione.