Panoramica su SimpleTest

Panoramica ed elenco delle caratteristiche dello unit tester e del web tester di SimpleTest

# summary Cos'è SimpleTest?

Il cuore di SimpleTest è un framework costruito intorno a classi di test case. Queste ereditano delle classi test case di base e vengono estese con dei metodi che contengono il codice di collaudo. Ogni metodo di test di una classe test case è concepito per invocare una serie di metodi assert, come `assertEqual()`, che lo sviluppatore si attende vengano confermati. Se il risultato atteso viene confermato allora successo dell'operazione viene comunicato al test reporter che è in ascolto mentre qualsiasi insuccesso o qualsiasi eccezione inattesa scatena un alert con la relativa descrizione della discordanza.

Le dichiarazioni contenute del test case vengono convertite in test script eseguibili mediante l'inclusione del file autorun.php di SimpleTest.

Nonostante i molti sforzi intrapresi per mantenere la compatibilità tra le varie versioni, la presente documentazione si riferisce alla versione 1.1 di SimpleTest.

Nel caso si rilevi un malfunzionamento nei test dopo un aggiornamento, si provi a consultare i file "HELP_MY_TESTS_DONT_WORK_ANYMORE" nella directory simpletest per accertarsi della possibilità che una delle feature che si stanno utilizzando sia stata rimossa o indicata come deprecata.

Un test case ha questo aspetto: <?php require_once('simpletest/autorun.php'); class <strong>MyTestCase</strong> extends UnitTestCase { <strong> function testWillCreateLogFileOnFirstMessage() { $log = new Log('my.log'); $this->assertFalse(file_exists('my.log')); $log->message('Hello'); $this->assertTrue(file_exists('my.log')); }</strong> } ?>

SimpleTest è pensato per essere utilizzato da sviluppatori. I destinatari di questo tool includono tutti gli sviluppatori di applicazioni PHP di medie dimensioni, compresi gli sviluppatori che si sono avvicinati da poco all'argomento dello unit testing e del web regression testing. I principi cardine di SimpleTest sono la sua facilità d'uso, l'estendibilità e l'essenzialità delle sue caratteristiche.

I test vengono scritti direttamente in PHP, cioè nel linguaggio principale dell'applicazione. Il vantaggio nell'uso del PHP come linguaggio di testing risiede nel non dover imparare un nuovo linguaggio e nelle possibilità di iniziare immediatamente ad implementare i test e da permettere allo sviluppatore di collaudare uan qualsiasi parte del codice. Fondamentalmente, qualsiasi sezione possa essere raggiunto dal codice dell'applicazione può essere anche raggiunta dal codice di test dal momento che entrambi utilizzano il medesimo linguaggio di programmazione.

Il tipo più semplice di case test è lo UnitTestCase. Questa classe comprende i test standard per valutare l'uguaglianza di valori e riferimenti e il matching con pattern. Tutti questi test eseguono delle verifiche sui valori attesi come ritorno di funzioni e metodi. Si tratta senz'altro del tipo più comune di test nell'attività quotidiana di sviluppo e costituiscono il 95% dei test case.

Tuttavia, l'obiettivo principale di un'applicazione web non è quello di produrre gli output corretti dai suoi metodi e dai suoi oggetti ma quello di generare pagine web. La classe WebTestCase collauda le pagine web. Simula l'attività di un browser che stia richiedendo una pagina e supporta cookie, proxy, connessioni sicure, autenticazione, form, frame e molti altri elementi di navigazione. Con questa tipologia di test case lo sviluppatore può verificare che le informazioni presenti sulla pagina, sul form e nelle sessioni siano manipolate in modo corretto.

Un WebTestCase ha questo aspetto: <?php require_once('simpletest/autorun.php'); require_once('simpletest/web_tester.php'); class <strong>MySiteTest</strong> extends WebTestCase { <strong> function testHomePageHasContactDetails() { $this->get('http://www.my-site.com/index.php'); $this->assertTitle('My Home Page'); $this->clickLink('Contact'); $this->assertTitle('Contact me'); $this->assertText('/Email me at/'); }</strong> } ?>

# features Elenco delle caratteristiche

Quanto segue è una grossolana panoramica delle caratteristiche esistenti e pianificate per SimpleTest con l'indicazione del momento previsto per il loro rilascio. C'è la possibilità che questo elenco possa cambiare senza preavviso dal momento che le milestone dipendono essenzialmente sul tempo libero che ho a disposizione. Gli elementi colorati in verde sono già stati sviluppati ma non sono stati necessariamente rilasciati. Nel caso ci sia la particolare urgenza di accedere ad una feature già svilupata ma non ancora rilasciata è possibile eseguire un checkout direttamente dal server SVN di Sourceforge.

Feature | Descrizione | Release
--- | --- | ---
Unit test case | Classi test case di base e assert | 1.0
Reportistica Html | Il tipo di visualizzazione più semplice | 1.0
Caricamento automatico delle classi | Legge un file contenente i test case e li carica all'interno di un group test in modo automatico | 1.0
Oggetti Mock | Oggetti capaci di simulare altri oggetti in modo da rimuovere le dipendenze tra oggetti durante i test | 1.0
Web test case | Permette la navigazione tra link e i matching sul tag title | 1.0
Mock parziali | Eseguono il mocking di parte in una classe per permettere il collaudo di elementi più piccoli di una classe e simulazioni particolarmente complesse. | 1.0
Gestione dei cookie | Manipola i cookie durante la ricezione delle pagine web | 1.0
Redirect | Il recupero di una pagina produce automaticamente un redirect 300. | 1.0
Parsing dei form | Capacità di compilare semplici form e leggere i loro valori di default | 1.0
Interfaccia a linea di comando | Lancia e visualizza i test senza l'ausilio di un browser | 1.0
Exposure of expectation classes ?? | Can create precise tests with mocks as well as test cases | 1.0
Parsing e visualizzazione di XML | Permette di eseguire i test su host multipli e l'integrazione delle estensioni per gli acceptance test | 1.0
Browser component | Espone un'interfaccia di basso livello per accedere al web browser ed eseguire case test più dettagliati | 1.0
Autenticazione HTTP | Recupera pagine web protette: supporta solo l'autenticazione di base | 1.0
Supporto a SSL | Permette di connettersi alle pagine https: | 1.0
Supporto ai proxy | Permette di eseguire richieste tramite proxy | 1.0
Supporto ai frame | Gestione dei frame all'interno dei web test case | 1.0
Test dell'upload di file | Supporto al test del tag input di tipo file | 1.0.1
Interfacce di mocking | Permette di generare oggetti mock di intefacce Can generate mock objects to interfaces as well as classes and class interfaces are carried for type hints ??? | 1.0.1
Testing delle eccezioni | Feature simile al test degli errori PHP | 1.0.1
Supporto alle label HTML | Consente l'accesso ai controlli tramite la loro label | 1.0.1
Supporto ai tag di base | Respects page base tag when clicking ??? | 1.0.1
Conformità alla direttiva E_STRICT di PHP 5 | Versione per PHP 5 in grado di funzionare con il livello di errore E_STRICT | 1.1
Alternate HTML parsers | Can detect compiled parsers for performance improvements | 1.1
Fixure in stile BDD | Permette di importare le fixture utilizzando un mixing come Can import fixtures using a mixin come il metodo given() | 1.5
Miglioramenti al motore di reporting | Miglioramento al passaggio di messaggio per una migliore cooperazione con gli IDE | 1.5
Fluent mock interface | Oggetti mock ancora più flessibili e compatti | 1.6
Localizzazione | Localizzazione dei messaggi de del codice | 1.6
Selettori CSS | Il contenuto HTML generato può essere analizzato utilizzando i selettori CSS | 1.7
Assert sulle tabelle HTML | Permette esprimere le expectation utilizzando il matching dell'HTML e degli elementi delle tabelle | 1.7
Modello unificato per l'acceptance test | Permette di ricercare all'interno del contenuto per messo di selettori in combinazione alle expectation | 1.7
DatabaseTestCase | Selettori SQL e driver per DB | 1.7
Supporto agli IFrame | Accede al contenuto aggiornabile degli IFrame | 1.8
Supporto integrato a Selenium | Driver integrato per Selenium semplice da usare e provvisto di tutorial | 1.9
Code coverage | Esegue un rapporto sul code coverage utilizzando il tool integrato mediante l'uso di XDebug | 1.9
Vecchi metodi segnati come deprecati | SimpleTest2 possiede un'interfaccia più semplice | 2.0
Supporto a Javascript | Uso del modulo PECL per aggiungere il supporto a Javascript al browser nativo | 3.0

L'integrazione con PHP 5 è completa il che significa che a partire dalla versione 1.1 di SimpleTest verrà supportato solo PHP versione 5.0.5 o superiore. Le precedenti versioni di SimpleTest sono compatibili con PHP dalla versione 4.2 alla versione 5 (non E_STRICT).
Quick summary of the SimpleTest tool for PHP. List of features, both current ones and those planned.
Documentation for SimpleTest. How to write PHP test cases is a fairly advanced tutorial. SimpleTest API from phpdoc.
software development tools, php programming, programming php, software development tools, Tools for extreme programming, free php scripts, links of testing tools, php testing resources, mock objects, junit, jwebunit, htmlunit, itc, php testing links, unit test advice and documentation, extreme programming in php
Marcus Baker

Primary Developer

{@link mailto:marcus@lastcraft.com marcus@lastcraft.com}

Perrick Pennet

General manager

{@link mailto:perrick@noparking.net perrick@noparking.net}

Jason Sweat

Documentation

{@link mailto:jsweat_php@yahoo.com jsweat_php@yahoo.com}