SlideShare una empresa de Scribd logo
1 de 9
Test-Driven Development(TDD)



twitter: @trukuxzo
Test-Driven Development(TDD)
• Una metodología en la que primero se hace un test y luego el
  código necesario para que el test pase.

•   Para escribir las pruebas generalmente se utilizan las pruebas
    unitarias.

•   En primer lugar se escribe una prueba y se verifica que las
    pruebas fallen, luego se implementa el código que haga que
    la prueba pase satisfactoriamente y seguidamente se
    refactoriza el código escrito.

•   La idea es que los requisitos sean traducidos a pruebas, de
    este modo, cuando las pruebas pasen se garantizará que los
    requisitos se hayan implementado correctamente.
TDD = Test-First Development + Refactoring

                                             (Re)Escribir un
                                                  test
TDD involucra otras dos
prácticas:
                                   [Pasa]     Verificar si el
•    Test-First Development(TFD)                test falla
     y                                                 [Falla]
•    Refactoring.
                                              Realizar los
                                               cambios
                                                                    [Pasa,
                                                                    continúa
                                   [Falla]    Ejecutar los          desarrollo]
                                                 tests
                                                         [Pasa, finaliza desarrollo]
El lema del TDD “Rojo, Verde, Refactor"

         Crear una prueba y hacer que falle



    Escribir el mínimo código para hacer pasar la
                       prueba.



     Cambiar el código para eliminar la duplicación y
    para mejorar el diseño al tiempo que se garantice
     que todas las pruebas anteriores pasen el test.
Características

• Una ventaja de esta forma de programación es el evitar escribir
  código innecesario ("You Ain't Gonna Need It" (YAGNI)).

• Se intenta escribir el mínimo código posible, y si el código pasa una
  prueba aunque sepamos que es incorrecto nos da una idea de que
  tenemos que modificar nuestra lista de requerimientos agregando
  uno nuevo.

• La generación de pruebas para cada funcionalidad hace que el
  programador confíe en el código escrito.

• Otra característica del TDD es que requiere que el programador
  primero haga fallar los casos de prueba. La idea es asegurarse de
  que los casos de prueba realmente funcionen y puedan recoger un
  error.
Ventajas

•   Cuando se utiliza el TDD en un proyecto virgen se encuentra que en raras
    ocasiones se tiene la necesidad de utilizar el depurador o debugger.

•   El desarrollo con TDD puede proporcionar un gran valor añadido en la
    creación de software, produciendo aplicaciones de más calidad y en menos
    tiempo.

•   El poder del TDD radica en la capacidad de avanzar en pequeños pasos
    cuando se necesita.

•   Inicialmente no se consideran los casos excepcionales y el manejo de
    errores. Estos, se implementan después de que se haya alcanzado la
    funcionalidad principal.

•   Otra ventaja es que, cuando es utilizada correctamente, se asegura de que
    todo el código escrito está cubierto por una prueba.
Limitaciones

Resulta complejo en los siguientes dominios:

  – Interfaces Gráfica de usuario (GUIs), aunque hay
    soluciones parciales propuestas.

  – Objetos distribuidos, aunque los objetos simulados
    (MockObjects) pueden ayudar.

  – Bases de datos. Hacer pruebas de código que trabaja
    con base de datos es complejo porque requiere poner en
    la base de datos unos datos conocidos antes de hacer las
    pruebas y verificar que el contenido de la base de datos
    es el esperado después de la prueba.
Conclusión

Test-Driven Development(TDD) es una técnica
avanzada que utiliza las pruebas unitarias para
impulsar el diseño de software.

El propósito del Test-Driven Development(TDD) es
lograr un código limpio que funcione.
Fin

Más contenido relacionado

La actualidad más candente

tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasOrlando Bustos Mateluna
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blancaStudentPc
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasJosé Antonio Sandoval Acosta
 
Tema N° 14 Especificación de Requisitos del Software
Tema N° 14 Especificación de Requisitos del SoftwareTema N° 14 Especificación de Requisitos del Software
Tema N° 14 Especificación de Requisitos del SoftwareSaraEAlcntaraR
 
Etapas de proyectos de software.ppt
Etapas de proyectos de software.pptEtapas de proyectos de software.ppt
Etapas de proyectos de software.pptLuis619096
 
Aseguramiento de la Calidad del Software
Aseguramiento de la Calidad del SoftwareAseguramiento de la Calidad del Software
Aseguramiento de la Calidad del SoftwareTensor
 
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...José Antonio Sandoval Acosta
 
Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del softwareaagalvisg
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)Yadith Miranda Silva
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresLuis Eduardo Pelaez Valencia
 

La actualidad más candente (20)

tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
cmmi-dev
cmmi-devcmmi-dev
cmmi-dev
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y libreriasTopicos Avanzados de Programacion - Unidad 3 componentes y librerias
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Tema N° 14 Especificación de Requisitos del Software
Tema N° 14 Especificación de Requisitos del SoftwareTema N° 14 Especificación de Requisitos del Software
Tema N° 14 Especificación de Requisitos del Software
 
Etapas de proyectos de software.ppt
Etapas de proyectos de software.pptEtapas de proyectos de software.ppt
Etapas de proyectos de software.ppt
 
Pruebas funcionales
Pruebas funcionalesPruebas funcionales
Pruebas funcionales
 
Aseguramiento de la Calidad del Software
Aseguramiento de la Calidad del SoftwareAseguramiento de la Calidad del Software
Aseguramiento de la Calidad del Software
 
Modelo CMMI
Modelo CMMIModelo CMMI
Modelo CMMI
 
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...
Gestión de Proyectos de Software - Unidad 1 Introducción a la Gestión de Proy...
 
Gestión del Cambio del Software
Gestión del Cambio del SoftwareGestión del Cambio del Software
Gestión del Cambio del Software
 
Estandares y modelos de calidad del software
Estandares y modelos de calidad del softwareEstandares y modelos de calidad del software
Estandares y modelos de calidad del software
 
Valores y prácticas XP
Valores y prácticas XPValores y prácticas XP
Valores y prácticas XP
 
Programación Extrema - XP
Programación Extrema - XPProgramación Extrema - XP
Programación Extrema - XP
 
Modelo TSP
Modelo TSPModelo TSP
Modelo TSP
 
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Fundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y EstándaresFundamentos de Calidad del Software - Modelos y Estándares
Fundamentos de Calidad del Software - Modelos y Estándares
 

Similar a TDD (Test-Driven Development)

Similar a TDD (Test-Driven Development) (20)

Test driven development
Test driven developmentTest driven development
Test driven development
 
Behavior1
Behavior1Behavior1
Behavior1
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
TDD
TDDTDD
TDD
 
TDD
TDDTDD
TDD
 
Unidad ii. tdd
Unidad ii. tddUnidad ii. tdd
Unidad ii. tdd
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
#HablemosDeTestingDay - José Castillo: Estrategia de QA en un contexto de DevOps
 
Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)Metodologías Aágiles: TDD (Test Driven development)
Metodologías Aágiles: TDD (Test Driven development)
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Test Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesTest Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y Debilidades
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Tdd
TddTdd
Tdd
 

Más de Senior Dev

DDD (Domain-Driven Design)
DDD (Domain-Driven Design)DDD (Domain-Driven Design)
DDD (Domain-Driven Design)Senior Dev
 
Message Queuing (MSMQ)
Message Queuing (MSMQ)Message Queuing (MSMQ)
Message Queuing (MSMQ)Senior Dev
 
Teoría de colas
Teoría de colasTeoría de colas
Teoría de colasSenior Dev
 
JSON - (English)
JSON - (English)JSON - (English)
JSON - (English)Senior Dev
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)Senior Dev
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)Senior Dev
 

Más de Senior Dev (7)

Scrum
ScrumScrum
Scrum
 
DDD (Domain-Driven Design)
DDD (Domain-Driven Design)DDD (Domain-Driven Design)
DDD (Domain-Driven Design)
 
Message Queuing (MSMQ)
Message Queuing (MSMQ)Message Queuing (MSMQ)
Message Queuing (MSMQ)
 
Teoría de colas
Teoría de colasTeoría de colas
Teoría de colas
 
JSON - (English)
JSON - (English)JSON - (English)
JSON - (English)
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
 

TDD (Test-Driven Development)

  • 2. Test-Driven Development(TDD) • Una metodología en la que primero se hace un test y luego el código necesario para que el test pase. • Para escribir las pruebas generalmente se utilizan las pruebas unitarias. • En primer lugar se escribe una prueba y se verifica que las pruebas fallen, luego se implementa el código que haga que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. • La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que los requisitos se hayan implementado correctamente.
  • 3. TDD = Test-First Development + Refactoring (Re)Escribir un test TDD involucra otras dos prácticas: [Pasa] Verificar si el • Test-First Development(TFD) test falla y [Falla] • Refactoring. Realizar los cambios [Pasa, continúa [Falla] Ejecutar los desarrollo] tests [Pasa, finaliza desarrollo]
  • 4. El lema del TDD “Rojo, Verde, Refactor" Crear una prueba y hacer que falle Escribir el mínimo código para hacer pasar la prueba. Cambiar el código para eliminar la duplicación y para mejorar el diseño al tiempo que se garantice que todas las pruebas anteriores pasen el test.
  • 5. Características • Una ventaja de esta forma de programación es el evitar escribir código innecesario ("You Ain't Gonna Need It" (YAGNI)). • Se intenta escribir el mínimo código posible, y si el código pasa una prueba aunque sepamos que es incorrecto nos da una idea de que tenemos que modificar nuestra lista de requerimientos agregando uno nuevo. • La generación de pruebas para cada funcionalidad hace que el programador confíe en el código escrito. • Otra característica del TDD es que requiere que el programador primero haga fallar los casos de prueba. La idea es asegurarse de que los casos de prueba realmente funcionen y puedan recoger un error.
  • 6. Ventajas • Cuando se utiliza el TDD en un proyecto virgen se encuentra que en raras ocasiones se tiene la necesidad de utilizar el depurador o debugger. • El desarrollo con TDD puede proporcionar un gran valor añadido en la creación de software, produciendo aplicaciones de más calidad y en menos tiempo. • El poder del TDD radica en la capacidad de avanzar en pequeños pasos cuando se necesita. • Inicialmente no se consideran los casos excepcionales y el manejo de errores. Estos, se implementan después de que se haya alcanzado la funcionalidad principal. • Otra ventaja es que, cuando es utilizada correctamente, se asegura de que todo el código escrito está cubierto por una prueba.
  • 7. Limitaciones Resulta complejo en los siguientes dominios: – Interfaces Gráfica de usuario (GUIs), aunque hay soluciones parciales propuestas. – Objetos distribuidos, aunque los objetos simulados (MockObjects) pueden ayudar. – Bases de datos. Hacer pruebas de código que trabaja con base de datos es complejo porque requiere poner en la base de datos unos datos conocidos antes de hacer las pruebas y verificar que el contenido de la base de datos es el esperado después de la prueba.
  • 8. Conclusión Test-Driven Development(TDD) es una técnica avanzada que utiliza las pruebas unitarias para impulsar el diseño de software. El propósito del Test-Driven Development(TDD) es lograr un código limpio que funcione.
  • 9. Fin