Orden de código de desarrollo dirigido por prueba

8

Estoy desarrollando mi primer proyecto utilizando un desarrollo basado en pruebas. Estoy usando Zend Framework y PHPUnit.

Actualmente mi proyecto tiene una cobertura de código del 100%, pero no estoy seguro de entender en qué orden se supone que debo escribir mi código.

¿Se supone que debo escribir mi prueba PRIMERO con lo que se espera que hagan mis objetos, o escribir mis objetos y luego probarlos?

He estado trabajando para completar un controlador / modelo y luego escribir una prueba para él, pero no estoy seguro de si de eso se trata TDD.

¿Algún consejo?

Por ejemplo, escribí mi complemento Auth y mi controlador Auth y probé que funcionan correctamente en mi navegador; Luego me senté a escribir las pruebas para ellos, lo que demostró que había algunos errores lógicos en el código que funcionaban en el navegador.

Bobby Kostadinov
fuente

Respuestas:

20

Prueba primero. TDD también se llama IOW "desarrollo de prueba primero".

En lo que has estado trabajando no es TDD.

TDD es 1-2-3:

  1. Escribe una prueba reprobatoria.
  2. Hazlo pasar (cometer pecados y atajos durante el camino).
  3. Eliminar duplicidades (lógicas, no solo físicas).

En palabras más cortas, esto también se anuncia como "hacer que falle / hacer que funcione / hacer lo correcto".

Más en el impresionante libro de Kent Beck Test-Driven Development By Example.

herby
fuente
11
+1 Estos tres pasos también se conocen como "Red-Green-Refactor".
Fenton
2
Hacer que pase significa: escribir solo tanto código que pase, ¡no más! Eso es muy importante
Ollins
2
Se utiliza para ser llamado Test-Primera Desarrollo, pero eso es engañoso: no se trata de escribir sus primeras pruebas, se trata de dejar que sus pruebas conducen el diseño y desarrollo. Escribir sus pruebas primero es simplemente un requisito previo para eso: ¿cómo pueden conducir sus pruebas si aún no existen? Pero puede escribir sus pruebas primero y aún no dejar que lo conduzcan, y luego no está haciendo TDD.
Jörg W Mittag el
3
@deltree erm ... ¡No estoy de acuerdo con cada declaración que hiciste!
Froome
2
excepto "cobertura de código! = TDD": p
Froome