Las pruebas funcionales son la mejor forma de probar tu aplicación de extremo a extremo: desde la petición realizada por un navegador hasta la respuesta enviada por el servidor. Las pruebas funcionales prueban todas las capas de la aplicación: el sistema de enrutamiento, el modelo, las acciones y las plantillas. En realidad, son muy similares a lo que tu mismo haces manualmente: cada vez que añades o modificas una acción, la pruebas en el navegador para comprobar que todo funciona bien al pulsar sobre los enlaces y botones y que todos los elementos se muestran correctamente en la página. En otras palabras, lo que haces es probar un escenario correspondiente al caso de uso que acabas de implementar en la aplicación.
Como el proceso anterior es manual, no sólo es muy aburrido, sino que es muy propenso a cometer errores. Cada vez que realizas un cambio en el código, tienes que volver a probar todos los escenarios para asegurarte que los cambios no han roto nada en la aplicación. Obviamente trabajar así es una locura. Las pruebas funcionales de Symfony permiten describir de forma sencilla los escenarios de la aplicación. Una vez definidos, los escenarios se pueden ejecutar automáticamente una y otra vez de forma que simule el comportamiento de un usuario con su navegador. Al igual que las pruebas unitarias, las pruebas funcionales te dan la confianza y tranquilidad de saber que lo que estás programando no va a romper nada en la aplicación.
Nota El subframework de pruebas funcionales no reemplaza a herramientas como Selenium. La herramienta Selenium se ejecuta directamente en un navegador y se emplea para automatizar las pruebas en muchos navegadores y sistemas operativos diferentes, por lo que también es capaz de probar el código JavaScript de la aplicación.