SlideShare una empresa de Scribd logo
1 de 18
Universidad de Oriente
Departamento de Ingeniería de Sistemas
Cursos Especiales de Grado
Área: Ciencias de la Computación
Lenguajes y Técnicas Avanzadas de Programación
Bachilleres:
Barreto Daniela
Charles Adriana
Equipo: Delphi
Prof. Jonathan Vásquez
Introducción
Desarrollo Dirigido por Test (TDD)
Las Reglas de TDD
Ciclo de desarrollo de TDD
Ventajas de usar TDD
Tips para el aprendizaje de TDD
Ejemplo
Conclusión
Bibliografía
Equipo: Delphi Daniela Barreto
Introducción
Test-Driven Development, surgió como practica de diseño de software
orientado a objetos, basada en derivar el código de pruebas automatizadas
escritas antes del mismo. Con el correr de los años, se ha ido ampliando su
uso. Se ha utilizado para poner el énfasis en hacer pequeñas pruebas de
unidad que garanticen la cohesión de las clases, así como en pruebas de
integración que aseguren la calidad del diseño y la separación de
incumbencias. Y el los últimos años se ha comenzado a avanzar con los
conceptos de TDD hacia las pruebas de interacción a través de interfaces de
usuario.
Equipo: Delphi Daniela Barreto
Según Ble Jurado, C (2010), es una técnica
de diseño e implementación de software incluida
dentro de la metodóloga XP. TDD es una técnica
para diseñar software que se centra en tres pilare
fundamentales:
 La implementación de las funciones juntas que el cliente necesita y
no mas
 La minimización del número de defectos que llegan al software en
fase de producción.
 La producción del software modular, altamente reutilizable y
preparado para el cambio.
Equipo: Delphi
¿Cómo lo
hago?
¿Por dónde
empiezo?
¿Cómo se que es
lo que hay que
implementar y lo
que no?
¿Cómo escribir un
código que se
pueda modificar si
romper
funcionalidad
existente?
Equipo: Delphi
No está permitido escribir ningún
código de producción sin tener una
prueba que falle
No está permitido escribir más
código de producción que el
necesario para pasar su prueba
unitaria.
No está permitido escribir más
código de prueba que el necesario
para fallar (y no compilar es fallar).
Según Martin Robert C. (2009), una de las máximas
autoridades en TDD, describe el proceso en base a tres simples
reglas:
Equipo: Delphi Daniela Barreto
1. El cliente escribe su historia de
usuario.2. Se escriben junto con el cliente los
criterios de aceptación de esta
historia3. Se escoge el criterio de aceptación
más simple y se traduce en una
prueba unitaria
4. Se comprueba que esta prueba
falla.
5.Se escribe el código que hace pasar
la prueba.
6. Se ejecutan todas las pruebas
automatizadas7. Se refactoriza y se limpia el código.8.Se vuelven a pasar todas las
pruebas automatizadas para
comprobar que todo sigue
funcionando.
9. Volvemos al punto 3 con los criterios de
aceptación que falten y repetimos el ciclo
una y otra vez hasta completar nuestra
aplicación
Equipo: Delphi Daniela Barreto
La pregunta habitual cuando alguien te habla sobre TDD es
¿Porque es mejor hacer las pruebas antes que el código?
Para responder a esta pregunta:
Los programadores que utilizan el desarrollo guiado por
pruebas en un proyecto virgen encuentran que en raras
ocasiones tienen la necesidad de utilizar el depurador o
debugger.
A pesar de los elevados requisitos iníciales de aplicar esta
metodología, el desarrollo guiado por pruebas (TDD)
puede proporcionar un gran valor añadido en la creación
de software, produciendo aplicaciones de más calidad y en
menos tiempo.
Ofrece más que una simple validación del cumplimiento de los
requisitos, también puede guiar el diseño de un programa.
cuando es utilizada correctamente, se asegura de que todo el
código escrito está cubierto por una prueba. Esto puede dar al
programador un mayor nivel de confianza en el código
Equipo: Delphi Daniela Barreto
Es recomendable probar una unidad de código solo a través
de su API pública (y en términos prácticos, "protegido" es
efectivamente público). Al hacer esto, obtenemos un mejor
aislamiento de los detalles específicos de la implementación.
Evita calcular el valor esperado, ya que podríamos terminar
duplicando el código de producción, incluyendo cualquier
error que este pudiera tener. Preferiblemente, calcula el
resultado esperado manualmente (y revísalo por lo menos un
par de veces) y colócalo como una constante
Evita compartir estado entre pruebas. Debe ser posible
ejecutar las pruebas en cualquier orden o incluso, ejecutar
una prueba dentro de otra prueba. Mantener las pruebas
aisladas de las demás también es un factor indispensable para
la confiabilidad y mantenibilidad de las mismas.
Equipo: Delphi Daniela Barreto
Frecuentemente los errores en el código de pruebas se
esconden en los métodos de inicialización. Mantener
este código simple y compacto puede ser un gran paso
para la mantenibilidad del código.
Si no es posible determinar lo que una prueba está
haciendo, es probable que en realidad esté
verificando múltiples cosas: hazla pedazos y
convierte cada uno en su propia prueba individual.
Si una parte del código es particularmente resistente a tus
esfuerzos de probarla, voltea al código en busca de
problemas en el diseño del mismo. Un código fácil de
probar frecuentemente está débilmente acoplado con el
resto del sistema, es altamente cohesivo y sigue los
principios fundamentales del diseño de software.
Equipo: Delphi Daniela Barreto
Vamos a crear un código en Python que cuando le
indiquemos un número entero, nos regrese un
arreglo con sus factores primos.
from unittest import main, TestCase
class TestPrimeFactors(TestCase):
def testPrimesOf0(self):
self.assertEquals([], factorsOf(0))
if __name__ == '__main__':
main()
Al correr este código se
ejecuta la prueba
“testPrimesOf0” y
obtenemos un error
"NameError: global name
'factorsOf' is not defined".
Esta es nuestra señal para
detenernos y agregar a
nuestro código la definición
de factorsOf:
def factorsOf(n):
return []
Equipo: Delphi Daniela Barreto
def
testPrimesOf0to1(self):
self.assertEquals([],
factorsOf(0))
self.assertEquals([],
factorsOf(1))
Ahora ya pasa nuestra
prueba. Así que podemos
continuar escribiendo
código de prueba.
Reemplazamos nuestro
caso de prueba para incluir
el caso del 1.
def
testPrimesOf2(self):
self.assertEquals([
2], factorsOf(2))
Funciona bien. Ahora
agreguemos una prueba
para el 2, el cual es un
número primo y por lo
tanto debe regresar un
arreglo con su mismo
valor.
def factorsOf(n):
if n > 1:
return [n]
return []
Como era de
esperarse, la prueba
falla, así que es hora
de escribir código.
Cambiamos la
implementación de
nuestra función
factorsOf por:
Equipo: Delphi Daniela Barreto
def testPrimesOf2to3(self):
self.assertEquals([2],
factorsOf(2))
self.assertEquals([3],
factorsOf(3))
def testPrimesOf2to4(self):
self.assertEquals([2],
factorsOf(2))
self.assertEquals([3],
factorsOf(3))
self.assertEquals([2,2],
factorsOf(4))
Con esto, la prueba es
válida. Intentemos con
otro número primo, el 3.
También es válida. Así
que agregamos una
nueva prueba, donde
alimentamos un número
con factores
Equipo: Delphi Daniela Barreto
def factorsOf(n):
result, factor = [], 2
while n > 1:
while n % factor == 0:
result.append(factor)
n /= factor
factor += 1
return result
Obtenemos un error con el
mensaje: “AssertionError: Lists
differ: [2, 2] != [4]”, ya que
nuestra función factorsOf no
está lista para arrojar el
resultado esperado. Hora de
modificar el código:
Equipo: Delphi Daniela Barreto
 El TDD es beneficioso independientemente de la metodología que se esté
utilizando en el proyecto.
 Ayuda a escribir código más modular, más cohesionado, menos acoplado y
más robusto.
 Se automatiza la detección muy precoz de regresiones funcionales y de bugs,
facilitando mucho su resolución y disminuyendo significativamente su
impacto en tiempos y coste.
 Los tests documentan claramente qué comportamiento se espera de cada
unidad testeada, sobre todo si en su codificación se han seguido los
principios de "código limpio”
 Si realizamos primero las pruebas podremos hacer un ejercicio previo de
análisis de los diferentes requisitos necesarios para el ejercicio que se nos
plantea, esto nos ayuda a crear el código mínimamente necesario para
nuestro propósito, permitiéndonos no generar extra que luego se convierte en
basura o código muerto.
Equipo: Delphi Daniela Barreto
 Beck K. Test-Driven Development. By Example. Pearson
Education 2003.

 Ble Jurado C, “Diseño Ágil con TDD”, eBook. Primera
Edición. Enero 2010.
 Osherove R. The Art of Unit Testing. Manning
Publications, 2009
Equipo: Delphi Daniela Barreto
Unidad ii. tdd

Más contenido relacionado

La actualidad más candente

Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETLa Red DBAccess
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de pruebaAndrés Grosso
 
Estrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwareEstrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwarepadrino98
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.Juan Ravi
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareAndres Valencia
 
Proyecto de sistemas de información luis castellanos (prueba)
Proyecto de sistemas de información   luis castellanos (prueba)Proyecto de sistemas de información   luis castellanos (prueba)
Proyecto de sistemas de información luis castellanos (prueba)Luis R Castellanos
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de softwareRodrigo Santiago
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareLaura M. Castro
 
Diseno de casos_de_prueba_erick_silva_p
Diseno de casos_de_prueba_erick_silva_pDiseno de casos_de_prueba_erick_silva_p
Diseno de casos_de_prueba_erick_silva_pkarenespinoza94
 
Is.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación ExtremaIs.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación Extremaperaltag
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NETAngel Nuñez
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de softwareCentro Líbano
 

La actualidad más candente (20)

Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NETPruebas Unitarias - Uso de NUnit dentro de proyectos .NET
Pruebas Unitarias - Uso de NUnit dentro de proyectos .NET
 
Taller casos de prueba
Taller casos de pruebaTaller casos de prueba
Taller casos de prueba
 
Estrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwareEstrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de software
 
Tecnicas de Pruebas
 Tecnicas de Pruebas  Tecnicas de Pruebas
Tecnicas de Pruebas
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 
Capitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_softwareCapitulo 17 estrategias_de_prueba_de_software
Capitulo 17 estrategias_de_prueba_de_software
 
Proyecto de sistemas de información luis castellanos (prueba)
Proyecto de sistemas de información   luis castellanos (prueba)Proyecto de sistemas de información   luis castellanos (prueba)
Proyecto de sistemas de información luis castellanos (prueba)
 
niveles de prueba
niveles de pruebaniveles de prueba
niveles de prueba
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de software
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
6.redes pruebas de software
6.redes pruebas de software6.redes pruebas de software
6.redes pruebas de software
 
Gestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo softwareGestión de pruebas en desarrollo software
Gestión de pruebas en desarrollo software
 
Diseno de casos_de_prueba_erick_silva_p
Diseno de casos_de_prueba_erick_silva_pDiseno de casos_de_prueba_erick_silva_p
Diseno de casos_de_prueba_erick_silva_p
 
Is.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación ExtremaIs.EXP.1.327117 Programación Extrema
Is.EXP.1.327117 Programación Extrema
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NET
 
Estrategias prueba de software
Estrategias prueba de softwareEstrategias prueba de software
Estrategias prueba de software
 

Similar a Unidad ii. tdd

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
 
Behavior1
Behavior1Behavior1
Behavior1arajar
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumSoftware Guru
 
las fases del proceso de programacion
las fases del proceso de programacionlas fases del proceso de programacion
las fases del proceso de programaciongabyota_123
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetseusonlito
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareGomez Gomez
 
#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
 
practica 9 de fundamento.pdf
practica 9 de fundamento.pdfpractica 9 de fundamento.pdf
practica 9 de fundamento.pdfEduinGamer
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de softwaresairarcf
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfPabloMorales831994
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareDomingo Suarez Torres
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Javier Morales
 

Similar a Unidad ii. tdd (20)

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)
 
Behavior1
Behavior1Behavior1
Behavior1
 
Cypress en un mundo lleno de Selenium
Cypress en un mundo lleno de SeleniumCypress en un mundo lleno de Selenium
Cypress en un mundo lleno de Selenium
 
las fases del proceso de programacion
las fases del proceso de programacionlas fases del proceso de programacion
las fases del proceso de programacion
 
TDD
TDDTDD
TDD
 
Testing & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnetsTesting & Pizza by Lito & nitsnets
Testing & Pizza by Lito & nitsnets
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
#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
 
practica 9 de fundamento.pdf
practica 9 de fundamento.pdfpractica 9 de fundamento.pdf
practica 9 de fundamento.pdf
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
software testing
software testingsoftware testing
software testing
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
Vuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdfVuelta_a_los_origines_Testing.pdf
Vuelta_a_los_origines_Testing.pdf
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Fasesdedesarrollodeunprograma
FasesdedesarrollodeunprogramaFasesdedesarrollodeunprograma
Fasesdedesarrollodeunprograma
 
Fasesdedesarrollodeunprograma 130929181547-phpapp02
Fasesdedesarrollodeunprograma 130929181547-phpapp02Fasesdedesarrollodeunprograma 130929181547-phpapp02
Fasesdedesarrollodeunprograma 130929181547-phpapp02
 
Estrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar softwareEstrategias ágiles para incrementar calidad al construir y probar software
Estrategias ágiles para incrementar calidad al construir y probar software
 
Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01Cursotdd 141202105217-conversion-gate01
Cursotdd 141202105217-conversion-gate01
 
Ra.1..
Ra.1..Ra.1..
Ra.1..
 
Pruebas del software
Pruebas del softwarePruebas del software
Pruebas del software
 

Último

Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISIfimumsnhoficial
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.pptVitobailon
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdfAnthonyTiclia
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 

Último (20)

Normas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISINormas para los aceros basados en ASTM y AISI
Normas para los aceros basados en ASTM y AISI
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
Fe_C_Tratamientos termicos_uap _3_.ppt
Fe_C_Tratamientos termicos_uap   _3_.pptFe_C_Tratamientos termicos_uap   _3_.ppt
Fe_C_Tratamientos termicos_uap _3_.ppt
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
2. UPN PPT - SEMANA 02 GESTION DE PROYECTOS MG CHERYL QUEZADA(1).pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 

Unidad ii. tdd

  • 1.
  • 2. Universidad de Oriente Departamento de Ingeniería de Sistemas Cursos Especiales de Grado Área: Ciencias de la Computación Lenguajes y Técnicas Avanzadas de Programación Bachilleres: Barreto Daniela Charles Adriana Equipo: Delphi Prof. Jonathan Vásquez
  • 3. Introducción Desarrollo Dirigido por Test (TDD) Las Reglas de TDD Ciclo de desarrollo de TDD Ventajas de usar TDD Tips para el aprendizaje de TDD Ejemplo Conclusión Bibliografía Equipo: Delphi Daniela Barreto
  • 4. Introducción Test-Driven Development, surgió como practica de diseño de software orientado a objetos, basada en derivar el código de pruebas automatizadas escritas antes del mismo. Con el correr de los años, se ha ido ampliando su uso. Se ha utilizado para poner el énfasis en hacer pequeñas pruebas de unidad que garanticen la cohesión de las clases, así como en pruebas de integración que aseguren la calidad del diseño y la separación de incumbencias. Y el los últimos años se ha comenzado a avanzar con los conceptos de TDD hacia las pruebas de interacción a través de interfaces de usuario. Equipo: Delphi Daniela Barreto
  • 5. Según Ble Jurado, C (2010), es una técnica de diseño e implementación de software incluida dentro de la metodóloga XP. TDD es una técnica para diseñar software que se centra en tres pilare fundamentales:  La implementación de las funciones juntas que el cliente necesita y no mas  La minimización del número de defectos que llegan al software en fase de producción.  La producción del software modular, altamente reutilizable y preparado para el cambio. Equipo: Delphi
  • 6. ¿Cómo lo hago? ¿Por dónde empiezo? ¿Cómo se que es lo que hay que implementar y lo que no? ¿Cómo escribir un código que se pueda modificar si romper funcionalidad existente? Equipo: Delphi
  • 7. No está permitido escribir ningún código de producción sin tener una prueba que falle No está permitido escribir más código de producción que el necesario para pasar su prueba unitaria. No está permitido escribir más código de prueba que el necesario para fallar (y no compilar es fallar). Según Martin Robert C. (2009), una de las máximas autoridades en TDD, describe el proceso en base a tres simples reglas: Equipo: Delphi Daniela Barreto
  • 8. 1. El cliente escribe su historia de usuario.2. Se escriben junto con el cliente los criterios de aceptación de esta historia3. Se escoge el criterio de aceptación más simple y se traduce en una prueba unitaria 4. Se comprueba que esta prueba falla. 5.Se escribe el código que hace pasar la prueba. 6. Se ejecutan todas las pruebas automatizadas7. Se refactoriza y se limpia el código.8.Se vuelven a pasar todas las pruebas automatizadas para comprobar que todo sigue funcionando. 9. Volvemos al punto 3 con los criterios de aceptación que falten y repetimos el ciclo una y otra vez hasta completar nuestra aplicación Equipo: Delphi Daniela Barreto
  • 9. La pregunta habitual cuando alguien te habla sobre TDD es ¿Porque es mejor hacer las pruebas antes que el código? Para responder a esta pregunta: Los programadores que utilizan el desarrollo guiado por pruebas en un proyecto virgen encuentran que en raras ocasiones tienen la necesidad de utilizar el depurador o debugger. A pesar de los elevados requisitos iníciales de aplicar esta metodología, el desarrollo guiado por pruebas (TDD) puede proporcionar un gran valor añadido en la creación de software, produciendo aplicaciones de más calidad y en menos tiempo. Ofrece más que una simple validación del cumplimiento de los requisitos, también puede guiar el diseño de un programa. cuando es utilizada correctamente, se asegura de que todo el código escrito está cubierto por una prueba. Esto puede dar al programador un mayor nivel de confianza en el código Equipo: Delphi Daniela Barreto
  • 10. Es recomendable probar una unidad de código solo a través de su API pública (y en términos prácticos, "protegido" es efectivamente público). Al hacer esto, obtenemos un mejor aislamiento de los detalles específicos de la implementación. Evita calcular el valor esperado, ya que podríamos terminar duplicando el código de producción, incluyendo cualquier error que este pudiera tener. Preferiblemente, calcula el resultado esperado manualmente (y revísalo por lo menos un par de veces) y colócalo como una constante Evita compartir estado entre pruebas. Debe ser posible ejecutar las pruebas en cualquier orden o incluso, ejecutar una prueba dentro de otra prueba. Mantener las pruebas aisladas de las demás también es un factor indispensable para la confiabilidad y mantenibilidad de las mismas. Equipo: Delphi Daniela Barreto
  • 11. Frecuentemente los errores en el código de pruebas se esconden en los métodos de inicialización. Mantener este código simple y compacto puede ser un gran paso para la mantenibilidad del código. Si no es posible determinar lo que una prueba está haciendo, es probable que en realidad esté verificando múltiples cosas: hazla pedazos y convierte cada uno en su propia prueba individual. Si una parte del código es particularmente resistente a tus esfuerzos de probarla, voltea al código en busca de problemas en el diseño del mismo. Un código fácil de probar frecuentemente está débilmente acoplado con el resto del sistema, es altamente cohesivo y sigue los principios fundamentales del diseño de software. Equipo: Delphi Daniela Barreto
  • 12. Vamos a crear un código en Python que cuando le indiquemos un número entero, nos regrese un arreglo con sus factores primos. from unittest import main, TestCase class TestPrimeFactors(TestCase): def testPrimesOf0(self): self.assertEquals([], factorsOf(0)) if __name__ == '__main__': main() Al correr este código se ejecuta la prueba “testPrimesOf0” y obtenemos un error "NameError: global name 'factorsOf' is not defined". Esta es nuestra señal para detenernos y agregar a nuestro código la definición de factorsOf: def factorsOf(n): return [] Equipo: Delphi Daniela Barreto
  • 13. def testPrimesOf0to1(self): self.assertEquals([], factorsOf(0)) self.assertEquals([], factorsOf(1)) Ahora ya pasa nuestra prueba. Así que podemos continuar escribiendo código de prueba. Reemplazamos nuestro caso de prueba para incluir el caso del 1. def testPrimesOf2(self): self.assertEquals([ 2], factorsOf(2)) Funciona bien. Ahora agreguemos una prueba para el 2, el cual es un número primo y por lo tanto debe regresar un arreglo con su mismo valor. def factorsOf(n): if n > 1: return [n] return [] Como era de esperarse, la prueba falla, así que es hora de escribir código. Cambiamos la implementación de nuestra función factorsOf por: Equipo: Delphi Daniela Barreto
  • 14. def testPrimesOf2to3(self): self.assertEquals([2], factorsOf(2)) self.assertEquals([3], factorsOf(3)) def testPrimesOf2to4(self): self.assertEquals([2], factorsOf(2)) self.assertEquals([3], factorsOf(3)) self.assertEquals([2,2], factorsOf(4)) Con esto, la prueba es válida. Intentemos con otro número primo, el 3. También es válida. Así que agregamos una nueva prueba, donde alimentamos un número con factores Equipo: Delphi Daniela Barreto
  • 15. def factorsOf(n): result, factor = [], 2 while n > 1: while n % factor == 0: result.append(factor) n /= factor factor += 1 return result Obtenemos un error con el mensaje: “AssertionError: Lists differ: [2, 2] != [4]”, ya que nuestra función factorsOf no está lista para arrojar el resultado esperado. Hora de modificar el código: Equipo: Delphi Daniela Barreto
  • 16.  El TDD es beneficioso independientemente de la metodología que se esté utilizando en el proyecto.  Ayuda a escribir código más modular, más cohesionado, menos acoplado y más robusto.  Se automatiza la detección muy precoz de regresiones funcionales y de bugs, facilitando mucho su resolución y disminuyendo significativamente su impacto en tiempos y coste.  Los tests documentan claramente qué comportamiento se espera de cada unidad testeada, sobre todo si en su codificación se han seguido los principios de "código limpio”  Si realizamos primero las pruebas podremos hacer un ejercicio previo de análisis de los diferentes requisitos necesarios para el ejercicio que se nos plantea, esto nos ayuda a crear el código mínimamente necesario para nuestro propósito, permitiéndonos no generar extra que luego se convierte en basura o código muerto. Equipo: Delphi Daniela Barreto
  • 17.  Beck K. Test-Driven Development. By Example. Pearson Education 2003.   Ble Jurado C, “Diseño Ágil con TDD”, eBook. Primera Edición. Enero 2010.  Osherove R. The Art of Unit Testing. Manning Publications, 2009 Equipo: Delphi Daniela Barreto