17
Software Testing Juan Carlos Olivares Rojas MSN: [email protected] [email protected] http://antares.itmorelia.edu.mx/~jcolivar/ @jcolivares Social Network: Facebook, LinkedIn. Hi5

Software Testing Juan Carlos Olivares Rojas MSN: [email protected] [email protected] jcolivar/ @jcolivares

Embed Size (px)

Citation preview

Page 1: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

Software Testing

Juan Carlos Olivares Rojas

MSN: [email protected]@itmorelia.edu.mx

http://antares.itmorelia.edu.mx/~jcolivar/@jcolivares

Social Network: Facebook, LinkedIn. Hi5

Page 2: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Específica: conoce los términos básicos de la reingeniería de software y aplica técnicas de reingeniería para el mejoramiento de software existente así mismo utiliza mejores prácticas para el desarrollo de software.

• Genéricas

• Instrumentales: Capacidad de análisis y síntesis, Solución de problemas, Toma de decisiones.

Competencias

Page 3: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

La gran foto

Page 4: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Al realizar una reestructuración de códigos se debe probar que los cambios realizados sigan satisfaciendo las pruebas unitarias, de integración y de aceptación.

• Si un software no contiene pruebas unitarias deberá refactorizarse para crear dichas pruebas.

Testing in Refactoring

Page 5: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Aunque muchos de los modelos son de tipo estático como los diagramas de clases que definen la arquitectura de un sistema, todo modelo puede probarse previamente para ver si funciona.

• De hecho antes de codificar los modelos deben de ser válidos y en la etapa de codificación sólo se debiera de validar que lo que se hizo se hizo bien.

Testing in Modeling

Page 6: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Las pruebas de software deben de realizarse en cada etapa de desarrollo: inicio, elaboración, construcción y despliegue. Esto se puede lograr a través de la implementación de técnicas de calidad como las Revisiones Técnicas Formales.

• Las pruebas de calidad van enfocadas hacia el proceso y producto en base a métricas e indicadores dados como referencia.

• Se sugiere utilizar estructuras probadas de diseño: Patrones de Diseño.

Testing Software

Page 7: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Traen información sobre el comportamiento de la aplicación en tiempo de ejecución.

• En general las herramientas de perfilado se enfocan en: manejo de hilos, memoria y rendimiento de CPU pero otras variables también pueden ser monitorizadas.

• En general todas las herramientas de perfilado necesitan calibrarse para tener un óptimo desempeño.

Profiling Testing

Page 8: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Las herramientas de perfilado ya tienen un conjunto de pruebas predefinidas para probar aplicaciones.

• En general se pueden guardar instantáneas para el análisis posterior de la información.

• En el caso del código portátil (Java, .NET) se debe recordar que la máquina virtual consume espacio de memoria y recursos de la máquina. Para aplicaciones pequeñas no se recomienda su uso.

Profiling Testing

Page 9: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• En muchas ocasiones se necesita de un perfilado de la aplicación para que se ejecuta de forma óptima bajo una plataforma o características particulares. A este tipo de pruebas se les denomina tunning test.

• En general aplica más en aplicaciones de servidor (J2EE) o aplicaciones de cómputo distribuido de alto rendimiento.

Profile Testing

Page 10: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• En lenguajes que utilicen recolectores de basura es necesario revisar constantemente la efectividad del mismo. Se sugiere que cuando un objeto se deje de utilizar se igual a null para un mejor desempeño.

• Se sugiere utilizar tipos de datos primitivos a objetos ya que se obtiene un mejor desempeño.

Profile Testing

Page 11: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• El manejo del recolector de basura sólo deberá hacerse cuando la aplicación sea muy compleja.

• Se deberán verificar los destructores y/o métodos finalizadores de los objetos.

• Se deberá tener cuidado con estructuras de datos como String y char[] que consumen mucha memoria y tardan en ser liberada dicha memoria.

Profile Testing

Page 12: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• El uso de objetos sincronizados hace más lento el desempeño de las aplicaciones. Si la aplicación no maneja concurrencia no hay necesidad de utilizarlas (en java Vector y ArrayList hacen exactamente lo mismo sólo que Vector es sincronizada).

• El monitoreo de los recursos es parte fundamental del profiling.

Profile Testing

Page 13: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• El manejo cadenas constantes en Java por ejemplo String cad=“hola” es única a diferencia de cadenas creadas con el operador new.

• Se pueden utilizar reductores de clases como: DashO-Pro, Jax o Jsrink. Muchas de estas herramientas funcionan como ofuscadores al igual que SourceGuard.

Profile Testing

Page 14: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• A partir del Java SE 6 se puede uitlizar la API de JMX para el monitoreo remoto de aplicaciones

• Existen diversos tipos de pruebas de perfilado: estrés, carga, rendimiento y capacidad.

• Se sugiere se realicen los siguientes pasos:

Profile Testing

Page 15: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Identificar el ambiente de ala prueba• Identificar los criterios de aceptación• Planear y diseñar las pruebas• Configurar el ambiente de prueba• Implementar el diseño de las pruebas• Ejecutar las pruebas• Analizar los resultados, reportes y realizar

nuevamente las pruebas.

Profile Testing

Page 16: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

• Roger S. Pressman, Ingeniería de software un enfoque práctico.Ed. McGraw Hill.

•  • Piattini M.G. y F.O, Calidad en el

desarrollo y mantenimiento del software. Ed. RAMA.

•  • Weitzenfeld, Ingeniería de Software

Orientada a Objetos con UML, Java e Intrnet, Thomson.

Referencias

Page 17: Software Testing Juan Carlos Olivares Rojas MSN: juancarlosolivares@hotmail.com jcolivar@itmorelia.edu.mx jcolivar/ @jcolivares

¿Preguntas?