SlideShare una empresa de Scribd logo

Practicas tecnicas

prácticas técnicas, tdd, atdd, bdd, pruebas automáticas, integración continua, análisis estático de código

1 de 45
Descargar para leer sin conexión
PRÁCTICAS TÉCNICAS
JOAN SEBASTIÁN RAMÍREZ PÉREZ
2017
AGENDA
1. ¿Por qué introducir estos elementos?
2. Integración Continua
3. Pruebas Automáticas
4. Análisis estático de código
5. ¿Qué sigue?
6. Bibliografía
AGENDA
1. ¿Por qué introducir estos elementos?
2. Integración Continua
3. Pruebas Automáticas
4. Análisis estático de código
5. ¿Qué sigue?
6. Bibliografía
¿QUÉ QUEREMOS EVITAR CON LAS
PRÁCTICAS TÉCNICAS Y LA CALIDAD DE
NUESTRO CÓDIGO?
TOMADO DE CLEAN CODE, DE ROBERT
MARTIN
Practicas tecnicas
Practicas tecnicas

Más contenido relacionado

La actualidad más candente

PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB YULIANA JIMENEZ
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas SoftwareMicael Gallego
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionalesVicenç García-Altés
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones webAnibal Guzmán Miranda
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de softwareJhon Barrera
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones webpaulinaaillon
 
Revisión de código fuente de manera ágil
Revisión de código fuente de manera ágilRevisión de código fuente de manera ágil
Revisión de código fuente de manera ágilJose Luis Bugarin Peche
 
Modelos de procesos del software
Modelos de procesos del softwareModelos de procesos del software
Modelos de procesos del softwareElvisCallisaya
 
Pruebas Unitarias
Pruebas UnitariasPruebas Unitarias
Pruebas Unitariasggarber
 
Modelos de proceso de software
Modelos de proceso de softwareModelos de proceso de software
Modelos de proceso de softwareIsabel Callex Ch.
 

La actualidad más candente (20)

Programación Extrema
Programación ExtremaProgramación Extrema
Programación Extrema
 
PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB
 
Métodos del proceso de software
Métodos del proceso de softwareMétodos del proceso de software
Métodos del proceso de software
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
Introducción a las Pruebas Software
Introducción a las Pruebas SoftwareIntroducción a las Pruebas Software
Introducción a las Pruebas Software
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Automatización de pruebas funcionales
Automatización de pruebas funcionalesAutomatización de pruebas funcionales
Automatización de pruebas funcionales
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones web
 
Integración Continua
Integración ContinuaIntegración Continua
Integración Continua
 
14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software14. fundamentos de desarrollo de software
14. fundamentos de desarrollo de software
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
 
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
 
Revisión de código fuente de manera ágil
Revisión de código fuente de manera ágilRevisión de código fuente de manera ágil
Revisión de código fuente de manera ágil
 
Prueba software orientado a objetos
Prueba software orientado a objetosPrueba software orientado a objetos
Prueba software orientado a objetos
 
TDD
TDDTDD
TDD
 
Modelos de procesos del software
Modelos de procesos del softwareModelos de procesos del software
Modelos de procesos del software
 
Pruebas Unitarias
Pruebas UnitariasPruebas Unitarias
Pruebas Unitarias
 
Modelos de proceso de software
Modelos de proceso de softwareModelos de proceso de software
Modelos de proceso de software
 

Similar a Practicas tecnicas

Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdflgarcias
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -bJairoSimbaa
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfBarcodeBarcode
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Abstracta
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...Federico Toledo
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareJorge Bustillos
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareWilliam Remolina
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxCompusoftnetCiaLtda
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwarepanavarrv
 

Similar a Practicas tecnicas (20)

Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdf
 
Pruebas unitarias 7mo -b
Pruebas unitarias   7mo -bPruebas unitarias   7mo -b
Pruebas unitarias 7mo -b
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
U2T4 - Pruebas del Software
U2T4 - Pruebas del SoftwareU2T4 - Pruebas del Software
U2T4 - Pruebas del Software
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 
Exposición software.pptx
Exposición software.pptxExposición software.pptx
Exposición software.pptx
 
Enfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de softwareEnfoque estrategico para la prueba de software
Enfoque estrategico para la prueba de software
 
Fundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del softwareFundamento pruebas Ingeniería del software
Fundamento pruebas Ingeniería del software
 
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
pruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptxpruebasunitarias-110921232512-phpapp02.pptx
pruebasunitarias-110921232512-phpapp02.pptx
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 

Más de Joan Sebastián Ramírez Pérez (20)

Orm
OrmOrm
Orm
 
Servicios web
Servicios webServicios web
Servicios web
 
La nube. Cloud computting
La nube. Cloud computtingLa nube. Cloud computting
La nube. Cloud computting
 
Microservicios
MicroserviciosMicroservicios
Microservicios
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Lean startup
Lean startupLean startup
Lean startup
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Calidad en el desarrollo del software
Calidad en el desarrollo del softwareCalidad en el desarrollo del software
Calidad en el desarrollo del software
 
Lean canvas
Lean canvasLean canvas
Lean canvas
 
MVC
MVCMVC
MVC
 
Uml
UmlUml
Uml
 
Modelo negocio
Modelo negocioModelo negocio
Modelo negocio
 
Retrospectiva
RetrospectivaRetrospectiva
Retrospectiva
 

Practicas tecnicas

  • 2. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 3. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 4. ¿QUÉ QUEREMOS EVITAR CON LAS PRÁCTICAS TÉCNICAS Y LA CALIDAD DE NUESTRO CÓDIGO? TOMADO DE CLEAN CODE, DE ROBERT MARTIN
  • 8. ¿POR QUÉ LAS PRÁCTICAS TÉCNICAS? • Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. • Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor. • El software funcionando es la medida principal de progreso. • Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida. • La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.
  • 10. DESPLIEGUES QUE AMAZON PUEDE HACER EN UN DÍA • Tiempo entre despliegues 11,6 segundos • Máximo número de despliegues en una hora 1.079 • Simultáneamente pueden estar recibiendo un despliegue 10.000 hosts • Número máximo de hosts recibiendo despliegues 30.000 • Tomado de: http://assets.en.oreilly.com/1/event/60/Velocity%20Culture% 20Presentation.pdf
  • 11. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 17. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 18. ¿POR QUÉ HACER PRUEBAS DE SOFTWARE? • Mitigar errores en la aplicación. • Eficiencia de la aplicación. • Aseguramiento de la calidad (proceso del desarrollo del software). • Flexibilidad del software. • Adaptación del sistema a cambios futuros.
  • 19. MOCKING • Los mocks son objetos falsos que simulan el comportamiento de un objeto real. • Se llaman Mock a los objetos que imitan el comportamiento de objetos reales de una forma controlada. Se usan para probar a otros objetos en test unitarios que esperan mensajes de una clase en particular para sus métodos, al igual que los diseñadores de autos usan un crash dummy cuando simulan un accidente. • Algunos frameworks para hacer mocks: Mockito, EasyMock, PowerMock, Jmock, Jmockit, ngMock, JustMock, Nmock, RhinoMock.
  • 21. PRUEBAS UNITARIAS • Testean la funcionalidad de una unidad de código emulando las llamas a otras unidades (tanto internas como externas). • La emulación se hace a través de mocking. • las pruebas unitarias por lo general son simples y rápidas de codificar, el desarrollo de una prueba unitaria no debería tomar más de cinco minutos. • Algunos frameworks: Junit, Karma, Nunit, RSpec.
  • 22. ¿QUÉ DEBERÍA CUMPLIR UNA PRUEBA UNITARIA? • Unitaria: prueba solamente pequeñas cantidades de código. • Independiente: no debe depender ni afectar a otras pruebas unitarias. • Automatizable: la prueba no debería requerir intervención manual. • Repetible y predecible: no debe incidir el orden y las veces que se repita la prueba, el resultado siempre debe ser el mismo.
  • 23. PATRÓN AAA Hace referencia a la forma en la cual se debe organizar el código para automatizar una prueba. • Arrange: preparar objetos, variables, dependencias y mock necesarios para hacer el llamado a la prueba. • Act: se invoca la funcionalidad que se quiere probar con lo que se genero en el arrange. • Assert: verificar que el resultado del act coincide con el esperado a través de un assert. Un único assert por prueba.
  • 24. SET UP Y TEAR DOWN • Set up nos permite inicializar valores comunes a todos los test. • Tear Down nos permite limpiar valores comunes a todos los test.
  • 26. MiskoHevery “No hay ningún secreto en cómo escribir los tests, solo hay secretos en cómo escribir código testeable.”
  • 27. PRUEBAS DE INTEGRACIÓN • Testean unidades de código. • Se hacen similar a las unitarias solo que no es necesaria la emulación de las unidades. • Es importante probar excepciones y timeout en este tipo de pruebas. • Se hacen con los mismos framework que las pruebas unitarias.
  • 28. ¿CUÁNDO ES UNA PRUEBA DE INTEGRACIÓN? • Cuando involucra una o más clases en simultaneo. • Cuando el código se comunica fuera de las fronteras de su propio proceso (base de datos, la red, sistemas de archivos)
  • 29. PRUEBAS FUNCIONALES • Testean la aplicación incluso interactuando con las diferentes capas de ella. • Estas pruebas simulan la interacción del usuario con la aplicación. • Jbehave, Cucumber, Protractor, Selenium, Code Ui, Spec Flow, etc.
  • 30. TIPOS DE PRUEBAS FUNCIONALES • Visuales o de apariencia: garantizan que la interfaz de usuario se despliega de la manera esperada con todas sus secciones, comportamientos y elementos • Transversales: son las pruebas en las cuales se hace un robot que ingresa los datos a la pantalla y hace la petición como lo haría un usuario.
  • 31. PRUEBAS DEL SISTEMA • Testean la aplicación como un todo. • Usualmente son usadas para realizar pruebas de stress o para verificar atributos de calidad definidos para la aplicación. • Pruebas requisitos no funcionales.
  • 32. TIPOS DE PRUEBAS DE SISTEMA • Rendimiento: mide la aplicación respecto a los requisitos no funcionales asociados a tiempo de respuesta. Pueden medir también consumo de recursos, memoria, disco, procesador, ancho de banda, etc. • Escalabilidad: mide que el rendimiento de la aplicación no desmejore abruptamente en la medida que incrementa el número de usuarios. • Profiling: análisis de rendimiento en un determinado momento. Usado habitualmente para identificar problemas de rendimiento en ambientes de producción.
  • 34. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 36. CUADRANTE DEUDA TÉCNICA DE FOWLER Tomado de: http://www.slideshare.net/JavierGarzas/deuda- tecnica-slideshare?qid=2eba2bc2-2828-4c70-990d- 206fe0affe33&v=qf1&b=&from_search=1
  • 37. CUADRANTE DEUDA TÉCNICA DE FOWLER Tomado de: http://www.slideshare.net/JavierGarzas/deuda- tecnica-slideshare?qid=2eba2bc2-2828-4c70-990d- 206fe0affe33&v=qf1&b=&from_search=1
  • 38. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 39. OTRAS BUENAS PRACTICAS • Pair Programming • TDD • ATDD • BDD
  • 43. • ¿Cómo aprendemos? Según William Glasser. Tomado de: http://www.infografiasyre medios.com/como- aprendemos-teoria-de- william-glasser/
  • 44. AGENDA 1. ¿Por qué introducir estos elementos? 2. Integración Continua 3. Pruebas Automáticas 4. Análisis estático de código 5. ¿Qué sigue? 6. Bibliografía
  • 45. BIBLIOGRAFÍA • P. Kruchten, R. Nord, and I. Ozkaya, “Technical debt: from metaphor to theory and practice” IEEE Software, vol. 29(6), pp. 18-21, 2012. • http://www.slideshare.net/JavierGarzas/deuda-tecnica-slideshare?qid=2eba2bc2-2828- 4c70-990d-206fe0affe33&v=qf1&b=&from_search=1 • MARTIN, Robert. Código Limpio. Manual de estilo para el desarrollo ágil de software. Anaya Multimedia, 2012. • Laurie Williams & Robert Kessler. (2002). Pair Programming Illuminated. (1st ed.). : Addison-Wesley Professional. • Dan North. (2006). Behavior Modification. Better Software magazine, 2006-03(03). • http://blogs.agilefaqs.com/tag/unit-testing/ • http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf