SlideShare una empresa de Scribd logo
Welcome
https://www.linkedin.com/in/alberto-gonzalez-lizan
https://twitter.com/agonzalezlizan
Alberto González Lizán
agonzalez@addentra.net
La tecnología, una de mis pasiones
Formación
Ingeniero informático (2004-2009)
Master en Dirección de Proyectos Informáticos (2018-2019)
CTO de Addentra Internet SL
Welcome
agonzalez@addentra.net
¿Qué es Addentra?
Empresa con más de 10 años de trayectoria dedicada al desarrollo de SW
(Guadalajara / Madrid).
 Producto propio  Hemos desarrollado uno de los SW líder en
el panorama de la gestión de clínicas dentales.
 Actualmente desarrollando un nuevo producto muy potente.
 Construimos SW de calidad.
… Más al final.
Test Driven Development (TDD)
 Charla técnica a la par que entretenida
 Historia del TDD
 Trabajaremos con un ejemplo básico
 Mis errores y experiencias
 Guiños a los gerentes y a detractores
 Integración con SCRUM
 Nuevos desarrolladores en TDD
agonzalez@addentra.net
Y voy a hablar….
¡Para contársela a aquellos gerentes que
todavía no se lo crean!
Desarrollo guiado por pruebas
¿TDD?
agonzalez@addentra.net
agonzalez@addentra.net
¿Quién lo inventó?
Kent Beck
https://twitter.com/KentBeck
https://www.linkedin.com/in/kentbeck/
https://www.kentbeck.com/
Creador de las metodologías de programación
extrema
Uno de los 17 firmantes del manifiesto ágil
Test Driven Development. By Example
agonzalez@addentra.net
TDD ¿para qué?
Más robusto
Más seguro
Más fácil de mantener
Mayor rapidez en el desarrollo
agonzalez@addentra.net
TDD ¿para qué?
Aumentamos la CALIDAD del SW
¿Quién no quiere sentirse productivo?
Más satisfechos con nuestro trabajo
Aumenta nuestra motivación
Aumenta nuestra productividad
agonzalez@addentra.net
TDD, ¿aporta algo más?
Documentación
Clean Code
Escalabilidad de tu equipo
Menor número de bugs
Satisfacción de los clientes
agonzalez@addentra.net
¿Cómo funciona?
Requisito/funcionalidad no implementado/a
agonzalez@addentra.net
Un poco de teoría…
Clase/Componente
SUT
Spec de la
Clase/Componente
Suite de test
(describe)
Suite de test
(describe)
Test (it)
Test (it)
…
Test (it)
Test (it)
…
Sintaxis: FW Jasmine
expect
expect
agonzalez@addentra.net
¿Y las dependencias?
Una de las grandes barreras del TDD
¡Los objetos instanciados en una clase no
son testeables!
“Dobles de test”
agonzalez@addentra.net
Dobles de test
Martin Fowler
“Test doubles is a generic term for any kind of pretend object used in place of a real object
for testing purposes”
Mock Stub Fake
agonzalez@addentra.net
Veamos un ejemplo…
Aplicación web
Angular v8
Jasmine v3.4.0
https://github.com/gonzalezlizan/tddtalk
agonzalez@addentra.net
Veamos un ejemplo…
Componente
interfaz gráfica
Servicio
encargado de los
cálculos
 Recoger los datos de
la interfaz
 Conexión con servicio
y pintar el resultado
 Se encarga de los
cálculos
matemáticos
agonzalez@addentra.net
TDD: Ejemplo
https://github.com/gonzalezlizan/tddtalk
agonzalez@addentra.net
¿Cómo medir los tests?
 Aspecto de referencia para verificar la calidad de nuestros tests
 Cerca del 75%
 ¡Cuidado! El coverage verifica que secciones de código ejecuta el
test, pero eso no quiere decir que sean correctos
Code Coverage
Combinarlo con Pair Programming o Code Reviews
agonzalez@addentra.net
Code Coverage: Ejemplo
agonzalez@addentra.net
Un bug con TDD
¿Quién reparando un bug ha generado otro?
¿Quién ha reparado el mismo bug en varias ocasiones?
Reproducimos el bug en un test
Retocamos el código para que el test sea
satisfactorio
Ejecutar resto de tests y verificamos que no
hemos roto nada
agonzalez@addentra.net
Bug fix: Ejemplo
agonzalez@addentra.net
TDD… ¿es suficiente?
¡NO!
 TDD garantiza que el código va a funcionar en la manera esperada, en los
casos en los que fue pensado
 No va a evitar que me olvide de considerar algún caso o que entienda mal un
requisito
TDD + e2e
agonzalez@addentra.net
e2e: Ejemplo
agonzalez@addentra.net
Developers con TDD
Los inicios no son fáciles
Más significativa a mayor
experiencia en el desarrollo
de SW sin TDD
agonzalez@addentra.net
Developers con TDD
Confianza
 Mayor calidad en el código desarrollado
 Factor de motivación intrínseco
agonzalez@addentra.net
Developers con TDD
Refactorización
“Si algo funciona, no lo toques”
“Si algo se puede mejorar, hazlo”
 Código óptimo, mantenible y claro
 Código reutilizable
 Menos bugs
agonzalez@addentra.net
Developers con TDD
Sin depuración
 No es necesario depurar
 Ahorro de tiempo y aumento de productividad
agonzalez@addentra.net
Managers con TDD
Apoyo de la
dirección
Dudas en el
proceso de
implantación
agonzalez@addentra.net
Managers con TDD
Reduce costes
agonzalez@addentra.net
Managers con TDD
Potencia tu equipo
 Motivación intrínseca
 Facilita integración de Juniors
 Mayor confianza en los resultados
 GTD (Getting Things Done)
agonzalez@addentra.net
Managers con TDD
Satisfacción de
clientes
 Tests están pensados desde el punto
de vista del cliente
 Menos bugs
agonzalez@addentra.net
Reduce el Time To
Market
 Nos permite garantizar que una
versión sea susceptible de entregar al
cliente de una manera mucho más
rápida
Managers con TDD
agonzalez@addentra.net
Integración TDD+SCRUM
Integración directa
 Client/Product Owner comenta necesidad
 Historias de usuario con requisitos de DONE
 For sprint (historias de usuario seleccionadas)
1. For historia de usuario
1. For criterios de aceptación
a. Red Test/s
b. Code
c. Green Test/s
d. Refactor
e. All Tests
agonzalez@addentra.net
Errores con TDD
Code before Test
 Común en los inicios con TDD
 Muy peligroso
 Solución  Experiencia
agonzalez@addentra.net
Errores con TDD
Duplicidad de tests
 Mal planteamiento
 Solución  Experiencia
agonzalez@addentra.net
Errores con TDD
Baja cobertura
 No testear por completo el comportamiento
 Solución  Herramienta de coverage (> 75%)
agonzalez@addentra.net
Errores con TDD
Tests innecesarios
 Testing de funciones privadas o
comportamientos innecesarios
 Solución  Experiencia
agonzalez@addentra.net
Errores con TDD
Falsa sensación de seguridad
 Los tests no significa que no haya errores en el
código, sino que puede ser que no haya un test
que cubra el error
 Solución  e2e
agonzalez@addentra.net
Errores con TDD
Menospreciar el rendimiento
 Ejecución de todos los tests muy costosa en tiempo.
 Solución  Optimización de los tests, soluciones de
simulado de navegador para aplicaciones web
agonzalez@addentra.net
¿Y sin TDD?
“Una vez que trabajas con TDD pues ….”
• Construcción de prototipos (proyectos con requisitos cambiantes
diariamente)
• Proyectos con deadline muy fuerte y equipo sin experiencia en
TDD  Efecto rebote
agonzalez@addentra.net
Perfiles que comienzan con TDD
Junior: buena
aceptación (3-6
meses)
Senior que se
adaptan: buena
aceptación (2-4
meses)
Senior que no se
adaptan
agonzalez@addentra.net
Conclusiones
Gerente
Incremento de la productividad del equipo
Ahorro de costes
Desarrollador
Minimización del retrabajo
Motivación intrínseca.
Cliente
Productos con una menor cantidad de errores
Satisfacción mayor
agonzalez@addentra.net
¿Y esto lo hacéis en Addentra?
¡Sí!
TDD
Últimas tecnologías
IA
Agile
Producto propio
¡Jornada continua todo el año!
¿Quieres conocernos?
Bye
https://www.linkedin.com/in/alberto-gonzalez-lizan
https://twitter.com/agonzalezlizan
Alberto González Lizán
agonzalez@addentra.net
¡Gracias!

Más contenido relacionado

La actualidad más candente

BDD y tests automatizados
BDD y tests automatizadosBDD y tests automatizados
BDD y tests automatizados
Sofia Swidarowicz
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
Javier Novoa Cataño
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
programadorjavablog
 
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
Orlando Bustos Mateluna
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
Carlos Ble
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bddlsajrf
 
Introducción a automatización de pruebas web
Introducción a automatización de pruebas webIntroducción a automatización de pruebas web
Introducción a automatización de pruebas web
Francisco Moreno Sanz
 
Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15
Aitor Suso Gáceta
 
Actividad 07 zsar
Actividad 07 zsarActividad 07 zsar
Actividad 07 zsar
Andres Valverde
 
Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.
José María Pérez Ramos
 
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
Cristian Romero Matesanz
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDDFran Grau
 
Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven Development
Ricardo Markiewicz
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Agustin Ramos
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoAgustin Ramos
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
Eduardo Turiño
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
will2294
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD) Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
Scio Consulting
 
Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
Helder De Oliveira
 

La actualidad más candente (20)

BDD y tests automatizados
BDD y tests automatizadosBDD y tests automatizados
BDD y tests automatizados
 
Cómo hacer Test Driven Development
Cómo hacer Test Driven DevelopmentCómo hacer Test Driven Development
Cómo hacer Test Driven Development
 
7iSF-4 test driver development
7iSF-4   test driver development7iSF-4   test driver development
7iSF-4 test driver development
 
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
 
TDD
TDDTDD
TDD
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
Td dvs bdd
Td dvs bddTd dvs bdd
Td dvs bdd
 
Introducción a automatización de pruebas web
Introducción a automatización de pruebas webIntroducción a automatización de pruebas web
Introducción a automatización de pruebas web
 
Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15Dealing with fear in legacy projects #PHPDS15
Dealing with fear in legacy projects #PHPDS15
 
Actividad 07 zsar
Actividad 07 zsarActividad 07 zsar
Actividad 07 zsar
 
Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.Workshop: Testeando nuestra aplicaciones.
Workshop: Testeando nuestra aplicaciones.
 
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
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Introducción a Behaviour Driven Development
Introducción a Behaviour Driven DevelopmentIntroducción a Behaviour Driven Development
Introducción a Behaviour Driven Development
 
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
Desarrollo Dirigido por Comportamiento (con Cucumber y Groovy)
 
BDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamientoBDD - Desarrollo dirigido por comportamiento
BDD - Desarrollo dirigido por comportamiento
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD) Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
 
Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)Bdd (Behavior Driven Development)
Bdd (Behavior Driven Development)
 

Similar a TDD talk

15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
Pepe
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Software Guru
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
Rodrigo Corral
 
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumTech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Eduardo Riol
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationAgile Spain
 
Transformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOpsTransformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOps
atSistemas
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
Eduardo Riol
 
Autana Framework for Automated Siebel Testing - FASTEST
Autana Framework for Automated Siebel Testing - FASTESTAutana Framework for Automated Siebel Testing - FASTEST
Autana Framework for Automated Siebel Testing - FASTEST
Juan Antonio Ruiz Ruiz
 
Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010
Rodrigo Corral
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Eduardo Riol
 
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
Software Guru
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
Jobsket
 
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
Software Guru
 
Guideline técnico para implementar un A/B Test
Guideline técnico para implementar un A/B TestGuideline técnico para implementar un A/B Test
Guideline técnico para implementar un A/B Test
Flat 101
 
Una introducción a ontimize
Una introducción a ontimizeUna introducción a ontimize
Una introducción a ontimize
ontimize
 
Shift Left: En busca del éxito del software
Shift Left: En busca del éxito del softwareShift Left: En busca del éxito del software
Shift Left: En busca del éxito del software
Marco Avendaño
 
Importancia del testing en los proyectos
Importancia del testing en los proyectosImportancia del testing en los proyectos
Importancia del testing en los proyectos
Software Guru
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.i
elssalinas
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.com
José Luis Lee Rázuri
 

Similar a TDD talk (20)

15 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 200915 Upm Solo Pruebas 2009
15 Upm Solo Pruebas 2009
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
ALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas PrácticasALM09 - Scrum, Visual Studio y Buenas Prácticas
ALM09 - Scrum, Visual Studio y Buenas Prácticas
 
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_seleniumTech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
Tech day#7 – especificaciones_ejecutables_y_BDD_con_cucumber_y_selenium
 
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automationCas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
Cas2010 behavior-driven-development-aplicado-en-acceptance-test-automation
 
Transformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOpsTransformación Digital en clave Cloud, ALM y DevOps
Transformación Digital en clave Cloud, ALM y DevOps
 
Meetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poderMeetup bdd & tdd: aprovecha_su_poder
Meetup bdd & tdd: aprovecha_su_poder
 
Autana Framework for Automated Siebel Testing - FASTEST
Autana Framework for Automated Siebel Testing - FASTESTAutana Framework for Automated Siebel Testing - FASTEST
Autana Framework for Automated Siebel Testing - FASTEST
 
Introducción a tdd
Introducción a tddIntroducción a tdd
Introducción a tdd
 
Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010Caminando hacia la agilidad con Visual Studio 2010
Caminando hacia la agilidad con Visual Studio 2010
 
Cas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocioCas 2017 bdd-colaborando_de_verdad_con_negocio
Cas 2017 bdd-colaborando_de_verdad_con_negocio
 
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
Círculo de Crédito: Del modelo de negocio a la arquitectura, retos y experien...
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
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
 
Guideline técnico para implementar un A/B Test
Guideline técnico para implementar un A/B TestGuideline técnico para implementar un A/B Test
Guideline técnico para implementar un A/B Test
 
Una introducción a ontimize
Una introducción a ontimizeUna introducción a ontimize
Una introducción a ontimize
 
Shift Left: En busca del éxito del software
Shift Left: En busca del éxito del softwareShift Left: En busca del éxito del software
Shift Left: En busca del éxito del software
 
Importancia del testing en los proyectos
Importancia del testing en los proyectosImportancia del testing en los proyectos
Importancia del testing en los proyectos
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.i
 
Desarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.comDesarrollo de Software por www.jasoftsolutions.com
Desarrollo de Software por www.jasoftsolutions.com
 

Último

A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
manuelalejandro238
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
everchanging2020
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
michiotes33
 
Bash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptxBash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptx
SantosCatalinoOrozco
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
FRANCISCOJUSTOSIERRA
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
mirellamilagrosvf
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
KevinCabrera96
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
LuisEnriqueCarboneDe
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
AldithoPomatay2
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
ycalful01
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
LuisLobatoingaruca
 
Sesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdfSesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdf
DeyvisPalomino2
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
SamuelHuapalla
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
JavierAlejosM
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
ValGS2
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
arielemelec005
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
UOC Estudios de Informática, Multimedia y Telecomunicación
 

Último (20)

A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- ConstruccionA3QUIROZ,MANUEL- Operaciones Basicas- Construccion
A3QUIROZ,MANUEL- Operaciones Basicas- Construccion
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
 
Material magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulasMaterial magnetismo.pdf material del electromagnetismo con fórmulas
Material magnetismo.pdf material del electromagnetismo con fórmulas
 
Bash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptxBash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptx
 
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
TR-514 (3) - BIS copia seguridad DOS COLUMNAS 2024 1.6.24 PREFERIDO.wbk.wbk S...
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
 
Joseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidadJoseph juran aportaciones al control de la calidad
Joseph juran aportaciones al control de la calidad
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 
Sesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdfSesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdf
 
Análisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operacionesAnálisis de Sensibilidad clases de investigacion de operaciones
Análisis de Sensibilidad clases de investigacion de operaciones
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 

TDD talk

Notas del editor

  1. Construimos SW de calidad por la experiencia de muchos años de desarrollo
  2. Clean code por la refactorización
  3. SUT = Sujeto bajo test
  4. Doble de test: Verificamos que los parámetros con los que se invoca o que la asignación se realiza con el valor/es correcto/s
  5. Fowler: también es firmante del manifiesto ágil de 2001 Mock: Suplanta al objeto real del cual depende Valida comportamiento Guardan las acciones que se hacen sobre ellos Necesario configurar qué comportamiento esperas cuando alguien llame a alguno de sus métodos Stub: Objeto en el que configuras que cuando llames a un método devuelva un valor determinado. Ej: Objeto que para un método de suma independientemente de los valores que le pases devuelva 5 Fake Es un objeto que implementado completamente y que funciona, como un objeto normal sin ser simulado, pero se diferencia en que está falseando algo para hacer alguna cosa más fácil de probar. Base de datos en memorio, en lugar de acceder a una de producción
  6. Exponer estructura. Explicar inyección en AppComponent del servicio (revisar mock). Explicar testing y code en AppComponent Explicar testing y code en el servicio. // Bad practise. I don't recommend use class code on tests (+) Revisar integración de la funcionalidad de PI
  7. En muchas ofertas se usa como referencia para reflejar la “calidad” de los tests unitarios
  8. En el develop/servicio CON FIT
  9. Con los test e2e logramos testear el flujo entero. Cuando se realizan pruebas unitarias, los componentes de una aplicación se prueban de manera aislada, sin embargo, esto tiene la desventaja de no ser capaz de verificar la integridad de la información mientras es pasada de un componente de la aplicación a otro. Usando pruebas E2E resolvemos este problema interactuando con la aplicación como un usuario regular lo haría, y, por lo tanto, utilizando cada parte de la aplicación y evaluando las respuestas para el comportamiento esperado. El FW empleado es protractor.
  10. Develop: npm run e2e
  11. Principio es bastante frustrante pues parece que los tiempos se extienden en exceso y es complejo adaptarse Como anécdota curiosa hace unos meses un junior de nuestra empresa se disponía a realizar unos cambios en una plataforma que no está desarrollada con TDD, y su pregunta era ¿Cómo se hace sin TDD? No pude evitar sentir que estábamos haciendo un excelente trabajo con nuestra cantera.
  12. Confianza. Mayor calidad en el código desarrollado Motivación intrínseca!
  13. Apoyo de la dirección. CLAVE Dudas. Los tiempos se dilatan. Se tiende a evaluar TDD en gente que no tiene experiencia con la metodología y por lo tanto los tiempos se dilantan, pero no por TDD sino por el proceso de aprendizaje del desarrollador
  14. Siempre que he podido hablar sobre desarrollo con algunos gerentes parece que TDD sea un “enemigo”, pues parece que existirá un sobrecoste en la desarrollo. Sin embargo, lo cierto es que el coste finalmente es mucho mayor pues se invierte en los infinitos mantenimientos y en las costosas puestas en producción. A partir de la experiencia que hemos tenido con dos de nuestros productos en nuestra compañía se pueden extraer los siguientes datos. Y ojo, siendo pesimista partiendo de la base de que con TDD se tardará algo más en el desarrollo, cosa que sinceramente no termino de tener claro.10 En esta tabla podemos ver que una vez está desarrollado, los tiempos empiezan a dispararse, pues encima los bugs en producción pueden generar un sobrecoste exponencial, a parte de el impacto negativo en nuestros clientes.
  15. Motivación intrínseca al tratarse de resultados de calidad Integración de juniors al poder confiar en ellos por no haber daños colaterales GTD se centran en hacer una cosa a la vez para mejorar la productividad. Getting Things Done es un método de productividad desarrollado por David Allen que ha sido aceptado mundialmente como una de las metodologías más eficientes de organización personal. Como se puede leer en la Wikipedia, GTD se basa en el principio de que una persona necesita liberar su mente de las tareas pendientes guardándolas en un lugar específico, de forma que no sea necesario recordar lo que hay que hacer y se puede concentrar en realizar las tareas. Esta es una de las bases de TDD, primero específicas todas las pruebas y posteriormente vas implementando cada funcionalidad una a una.
  16. Muchas veces tendemos a engañarnos pensando en que vamos a pensar como hacerlo tirando código, y finalmente terminamos tirando todo el código y dejando los tests para el final. Esto a parte de ser menos productivo es muy peligroso pues puede resultar que los tests no testean de forma correcta el funcionamiento deseado.
  17. Una vez que trabajas con TDD pues …. CASO DE PEPE. Tenía miedo e inseguridad al programar sin TDD. Al final no usarlo se salva de igual manera con esfuerzo humano ¡¡¡¡¡PEPE EN RADIOFÍSICA!!!!!! OJO! Donde no aplicarlo es por dar ejemplos, que yo lo usaría de igual manera. Interfaz y BDD Proyectos con deadline….. Se puede producir el efecto rebote y que la gente odie el TDD
  18. Por nuestra experiencia en la integración de perfiles a TDD….