Test Driven Development
Clase 21 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Resumen
¿Qué es el Test Driven Development (TDD)?
El Test Driven Development, conocido como TDD, es una metodología de desarrollo de software que invita a replantear nuestro enfoque tradicional. ¿Imaginas escribir primero las pruebas para luego desarrollar el código? Así es como TDD opera. Lo esencial del TDD es que primero se definen los tests antes de programar la funcionalidad que se va a implementar. Esto no sólo cambia el modo de pensar, sino que también asegura que el software cumple con los requisitos desde el inicio.
Al adoptar TDD, el proceso se centra en tres pasos:
- Escribir las pruebas: Se diseñan pruebas que el software debe pasar.
- Desarrollo mínimo necesario: Se escribe el mínimo código necesario para pasar las pruebas.
- Refactorización: A continuación, se mejora el código ya probado para optimizarlo.
Este ciclo se repite para cada funcionalidad nueva.
¿Cómo aplicar TDD con PHP?
En el contexto de PHP, el uso de TDD comienza desde una estructura básica de proyecto. Al inicio se tienen dos carpetas esenciales: una para los tests y otra para las librerías necesarias.
¿Cómo crear pruebas en PHP?
Para comenzar a trabajar con pruebas en PHP, se recomienda crear un archivo de tests. Aquí se puede ejemplificar con una calculadora que realiza operaciones básicas como sumar, restar, multiplicar y dividir. Paso a paso se puede construir el siguiente entorno:
- Archivo de Test: Se crea un archivo llamado
CalculadoraTest.php
. - Clases y métodos básicos: Se define la clase que será probada, extendiendo de una clase base de tests y se crea un primer test que evalúa la suma.
<?php
use PHPUnit\Framework\TestCase;
class CalculadoraTest extends TestCase {
public function testSumaDeParametros() {
$calc = new Calculadora();
$this->assertEquals(8, $calc->sumar(5, 3));
}
}
¿Cómo ejecutar los tests?
Para ejecutar los tests se utiliza el siguiente comando en terminal, apuntando al archivo que contiene la prueba:
vendor/bin/phpunit tests/CalculadoraTest.php
Este comando correrá la prueba y señalará si pasa o falla. En caso de fallo, se debe refinar hasta que el test pase.
¿Qué pasa si el test falla?
Si el test falla, esto indica que el código implementado no cumple con la funcionalidad esperada. Por ejemplo, un error común sería no haber definido la clase o el método correspondiente. Simplemente se debe crear el mínimo código necesario para asegurarse de que el test pase exitosamente, como por ejemplo, definir métodos que realicen las operaciones.
Ejemplo de implementación de un método de suma:
<?php
class Calculadora {
public function sumar($a, $b) {
return $a + $b;
}
}
Con esto y tras ejecutar nuevamente el test, se espera pasar, asegurando que la funcionalidad de suma es efectiva. Asimismo, se pueden crear nuevos tests para otras operaciones como resta, multiplicación y división.
¿Cuáles son los beneficios de TDD?
- Diseño guiado por pruebas: Ayuda a mantener el enfoque en los requisitos del negocio y necesidades del cliente.
- Código de mejor calidad: Al escribir primero los tests, el código tiende a ser más sólido y libre de errores.
- Facilidad de mantenimiento: La refactorización se convierte en una tarea menos riesgosa y más eficiente.
- Documentación implícita: Los tests también sirven como una forma de documentación del código.
En resumen, el TDD no solo cambia cómo desarrollamos software, sino que refuerza una cultura de calidad y mejora continua. Cada nuevo reto es una oportunidad de aprender más y mejorar nuestras habilidades. ¡Anímate a adentrarte en TDD y explorar su potencial en tus proyectos!