• XP: Test Driven Development

    1. Introducción

      1. Problemas del testing

      2. TDD no es una técnica de pruebas

        1. Es una técnica de diseño y codificación

    2. Tipos de test

      1. Tests de aceptación

        1. Prueban que el software cumpla con un requisito de negocio

        2. Usan GUI

      2. Tests funcionales

        1. Subconjunto de los tests de aceptación

        2. Prueban una funcionalidad con valor de negocio

      3. Tests de sistema

        1. Mayor de los tests de integración

        2. Puede ir de extremo a extremo

      4. Tests de integración

        1. Integra más de un componente

      5. Tests unitarios

        1. Lo más importantes para TDD

        2. Características

          1. Atómico

          2. Independiene

          3. Inocuo

          4. Rápido

    3. Tests unitarios

      1. "Any program feature without an automated test simply doesn’t exist." - Kent Beck

      2. Testing realizado por desarrolladores durante la construcción del código

      3. Testing de componentes o testing de clases aisladas

      4. Formas

        1. Usando métodos main() y verificando el resultado

        2. Ejecutando la aplicación y verificando el resultado

        3. Debugging

      5. xUnit

        1. Java: JUnit

          1. JUnit 3.x

            1. Extender TestCase

            2. Sobrescribir setUp()

            3. Hacer métodos que comiencen con test

            4. Usar assertEquals() para verificar la salida

          2. JUnit 4.x

            1. No es necesario heredar

            2. Anotar los métodos con @Test

            3. Usar assertEquals() para verificar la salida

        2. .NET: NUnit

        3. Python: PyUnit

        4. Ruby: RubyUnit

        5. Perl: PerlUnit

        6. C++: CppUnit

        7. PHP: PHPUnit

    4. Prácticas

      1. Test First Development

        1. Pasos

      2. Refactoring

        1. Cambios en la estructura interna del código

        2. Sin cambios en su comportamiento externo

    5. Ciclo de desarrollo

      1. Escribir la prueba

      2. Escribir el código haciendo que pase la prueba

      3. Ejecutar las pruebas automatizadas

      4. Repetición

      1. Rojo - Verde - Refactor

    6. Beneficios

      1. La implementación de las funciones justas que el cliente necesita y no más

      2. La minimización del número de defectos que llegan al software en fase de producción.

      3. La producción de software modular, altamente reutilizable y preparado para el cambio.

      4. El código es testeable, fue construido para serlo

      5. El test es testeado, lo vimos fallar al inicio

      6. Los tests son ejecutables

      7. Los tests documentan el código

      8. Tenemos el diseño suficiente para hacer pasar los tests

    7. Referencias

      1. Ble C, Diseño Ágil con TDD

      2. http://opensourcetesting.org

      3. http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

      4. http://junit.org

    8. Acerca de

      1. Topic

      2. Topic

  • All Comments ( 1 )
    Biggerplate said at 2011-06-30 15:57:03
    We would love to see this map added to the Mind Map library at www.biggerplate.com!

    XP: Test Driven Development

    Added: 2011-04-29 22:17:41

    From: lshimokawa (Joined 2009-12-01 22:08:05)

    27 views |0 downloads

    XP: Test Driven Development

    More From: lshimokawa

    Kanban
    Kanban
    2011-11-12 16:31:26|534 views
    Lean Software Development
    Lean Software Development
    2011-11-09 01:27:21|915 views
    Agile Retrospectives
    Agile Retrospectives
    2011-10-29 01:34:44|36 views
    Scrum
    Scrum
    2011-10-19 20:29:40|580 views
    Agile Estimating and Planning
    Agile Estimating and Planning
    2011-10-18 23:12:09|439 views
    Agile Manifesto
    Agile Manifesto
    2011-10-18 01:08:23|81 views
    SOA Governance
    SOA Governance
    2011-10-06 21:11:38|9 views
    Messaging
    Messaging
    2011-10-04 20:49:55|78 views
    ESB
    ESB
    2011-06-10 00:58:10|84 views
    BPEL
    BPEL
    2011-06-09 20:43:51|74 views
    Design Patterns
    Design Patterns
    2011-06-09 00:30:13|15 views
    REST
    REST
    2011-05-31 05:17:28|69 views
    Web Services
    Web Services
    2011-05-09 22:17:13|117 views
    Service Oriented Architecture
    Service Oriented Architecture
    2011-05-05 23:16:09|577 views
    Sistemas Distribuidos
    Sistemas Distribuidos
    2011-05-05 00:17:34|199 views
    XP: String Calculator Kata
    XP: String Calculator Kata
    2011-04-29 23:42:24|96 views
    Agile Testing
    Agile Testing
    2011-04-29 23:34:44|54 views
    Calidad de Software
    Calidad de Software
    2011-04-29 23:34:12|444 views
    XP: Test Driven Development
    XP: Test Driven Development
    2011-04-29 22:17:41|27 views
    XP: Continuous Integration
    XP: Continuous Integration
    2011-04-29 22:16:59|12 views
    Enseñando ágilmente
    Enseñando ágilmente
    2010-10-05 16:49:57|776 views
    Spring Core
    Spring Core
    2010-09-23 16:11:48|63 views
    Arquitectura Web
    Arquitectura Web
    2010-09-10 21:22:01|180 views
    Struts 2
    Struts 2
    2010-08-18 23:50:33|63 views
    Spring JDBC
    Spring JDBC
    2010-08-11 01:52:17|33 views
    JavaSE: Exception
    JavaSE: Exception
    2010-08-11 01:35:49|24 views
    MVC
    MVC
    2010-08-11 00:39:04|48 views
    Logging
    Logging
    2010-08-05 02:37:21|6 views
    Design Principles
    Design Principles
    2010-07-30 23:36:59|9 views
    Acceptance Test Driven Development
    Acceptance Test Driven Development
    2010-07-30 23:35:04|54 views
    Agile: User Stories
    Agile: User Stories
    2010-07-30 23:33:09|142 views
    Apache Maven
    Apache Maven
    2010-07-30 23:31:47|148 views
    iBatis
    iBatis
    2010-07-30 23:00:20|9 views
    Object Relational Mapping
    Object Relational Mapping
    2010-07-28 00:27:19|30 views
    Aspect Oriented Programming
    Aspect Oriented Programming
    2010-07-09 21:30:41|903 views
    JavaEE: EJB
    JavaEE: EJB
    2010-06-28 14:10:51|36 views
    Extreme Programming
    Extreme Programming
    2010-06-17 20:19:25|2447 views
    Desarrollo para Entorno Web
    Desarrollo para Entorno Web
    2010-06-17 20:19:09|214 views
    JavaSE: JDBC
    JavaSE: JDBC
    2010-06-17 20:00:41|36 views
    JavaEE: Persistencia
    JavaEE: Persistencia
    2010-06-17 19:58:53|30 views
    JavaEE: Session Beans
    JavaEE: Session Beans
    2010-06-17 19:58:37|21 views
    AJAX
    AJAX
    2010-06-17 19:42:19|51 views
    JavaEE: JSP
    JavaEE: JSP
    2010-06-17 19:40:38|36 views
    JavaEE: Servlets
    JavaEE: Servlets
    2010-06-17 19:39:45|52 views
    JavaEE: Arquitectura
    JavaEE: Arquitectura
    2010-06-17 19:37:13|255 views
    JavaEE: Web
    JavaEE: Web
    2010-06-17 19:37:04|9 views
    XP: Simple Design
    XP: Simple Design
    2010-06-12 07:03:51|0 views
    XP: Refactoring
    XP: Refactoring
    2010-06-12 07:03:16|3 views
    XP: Pair Programming
    XP: Pair Programming
    2010-06-12 07:02:57|27 views
    XP: Collective Code Ownership
    XP: Collective Code Ownership
    2010-06-12 07:00:16|730 views
    Spring Core Kata
    Spring Core Kata
    2010-06-10 18:11:55|2527 views
    Domain Driven Design
    Domain Driven Design
    2010-05-19 22:29:33|1632 views