Mondi su mondi, sistemi di sistemi.

Test-driven design con PostgreSQL: pgTAP

Fino ad ora ho sempre testato il database attraverso un qualche strumento esterno, come i vari JUnit, TestNG o tcltest.

Sono librerie che funzionano bene e che sono familiari a chiunque pratichi un minimo di TDD ma non particolarmente tagliate per testare i database (con l’eccezione forse di TestNG, che non uso da anni): vuoi perché bisogna pre­vedere delle fixture elaborate che vanno poi eliminate; vuoi perché, a ben guardare, bisogna attraversare tutta una serie di strati software anche solo per verificare un constraint.

Così ho fatto una ricerca e ho trovato due utilità per PostgreSQL — pgTAP e PGUnit — che permettono di creare delle suite di test eseguite direttamente nel database.

I vantaggi sono diversi: oltre all’accesso più diretto e pre­stazioni pre­sumibilmente migliori, la gestione delle fixture risulta semplificata perché basta fare il rollback alla fine dei test; inoltre, dato che in PostgreSQL i comandi DDL sono transazionali, diventa pos­sibile testare le modifiche al database istantaneamente, senza doverlo fare in modo permanente.

Per ora ho scelto pgTAP. Mette a disposizione una serie di funzioni che pos­sono venire molto comode per scrivere i test.

Le prime impres­sioni sono buone e penso che il miglioramento sarà anche più marcato quando potrò disegnare direttamente da zero uno schema in modalità TDD.

Per proseguire

Commenti e trackback sono disabilitati.