La automatización de pruebas abarca tanto las pruebas unitarias (que validan métodos o funciones) como las pruebas funcionales (que validan características completas de la aplicación). Symfony utiliza el framework de pruebas Lime para las pruebas unitarias y proporciona la clase sfTestBrowser
para las pruebas funcionales. En ambos casos, se dispone de métodos para realizar todo tipo de asertos, desde los más sencillos hasta los más complejos, como por ejemplo los que se realizan mediante los selectores de CSS. La línea de comandos de Symfony permite ejecutar las pruebas de una en una (mediante las tareas test-unit
y test-functional
) o en grupo (mediante la tarea test-all
). En lo que respecta a los datos, las pruebas automatizadas utilizan stubs (clases falsas) y fixtures (datos de prueba complejos) y Symfony simplifica su uso desde las pruebas unitarias.
Si se definen las suficientes pruebas unitarias como para probar la mayor parte de una aplicación (quizás aplicando la metodología TDD), es mucho más seguro refactorizar el código de la aplicación y añadir nuevas características. Incluso, en ocasiones, las pruebas pueden reducir el tiempo requerido para la documentación técnica del proyecto.