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

Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareJosé Antonio Sandoval Acosta
 
Fases del Proceso Unificado
Fases del Proceso UnificadoFases del Proceso Unificado
Fases del Proceso Unificadokatano66
 
Aseguramiento de la calidad del software SQA
Aseguramiento de la calidad del software SQAAseguramiento de la calidad del software SQA
Aseguramiento de la calidad del software SQAAnita Ortiz
 
Modelos iterativos e incremental.pptx
Modelos iterativos e incremental.pptxModelos iterativos e incremental.pptx
Modelos iterativos e incremental.pptxJeuryDide
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareKarloz Dz
 
Estrategias de procesamiento de consultas distribuidas
Estrategias de procesamiento de consultas distribuidasEstrategias de procesamiento de consultas distribuidas
Estrategias de procesamiento de consultas distribuidasJosé Mendoza
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UMLramirezjaime
 
Exposicion base de datos DB2-IBM
Exposicion base de datos DB2-IBMExposicion base de datos DB2-IBM
Exposicion base de datos DB2-IBMJacob Gómez
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Jesús Gómez Ávila
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del clienteGabriel Mondragón
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASEI R
 

La actualidad más candente (20)

Pruebas De Software
Pruebas De SoftwarePruebas De Software
Pruebas De Software
 
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el SoftwareGestión de Proyectos de Software - Unidad II: Calidad en el Software
Gestión de Proyectos de Software - Unidad II: Calidad en el Software
 
Fases del Proceso Unificado
Fases del Proceso UnificadoFases del Proceso Unificado
Fases del Proceso Unificado
 
tecnicas de revisión del software
tecnicas de revisión del softwaretecnicas de revisión del software
tecnicas de revisión del software
 
Aseguramiento de la calidad del software SQA
Aseguramiento de la calidad del software SQAAseguramiento de la calidad del software SQA
Aseguramiento de la calidad del software SQA
 
Modelos iterativos e incremental.pptx
Modelos iterativos e incremental.pptxModelos iterativos e incremental.pptx
Modelos iterativos e incremental.pptx
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Mapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de SoftwareMapa conceptual - Institutos Reguladores Calidad de Software
Mapa conceptual - Institutos Reguladores Calidad de Software
 
Proceso del Software
Proceso del Software Proceso del Software
Proceso del Software
 
Estrategias de procesamiento de consultas distribuidas
Estrategias de procesamiento de consultas distribuidasEstrategias de procesamiento de consultas distribuidas
Estrategias de procesamiento de consultas distribuidas
 
Modelo requisitos UML
Modelo requisitos UMLModelo requisitos UML
Modelo requisitos UML
 
Exposicion base de datos DB2-IBM
Exposicion base de datos DB2-IBMExposicion base de datos DB2-IBM
Exposicion base de datos DB2-IBM
 
Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)Fundamentos de ingenieria del software (2)
Fundamentos de ingenieria del software (2)
 
Sqa
SqaSqa
Sqa
 
Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1Estructura de datos presentacion y sesion 1
Estructura de datos presentacion y sesion 1
 
DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Modelo v y cascada
Modelo v y cascadaModelo v y cascada
Modelo v y cascada
 
Herramientas CASE
Herramientas CASEHerramientas CASE
Herramientas CASE
 
Proceso unificado
Proceso unificadoProceso unificado
Proceso unificado
 

Similar a TDD (Test-Driven Development)

Behavior1
Behavior1Behavior1
Behavior1arajar
 
#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 DevOpsHablemosDeTesting
 
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)Martín Machuca
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentJavier Novoa Cataño
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxCompusoftnetCiaLtda
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfPabloMorales831994
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
Test Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesTest Driven Development. Fortalezas y Debilidades
Test Driven Development. Fortalezas y DebilidadesAlejandro Araújo
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 

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
 
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
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 

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