domingo, 28 de agosto de 2011

Buenas Prácticas en la Automatización de Pruebas

1  Introducción

Dentro del Testing de Software, la automatización de pruebas es una de las actividades que presentan una mayor espectativas. La posibilidad de ejecutar las pruebas de software de manera desatendida, hace que las organizaciones vuelquen sus esperanzas en la automatización como la solución ideal para abaratar los costes y acortar los tiempos de pruebas.

Sin embargo, poner en marcha la automatización no es una tarea sencilla. Es necesario salvar numerosas dificultades para poder llevar a cabo una automatización eficiente y que permita retornar la inversión realizada. Es importante fijar un conjunto de prácticas que agilicen las tareas de mantenimiento y construcción y que aporten una cierta metodología a nuestro proceso de automatización .


2  Algunas buenas prácticas

1.  Infraestructura de Carpetas.
Los productos de la Automatización deben mantenerse organizados.  Scripts, ficheros de datos, aplicaciones de soporte, documentación, ficheros de configuración, etc... deben almacenarse en un sistema de directorios y carpetas que permitan su direccionamiento rápido.

La organización puede depender de los objetivos. Podemos organizar nuestra infraestructura de directorios por aplicación, por plan de pruebas, por sistema, etc...

2. Modularización
Los casos de prueba automatizados pueden modularizarse en base a librerías que realicen funcionalidades más sencillas, de esa forma se agilizará el mantenimiento de los casos. 

También es posible construir librerías de propósito general que apliquen a todos nuestros casos automatizados con independencia de la aplicación o proceso. Ejemplos de librerías de propósito general son:
  • Control de errores
  • Escritura/lectura de ficheros de datos

3. Robustez.
En caso de que se produzca un error no controlado durante la ejecución, la lógica del caso de prueba debe ser capaz de finalizar y dejar el estado del equipo de ejecución estable y listo para continuar con una nuevo caso de prueba.

Una posibilidad es comprobar el estado de la maqueta al comenzar una ejecución, forzando el cierre de aquellas aplicaciones que se encuentren abiertas o levantar o parar aquellos servicios necesarios.


4. Sistema de Trazas.
La información que debe aportar un caso de prueba debe ser fiable. En caso de fallo debe informar de manera concreta de lo que ha ocurrido.

Completar la construcción de los casos de prueba con un sistema de trazas que aporten toda la información o suministrar la captura de la pantalla en el momento del error, pueden ayudar a ganar confianza en los casos automatizados.
5. Flexibilidad
Los casos de prueba automatizados se deben preparar teniendo en cuenta posibles cambios.

Una opción es parametrizar aquellos datos susceptibles de cambios: rutas de acceso, identificadores de usuarios, etc..

6. Mantenimiento de los equipos de ejecución.
La ejecución de casos automáticos suele ser una tarea estresante para los equipos donde corren los casos. Es recomendable programar tareas de mantenimiento como reinicios periódicos, eliminación de ficheros temporales, desfragmentación de discos, etc...

viernes, 19 de agosto de 2011

Pruebas de Rendimiento en Cloud Testing

1  Cloud Computing
 
El Cloud Computing ha significado un cambio en la forma de suministrar y acceder a los Sistemas de Información. Los entornos Cloud Computing consiguen generar beneficios para proveedores y usuarios por su flexibilidad, transparencia y ahorro de costes.

Paralelamente, se han desarrollado las técnicas de Cloud Testing, existiendo actualmente una gran variedad de herramientas y suministradores que permiten realizar pruebas de rendimiento y carga haciendo uso de plataformas, infraestructura y software en modalidad de uso bajo demanda.

2  Cloud Testing

Podemos definir el Cloud Testing como el conjunto de técnicas y herramientas de testing que utilizan recursos que se encuentran en la nube. Por recursos, debemos entender cualquier elemento (hardware, software e infreestructura) necesario para llevar a cabo las pruebas.

Desde el punto de vista del usuario final, el Cloud Testing se encuentra ligado a la capa SasS (Software as Service) del modelo Cloud Computing, permitiendo contratar el uso de una herramienta que se encuentra distribuida en Internet mediante la modalidad de pago por uso.

Capas del modelo Cloud Computing


3 Load Test en Cloud.

Actualmente existen empresas que permiten contratar sus servicios en entornos Cloud Computing para posteriormente inyectar la carga sobre la aplicación en pruebas desde servidores que se encuentran distribuidos en la nube.

Load Testing en entornos Cloud

El suministrador de un servicio de Cloud Testing, proporciona una consola virtual para poder seguir la evolución de las pruebas, y una vez finalizadas suministrará los resultados a los ingenieros de pruebas para que puedan ser analizados.

La utilización de soluciones Cloud Testing, no implica cambios significativos en la forma de realizar las pruebas de rendimiento. Puede ser utilizada la misma metodología que seguiríamos si tuviéramos nuestra herramienta de pruebas instalada localmente, aunque será necesario tener en cuenta algunos aspectos y limitaciones.

El Cloud Testing no involucra únicamente las pruebas de carga y rendimiento. También pueden ser utilizadas en la automatización de pruebas, pruebas de seguridad, funcionales, etc...

4 Ventajas de Cloud Testing

Las soluciones Cloud Testing presentan algunas ventajas respecto a las soluciones tradicionales en pruebas de rendimiento que las hacen muy interesante.
  • No implica la contratación de licencias de herramientas de manera fija: contratamos los servicios únicamente cuando estemos involucrados en un proceso de pruebas.
  • Flexibilidad: Podemos ajustar a nuestras necesidades aspectos de la herramienta que en un entorno tradicional podría ser limitantes: contratación del número de usuarios virtuales, número de servidores inyectores de carga, duración de la prueba o protocolos de grabación.
  • No es necesario el mantenimiento de infraestructuras de pruebas: Con las soluciones Cloud ya no es necesario el mantenimiento de toda la infraestructura de pruebas de rendimiento. La instalación, configuración y mantenimiento de los inyectores de carga la realiza el suministrador.
  • Visión de usuario real: La herramientas Cloud, permiten simular usuarios que acceden a la aplicación a través de internet, y no a través de elementos una red corporativa.
  • Pruebas sobre Aplicaciones Cloud: Es la solución correcta para realizar pruebas sobre aplicaciones que se encuentran distribuidas en entornos Cloud 
  • Alto ancho de banda disponible para las pruebas: Teoricamente disponemos de un ancho de banda de gran capacidad para realizar las pruebas, por lo que es una solución ideal para probar sistemas de gran capacidad o que se encuentren en entornos productivos.


5  Planificación de pruebas de rendimiento en Cloud Testing

Antes de comenzar un ciclo de pruebas de rendimiento con una solución Cloud Testing debemos tener en cuanta algunos aspectos:
  • La elección de la herramienta se debe realizar en función de la aplicación que vamos a probar. La tecnología, arquitectura y funcionalidad de la aplicación marcarán tienen implicaciones directas sobre la herramienta en SasS que seleccionamos.
  • La inyección de carga se realiza desde Servidores que se encuentran en localizaciones geográficas que se pueden ver afectados por retardos de red.
  • Los Servidores que utilizamos son compartidos por otras aplicaciones y usuarios.
  • Será necesario deshabilitar los mecanismos de seguridad de la aplicación bajo pruebas ya que nuestra pruebas pueden ser consideradas como un ataque.

    6 Conclusión

    El Cloud Testing presenta ventajas a la hora de preparar un ciclo de pruebas de rendimiento. Estas ventajas son principalmente económicas y se encuentran asociadas a los gastos en licencias e infraestructura. Desde el punto de vista técnico, la adopción de una solución SasS de Cloud Testing no implica cambios en nuestra metodología de trabajo, ya que únicamente afecta a los lugares desde donde se inyecta la carga.

    Antes de realizar un ciclo de pruebas, debemos realizar un estudio detallado sobre los diferentes suministradores para contrastar que la tecnología de la aplicación bajo pruebas, su funcionalidad y lugar geográfico de los inyectores es soportada por la herramienta Cloud.

    Por último, una vez finalizadas las pruebas debemos asegurarnos que los resultados que hemos obtenidos no están afectados por elementos externos: latencias de red, sobrecarga de los servidores inyectores de carga, etc..

    7 Referencias