-
Introducción
- Problemas del testing
-
TDD no es una técnica de pruebas
- Es una técnica de diseño y codificación
-
Tipos de test
-
Tests de aceptación
- Prueban que el software cumpla con un requisito de negocio
- Usan GUI
-
Tests funcionales
- Subconjunto de los tests de aceptación
- Prueban una funcionalidad con valor de negocio
-
Tests de sistema
- Mayor de los tests de integración
- Puede ir de extremo a extremo
-
Tests de integración
- Integra más de un componente
-
Tests unitarios
- Lo más importantes para TDD
-
Características
- Atómico
- Independiene
- Inocuo
- Rápido
-
Tests unitarios
- "Any program feature without an automated test
simply doesn’t exist." - Kent Beck
- Testing realizado por desarrolladores
durante la construcción del código
- Testing de componentes o testing de clases aisladas
-
Formas
- Usando métodos main() y verificando el resultado
- Ejecutando la aplicación y verificando el resultado
- Debugging
-
xUnit
-
Java: JUnit
-
JUnit 3.x
- Extender TestCase
- Sobrescribir setUp()
- Hacer métodos que comiencen con test
- Usar assertEquals() para verificar la salida
-
JUnit 4.x
- No es necesario heredar
- Anotar los métodos con @Test
- Usar assertEquals() para verificar la salida
- .NET: NUnit
- Python: PyUnit
- Ruby: RubyUnit
- Perl: PerlUnit
- C++: CppUnit
- PHP: PHPUnit
-
Prácticas
-
Test First Development
- Pasos
-
Refactoring
- Cambios en la estructura interna del código
- Sin cambios en su comportamiento externo
-
Ciclo de desarrollo
- Escribir la prueba
- Escribir el código haciendo que pase la prueba
- Ejecutar las pruebas automatizadas
- Repetición
- Rojo - Verde - Refactor
-
Beneficios
- La implementación de las funciones justas
que el cliente necesita y no más
- La minimización del número de defectos
que llegan al software en fase de producción.
- La producción de software modular,
altamente reutilizable y preparado para el cambio.
- El código es testeable,
fue construido para serlo
- El test es testeado, lo vimos fallar al inicio
- Los tests son ejecutables
- Los tests documentan el código
- Tenemos el diseño suficiente para hacer pasar los tests
-
Referencias
- Ble C, Diseño Ágil con TDD
- http://opensourcetesting.org
- http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
- http://junit.org
-
Acerca de
- Topic
- Topic