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

Metricas de calidad de software
Metricas de calidad de softwareMetricas de calidad de software
Metricas de calidad de softwareisisparada
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónProfessional Testing
 
Software quality assurance (sqa) parte iii-plan de calidad y prueba v3.0
Software quality assurance (sqa)  parte iii-plan de calidad y prueba v3.0Software quality assurance (sqa)  parte iii-plan de calidad y prueba v3.0
Software quality assurance (sqa) parte iii-plan de calidad y prueba v3.0Renato Gonzalez
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptualantaguez86
 
Software libre
Software libreSoftware libre
Software librekyaalena
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSLenin Acosta Mata
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo Seba Briones
 
Fundamentos de pruebas de software
Fundamentos de pruebas de softwareFundamentos de pruebas de software
Fundamentos de pruebas de softwareProfessional Testing
 
Ingenieria de Software y Logica
Ingenieria de Software y LogicaIngenieria de Software y Logica
Ingenieria de Software y LogicaJuan Velez
 
What is Sanity Testing? Edureka
What is Sanity Testing? EdurekaWhat is Sanity Testing? Edureka
What is Sanity Testing? EdurekaEdureka!
 
Beneficios de aplicar cmmi
Beneficios de aplicar cmmiBeneficios de aplicar cmmi
Beneficios de aplicar cmmilucainog
 
Metricas tecnicas del software
Metricas tecnicas del softwareMetricas tecnicas del software
Metricas tecnicas del softwareaimeemoir
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativojorge paez
 

La actualidad más candente (20)

Metricas de calidad de software
Metricas de calidad de softwareMetricas de calidad de software
Metricas de calidad de software
 
Fundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - IntroducciónFundamentos de Pruebas de Software - Introducción
Fundamentos de Pruebas de Software - Introducción
 
Software quality assurance (sqa) parte iii-plan de calidad y prueba v3.0
Software quality assurance (sqa)  parte iii-plan de calidad y prueba v3.0Software quality assurance (sqa)  parte iii-plan de calidad y prueba v3.0
Software quality assurance (sqa) parte iii-plan de calidad y prueba v3.0
 
Ciclo Vida del Software
Ciclo Vida del SoftwareCiclo Vida del Software
Ciclo Vida del Software
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
 
CTFL chapter 05
CTFL chapter 05CTFL chapter 05
CTFL chapter 05
 
Software libre
Software libreSoftware libre
Software libre
 
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOSINGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
INGENIERÍA DE REQUISITOS E INGENIERÍA DE REQUERIMIENTOS
 
Cuadro comparativo
Cuadro comparativo Cuadro comparativo
Cuadro comparativo
 
Fundamentos de pruebas de software
Fundamentos de pruebas de softwareFundamentos de pruebas de software
Fundamentos de pruebas de software
 
Metodologia xp
Metodologia xpMetodologia xp
Metodologia xp
 
Ingenieria de Software y Logica
Ingenieria de Software y LogicaIngenieria de Software y Logica
Ingenieria de Software y Logica
 
What is Sanity Testing? Edureka
What is Sanity Testing? EdurekaWhat is Sanity Testing? Edureka
What is Sanity Testing? Edureka
 
Beneficios de aplicar cmmi
Beneficios de aplicar cmmiBeneficios de aplicar cmmi
Beneficios de aplicar cmmi
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Manual testing - Introduction to Manual Software testing
Manual testing - Introduction to Manual Software testingManual testing - Introduction to Manual Software testing
Manual testing - Introduction to Manual Software testing
 
Metricas tecnicas del software
Metricas tecnicas del softwareMetricas tecnicas del software
Metricas tecnicas del software
 
Plan de pruebas_inces
Plan de pruebas_incesPlan de pruebas_inces
Plan de pruebas_inces
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Ensayo ing. de software.
Ensayo ing. de software.Ensayo ing. de software.
Ensayo ing. de software.
 

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