Pruebas del SistemaPruebas del SistemaJOEDAYZ, Noviembre 2013JOEDAYZ, Noviembre 2013
Acerca deAcerca de
Ing. José Amadeo Martin Díaz DíazIng. José Amadeo Martin Díaz Díaz
CEO JoeDayz.pe & Docente en EPE UPCCEO JoeDayz.pe & Docente en EPE UPC
Formación Formación
BlueStar Energy (2007)BlueStar Energy (2007)
Bristol Myers Squibb (2006)Bristol Myers Squibb (2006)
Trans Solutions Systems (2003 - 2005)Trans Solutions Systems (2003 - 2005)
Telefonica Servicios Internet (2000 - 2002)Telefonica Servicios Internet (2000 - 2002)
Egresado de la Pontificia Universidad Católica del Perú (1994 - 2000)Egresado de la Pontificia Universidad Católica del Perú (1994 - 2000)
@jamdiazdiaz@jamdiazdiaz
¿Por que son ¿Por que son importantes las importantes las pruebas?pruebas?
Usuarios contentos con nuestro trabajoUsuarios contentos con nuestro trabajo
¿Por que son ¿Por que son importantes las importantes las pruebas?pruebas?
Usuarios insatisfechosUsuarios insatisfechos
¿Cual debe ser nuestra ¿Cual debe ser nuestra preocupación?preocupación?
Que el software funcione Que el software funcione o tendremos este tipo de o tendremos este tipo de
respuestarespuesta
El tiempo La calidad vale mas que el dinero El tiempo La calidad vale mas que el dinero
Tiempo de Respuesta adecuadoTiempo de Respuesta adecuado
¿Y que pruebas debo ¿Y que pruebas debo hacer?hacer?
Mínimo XP-PruebasMínimo XP-PruebasXP: Extreme ProgrammingXP: Extreme Programming
Pruebas de unidad para todoPruebas de unidad para todo
Pruebas de integraciónPruebas de integración
Deben funcionar todas las pruebas antes de Deben funcionar todas las pruebas antes de liberarliberar
Si surge un error (bug), deben escribirse las Si surge un error (bug), deben escribirse las pruebas para replicarlo. pruebas para replicarlo. Un bug es una prueba Un bug es una prueba que olvidamos escribirque olvidamos escribir
Pruebas unitariasPruebas unitarias
Se prueban los componentes aisladosSe prueban los componentes aislados
Generalmente se usan Mocks o StubsGeneralmente se usan Mocks o Stubs
Se usan verificaciones “asserts” para probarSe usan verificaciones “asserts” para probar
Son confundidas con Pruebas de IntegraciónSon confundidas con Pruebas de Integración
Pruebas de caja blancaPruebas de caja blanca
Pruebas de integraciónPruebas de integración
Sirven para probar los componentes Sirven para probar los componentes involucrados en un flujoinvolucrados en un flujo
Validan el trabajo de varios desarrolladoresValidan el trabajo de varios desarrolladores
Pruebas de caja negraPruebas de caja negra
Puede ser automatizados, simulan la Puede ser automatizados, simulan la interacción con el usuario interacción con el usuario
Pruebas de RendimientoPruebas de RendimientoSirven para verificar el comportamiento de una Sirven para verificar el comportamiento de una aplicación baja una demanda excesivaaplicación baja una demanda excesiva
Se genera una gran cantidad de peticiones a la Se genera una gran cantidad de peticiones a la aplicación y verificar su comportamiento.aplicación y verificar su comportamiento.
De esta manera podemos garantizar el numero de De esta manera podemos garantizar el numero de peticiones peticiones aproximadoaproximado bajo las cuales la bajo las cuales la aplicación, servidor, interacción con otros aplicación, servidor, interacción con otros aplicativos, etc. aplicativos, etc. es normales normal
Sugerencia: Sugerencia: Entorno similar a ProducciónEntorno similar a Producción
Pruebas FuncionalesPruebas Funcionales
Prueba basada en la ejecución, revisión y Prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades retroalimentación de las funcionalidades previamente diseñadas para el softwarepreviamente diseñadas para el software
Se hacen mediante modelos de prueba que Se hacen mediante modelos de prueba que buscan evaluar cada una de las opciones con las buscan evaluar cada una de las opciones con las que cuenta el softwareque cuenta el software
Son concretas, especificas y exhaustivas para Son concretas, especificas y exhaustivas para probar y validar que el software hace lo que debe probar y validar que el software hace lo que debe y sobretodo, lo que se ha especificado.y sobretodo, lo que se ha especificado.
Prueba de aceptaciónPrueba de aceptación
Es un escenario de utilización del sistema y el Es un escenario de utilización del sistema y el comportamiento que de él se esperacomportamiento que de él se espera
Visto desde la perspectiva del cliente, usuario o Visto desde la perspectiva del cliente, usuario o sistema externo que interactúa con el sistema externo que interactúa con el programa. programa.
Estas pruebas permiten Validar el ProductoEstas pruebas permiten Validar el Producto. . Mientras que las pruebas unitarias y de Mientras que las pruebas unitarias y de integración permiten Verificar el Producto.integración permiten Verificar el Producto.
Pruebas de calidad de Pruebas de calidad de códigocódigo
Para garantizar que la calidad del código es realmente Para garantizar que la calidad del código es realmente óptima y que la probabilidad de tener errores o bugs en la óptima y que la probabilidad de tener errores o bugs en la codificación es mínima (nunca dejaran de existir pero se codificación es mínima (nunca dejaran de existir pero se busca disminuir la probabilidad)busca disminuir la probabilidad)
Cobertura: % de código desarrollado y probado por Cobertura: % de código desarrollado y probado por pruebas unitariaspruebas unitarias
Análisis de lineas de código: evitar código repetido, que % Análisis de lineas de código: evitar código repetido, que % esta documentado, comentadoesta documentado, comentado
Complejidad: acorde a la implementación ciclomática de Complejidad: acorde a la implementación ciclomática de McCabe.McCabe.
Pruebas de calidad de Pruebas de calidad de códigocódigo
Diseño de ClasesDiseño de Clases
Violaciones de CalidadViolaciones de Calidad
SonarSonar
CheckstyCheckstylele
FindBuFindBugsgs
Impacto de las pruebasImpacto de las pruebas
El tener una buena batería de pruebas nos El tener una buena batería de pruebas nos permite entre otras cosas:permite entre otras cosas:
Validar nuestros requerimientosValidar nuestros requerimientos
Medir el impacto de los refactoringsMedir el impacto de los refactorings
Documenta el proyectoDocumenta el proyecto
Permite mejorar el diseñoPermite mejorar el diseño
Faltan mas pruebasFaltan mas pruebas
Pruebas de SistemaPruebas de Sistema
Pruebas de Integración de SistemaPruebas de Integración de Sistema
Pruebas no funcionalesPruebas no funcionales
Entre otrasEntre otras
Automatización de Automatización de pruebaspruebas
Usamos JENKIS para el build del proyectoUsamos JENKIS para el build del proyecto
Las pruebas deben ser Las pruebas deben ser
RepetiblesRepetibles
AutónomasAutónomas
De ejecución rápidaDe ejecución rápida
Integración continuaIntegración continua
Es el proceso de que cada cierto tiempo o cambio en el Es el proceso de que cada cierto tiempo o cambio en el código (commit en el repositorio), se construye el código (commit en el repositorio), se construye el proyecto automáticamenteproyecto automáticamente
Este proceso realiza:Este proceso realiza:
CompilaciónCompilación
Ejecución de pruebasEjecución de pruebas
Generación de ReportesGeneración de Reportes
Notificación de erroresNotificación de errores
¿Sólo las pruebas ¿Sólo las pruebas ayudan?ayudan?
by by @domix@domix
Visual ManagementVisual Management
Visual ManagementVisual Management
ConclusionesConclusionesLas pruebas son parte del proceso que garantiza el éxito Las pruebas son parte del proceso que garantiza el éxito del producto. Son como los brazos del cuerpo humano. del producto. Son como los brazos del cuerpo humano. Pueden no estar, pero, son importantes para el todo.Pueden no estar, pero, son importantes para el todo.
La clave esta en la comunicación temprana de lo bueno y La clave esta en la comunicación temprana de lo bueno y lo malo o el efecto “bola de nieve” puede causar que el lo malo o el efecto “bola de nieve” puede causar que el proyecto fracaseproyecto fracase
Busque mantener a sus usuarios/clientes satisfechos con Busque mantener a sus usuarios/clientes satisfechos con su trabajosu trabajo
No se ponga en situaciones como la que viene a No se ponga en situaciones como la que viene a continuación…continuación…
Ing. Jose Diaz Ing. Jose Diaz @jamdiazdiaz@jamdiazdiaz
www.joedayz.pewww.joedayz.pe
Noviembre 2013Noviembre 2013
GraciasGracias