Testing y TDD para PHP

Testing y TDD para PHP

Fran Iglesias
Buy on Leanpub

Table of Contents

Testing y TDD para PHP

  • Introducción: Del ojímetro al tdd
    • Entonces descubres los tests
    • Control de calidad
    • Tests funcionales
    • Anatomía de un test
    • Manejo de las dependencias
    • Cuándo toca hacer tests
    • Test Driven Development
    • Qué incluir en los tests y qué no
    • Y esto es casi todo
  • Testing desde cero
    • Qué es software testing
    • A mano o a máquina
    • Qué sometemos a test
    • Qué es hacer un test
    • Estructura básica de un test
    • La elección de los casos para testear
    • Frameworks para testing
    • Cuándo testear
  • Testing en contexto
    • Taxonomía de tests
    • La pirámide de tests funcionales
    • Utilidad de la pirámide de tests
    • Smells en la pirámide de los tests funcionales
  • Psicología del testing
    • ¿Por qué nos cuesta el testing?
    • El concepto de test y la necesidad de testear
    • Sentimos apego por nuestro código
    • La dificultad técnica del testing
    • La presión para no testear
    • Testear no es igual a confirmar que funciona
    • Responsabilidad y testeo
  • Primer test
  • TDD de un validador de NIF
    • Testeando lo que no es válido
    • Toca refactor
    • Nuevos casos no válidos
    • Dos por el precio de uno
    • Concluyendo
  • Desarrollar un algoritmo paso a paso con TDD: Luhn Test kata
    • Sobre la Luhn Test kata
    • Empecemos con un test
    • Empezando con el código de producción
    • Buscando un nuevo ejemplo
    • Los tests deben forzar implementaciones
    • Buscando un algoritmo más general
    • Añadiendo prestaciones
  • Clean testing
    • Naming de los test
    • Eliminar los números mágicos
    • Extrae métodos, también en tests
    • Esperar excepciones
    • Métodos assert
  • Test doubles (1)
    • El concepto de test double
    • Por qué y para qué de los tests doubles
    • Test doubles y dónde encontrarlos
    • Alternativas para generar test doubles
    • Terminando
  • Test doubles (2) Principios de diseño
    • Principios de diseño y doubles
    • Un ejemplo
    • En resumen
  • Resolver problemas con baby-steps
    • Un problema sencillo, pero con intríngulis
    • Un problema de TDD
    • El enfoque de tests antes que el código pero que no es TDD
    • El enfoque TDD
    • Conclusiones
  • Usar el code coverage para mejorar los tests
    • Code coverage y refactoring
    • Para finalizar
  • Testeando lo impredecible
    • Generando contraseñas para humanos
    • Determinismo y predictibilidad
    • A ver qué sale
    • Generando un password legible
    • Testeando el azar
    • Probamos nuestro generador de constraseñas
    • Queremos contraseñas más difíciles
    • Decorar es extender por composición
    • Veamos cómo usarlo
    • Cosas por hacer
    • Algunas referencias
  • TDD en PHP. Un ejemplo con colecciones (1)
    • ¿Qué tendría que tener una clase Collection?
    • Escribiendo el primer mínimo test que falle
    • Pongamos un poco de comportamiento aquí
    • Controlando qué ponemos en la colección
    • Refactorizar el test
    • Antes de terminar, hagamos unos arreglos
    • Y un extra
    • Fin del primer acto
  • TDD en PHP. Un ejemplo con colecciones (2)
    • Testing dirigido por Checklist
    • Filosofía de las colecciones
    • Implementar el método each
    • Recapitulando each
  • TDD en PHP. Un ejemplo con colecciones (3)
    • Pipeline en el método each
    • Una digresión: mutable, modificable o todo lo contrario
    • Antes de implementar el método map
    • Implementando map
    • Para finalizar (por ahora)
  • TDD en PHP. Un ejemplo con colecciones (4)
    • Estos artículos van de TDD más que de Collections
    • Filtrando una colección
    • Ahorrando algunos tests con return type y type hinting
    • ¿Algo que refactorizar?
    • Devolver un objeto
    • Fin del capítulo
  • TDD en PHP. Un ejemplo con colecciones (5)
    • Reduciendo colecciones
    • Métodos útiles para nuestras colecciones
    • Devolviendo el contenido de la colección
    • Métodos de utilidad
    • Refactor final
  • Apéndices
  • Apéndice 1: PhpUnit
    • Instalación
    • Configuración básica
  • Apéndice 2: PhpSpec
    • Instalación
    • Configuración inicial
    • Specification by example
    • Primera especificación
  • Notas
Testing y TDD para PHP/Primer test

Primer test

Up next

TDD de un validador de NIF

In this chapter

  • Primer test