SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
PRÁCTICAS TÉCNICAS
JOAN SEBASTIÁN RAMÍREZ PÉREZ
2016
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
¿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.
¿CUÁNTAS VECES DEBERÍAMOS
DESPLEGAR EN UN DÍA?
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
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
¿POR QUÉ HACER PRUEBAS DE
SOFTWARE?
• Software funcionando sobre documentación extensiva
• 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.
PRUEBAS DE SOFTWARE
• Pruebas de Software es un proceso de evaluar un sistema ya sea
manual o automático y verificar que este satisface los requisitos
o identifica diferencias entre lo esperados y los resultados
actuales.
• Subconjunto de las llamadas “prácticas técnicas” en la cual se
automatizan las pruebas del software.
• Alrededor del 30 40% del tiempo de la implementación se
invierte en la automatización de pruebas de software.
• Las pruebas de software apuntan a mejorar la calidad del
producto.
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.
TIPOS DE PRUEBAS
AUTOMATIZADAS
• Unitarias
• Integración
• Funcionales
• Sistema
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, RPGUnit.
¿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.
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.
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.
“NO HAY NINGÚN SECRETO EN CÓMO
ESCRIBIR LOS TESTS, SOLO HAY SECRETOS
EN CÓMO ESCRIBIR CÓDIGO TESTEABLE.”
MISKOHEVERY
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.
¿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)
PRUEBAS FUNCIONALES, DE
ACEPTACIÓN O E2E
• 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.
TIPOS DE PRUEBAS FUNCIONALES,
DE ACEPTACIÓN O E2E
• 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.
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.
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.
Tomado de: http://
blogs.agilefaqs.com/tag/unit-testing/
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
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
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
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
OTRAS BUENAS PRACTICAS
• Pair Programming
• TDD
• ATDD
• BDD
• ¿Cómo aprendemos?
Según William Glasser.
Tomado de: http://
www.infografiasyremedi
os.com/como-
aprendemos-teoria-de-
william-glasser/
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
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

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
 
Entregables de las pruebas
Entregables de las pruebasEntregables de las pruebas
Entregables de las pruebasYoel Diomedez
 
Alta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasAlta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasSoftware Guru
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones webpaulinaaillon
 
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
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones webAnibal Guzmán Miranda
 
Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Software Guru
 
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...Federico Toledo
 
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
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas AutomatizadasAngel Nuñez
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de softwareRodrigo Santiago
 
Testing Software
Testing SoftwareTesting Software
Testing Softwareodelorenzi
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de softwareGuillermo Lemus
 
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
 

La actualidad más candente (20)

PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB PRUEBA DE APLICACIONES WEB
PRUEBA DE APLICACIONES WEB
 
Entregables de las pruebas
Entregables de las pruebasEntregables de las pruebas
Entregables de las pruebas
 
Alta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmasAlta automatización de pruebas de calidad de software, cambio de paradigmas
Alta automatización de pruebas de calidad de software, cambio de paradigmas
 
Pruebas de aplicaciones web
Pruebas de aplicaciones webPruebas de aplicaciones web
Pruebas de aplicaciones web
 
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...
 
Control de versiones
Control de versionesControl de versiones
Control de versiones
 
Testing automatizado de aplicaciones web
Testing automatizado de aplicaciones webTesting automatizado de aplicaciones web
Testing automatizado de aplicaciones web
 
Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.Los Pecados Capitales en la Automatización de Pruebas de Software.
Los Pecados Capitales en la Automatización de Pruebas de Software.
 
Programación Extrema
Programación ExtremaProgramación Extrema
Programación Extrema
 
Calidad de software y TDD
Calidad de software y TDDCalidad de software y TDD
Calidad de software y TDD
 
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
Evento CDA Abstracta - Perú 2015 - Testing de performance y testing automátic...
 
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
 
Buenas practicas para el desarrollo de software
Buenas practicas para el desarrollo de softwareBuenas practicas para el desarrollo de software
Buenas practicas para el desarrollo de software
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas Automatizadas
 
Act 4.3 pruebas de software
Act 4.3 pruebas de softwareAct 4.3 pruebas de software
Act 4.3 pruebas de software
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Testing Software
Testing SoftwareTesting Software
Testing Software
 
Tipos de pruebas de software
Tipos de pruebas de softwareTipos de pruebas de software
Tipos de pruebas de software
 
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
 
Pruebas de Software
Pruebas de SoftwarePruebas de Software
Pruebas de Software
 

Destacado

Educacion para-la-salud-1.ppt pasar a los alumnos ahora
Educacion para-la-salud-1.ppt pasar a los alumnos ahoraEducacion para-la-salud-1.ppt pasar a los alumnos ahora
Educacion para-la-salud-1.ppt pasar a los alumnos ahoraBerly Cordero Ruelas
 
Interopérabilité de l'information bibliographique et muséologique
Interopérabilité de l'information bibliographique et muséologiqueInteropérabilité de l'information bibliographique et muséologique
Interopérabilité de l'information bibliographique et muséologiquePatrick Le Boeuf
 
Usted Ya Me Olvido (Roberto Carlos)
Usted Ya Me Olvido  (Roberto Carlos)Usted Ya Me Olvido  (Roberto Carlos)
Usted Ya Me Olvido (Roberto Carlos)Patricia Wright
 
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...Mr.Allah Dad Khan
 
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...Mr.Allah Dad Khan
 
PRESSoo: A formal ontology for continuing resources
PRESSoo: A formal ontology for continuing resourcesPRESSoo: A formal ontology for continuing resources
PRESSoo: A formal ontology for continuing resourcesISSN International Centre
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)programadorjavablog
 
Sistema de control para llenado de un tanque
Sistema de control para llenado de un tanqueSistema de control para llenado de un tanque
Sistema de control para llenado de un tanqueAbel Enrique
 

Destacado (17)

Educacion para-la-salud-1.ppt pasar a los alumnos ahora
Educacion para-la-salud-1.ppt pasar a los alumnos ahoraEducacion para-la-salud-1.ppt pasar a los alumnos ahora
Educacion para-la-salud-1.ppt pasar a los alumnos ahora
 
Interopérabilité de l'information bibliographique et muséologique
Interopérabilité de l'information bibliographique et muséologiqueInteropérabilité de l'information bibliographique et muséologique
Interopérabilité de l'information bibliographique et muséologique
 
Usted Ya Me Olvido (Roberto Carlos)
Usted Ya Me Olvido  (Roberto Carlos)Usted Ya Me Olvido  (Roberto Carlos)
Usted Ya Me Olvido (Roberto Carlos)
 
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...
Kitchen herb garden A Lecture By Mr Allah Dad Khan Former DG Agriculture Exte...
 
test
testtest
test
 
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...
Modell farm services centers A Lecture By Mr Allah Dad Khan Former DG Agricul...
 
El poder del email marketing
El poder del email marketing El poder del email marketing
El poder del email marketing
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
PRESSoo: A formal ontology for continuing resources
PRESSoo: A formal ontology for continuing resourcesPRESSoo: A formal ontology for continuing resources
PRESSoo: A formal ontology for continuing resources
 
Zaldibiko interpretazio zentroa
Zaldibiko interpretazio zentroaZaldibiko interpretazio zentroa
Zaldibiko interpretazio zentroa
 
Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)Patrones de diseño(presentación 7)
Patrones de diseño(presentación 7)
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Modelo diseño
Modelo diseñoModelo diseño
Modelo diseño
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Principios SOLID
Principios SOLIDPrincipios SOLID
Principios SOLID
 
Sistema de control para llenado de un tanque
Sistema de control para llenado de un tanqueSistema de control para llenado de un tanque
Sistema de control para llenado de un tanque
 

Similar a Practicas técnicas

Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdflgarcias
 
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
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurancewill2294
 
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
 
Aseguramiento De Calidad Mp
Aseguramiento De Calidad MpAseguramiento De Calidad Mp
Aseguramiento De Calidad MpZonar
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareGomez Gomez
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfBarcodeBarcode
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NETAngel Nuñez
 
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?Belatrix Software
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de softwareMarco Antonio
 

Similar a Practicas técnicas (20)

Pruebas-OCW.pdf
Pruebas-OCW.pdfPruebas-OCW.pdf
Pruebas-OCW.pdf
 
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...
 
Pruebas
PruebasPruebas
Pruebas
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Software Quality Assurance
Software Quality AssuranceSoftware Quality Assurance
Software Quality Assurance
 
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
 
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
 
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
 
Aseguramiento De Calidad Mp
Aseguramiento De Calidad MpAseguramiento De Calidad Mp
Aseguramiento De Calidad Mp
 
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
 
Curso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdfCurso Basico-Testing-03r003.pdf
Curso Basico-Testing-03r003.pdf
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NET
 
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
 
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
Abstracta-CDA - TESTING: Automatización y Performance - Herramientas para opt...
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Auditoria ii
Auditoria iiAuditoria ii
Auditoria ii
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Fases de prueba de software
Fases de prueba de softwareFases de prueba de software
Fases de prueba de software
 

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

Clean architecture
Clean architectureClean architecture
Clean architecture
 
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
 
Roles scrum
Roles scrumRoles scrum
Roles scrum
 
Lean startup
Lean startupLean startup
Lean startup
 
Roles desarrollo del software
Roles desarrollo del softwareRoles desarrollo del software
Roles desarrollo del software
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
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
 
Integracion continua
Integracion continuaIntegracion continua
Integracion continua
 
BDD TDD ATDD
BDD TDD ATDDBDD TDD ATDD
BDD TDD ATDD
 

Practicas técnicas

  • 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
  • 5.
  • 6.
  • 7.
  • 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
  • 12.
  • 13.
  • 14. 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
  • 15. ¿POR QUÉ HACER PRUEBAS DE SOFTWARE? • Software funcionando sobre documentación extensiva • 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.
  • 16. PRUEBAS DE SOFTWARE • Pruebas de Software es un proceso de evaluar un sistema ya sea manual o automático y verificar que este satisface los requisitos o identifica diferencias entre lo esperados y los resultados actuales. • Subconjunto de las llamadas “prácticas técnicas” en la cual se automatizan las pruebas del software. • Alrededor del 30 40% del tiempo de la implementación se invierte en la automatización de pruebas de software. • Las pruebas de software apuntan a mejorar la calidad del producto.
  • 17. 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.
  • 18. TIPOS DE PRUEBAS AUTOMATIZADAS • Unitarias • Integración • Funcionales • Sistema
  • 19. 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, RPGUnit.
  • 20. ¿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.
  • 21. 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.
  • 22.
  • 23. 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.
  • 24.
  • 25. “NO HAY NINGÚN SECRETO EN CÓMO ESCRIBIR LOS TESTS, SOLO HAY SECRETOS EN CÓMO ESCRIBIR CÓDIGO TESTEABLE.” MISKOHEVERY
  • 26. 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.
  • 27. ¿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)
  • 28. PRUEBAS FUNCIONALES, DE ACEPTACIÓN O E2E • 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.
  • 29. TIPOS DE PRUEBAS FUNCIONALES, DE ACEPTACIÓN O E2E • 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.
  • 30. 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.
  • 31. 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.
  • 33. 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
  • 34.
  • 35. 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
  • 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. 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
  • 38. OTRAS BUENAS PRACTICAS • Pair Programming • TDD • ATDD • BDD
  • 39.
  • 40.
  • 41.
  • 42. • ¿Cómo aprendemos? Según William Glasser. Tomado de: http:// www.infografiasyremedi os.com/como- aprendemos-teoria-de- william-glasser/
  • 43. 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
  • 44. 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