sábado, 28 de noviembre de 2015

AUTOMATIZACIÓN DE PRUEBAS DE REGRESIÓN

 

Nayla Vanessa Torres Rubio

Filiación de los autores




Resumen
La automatización de pruebas ha venido tomando fuerza cada vez más en las empresas, que se dedican a la producción de software ya que permite entregar al cliente un producto con calidad para de esta manera lograr la satisfacción de este.

Las aplicaciones constantemente están siendo sometidas a cambios debido a los requerimientos del cliente, a exigencias del negocio, por introducción de mejoras, y la corrección de bugs en el aplicativo, debido a esto se corre el riesgo de que en la modificación del código de las aplicaciones, se introduzcan errores, o comportamientos inesperados que puedan desencadenar en fallos que afecten económicamente a la empresa, y que comprometan el nombre esta.
Para solventar este problema se lleva a cabo la ejecución de pruebas de regresión con el fin de validar que no se hayan introducido errores en el aplicativo a causa de las modificaciones y de esta manera garantizar que este funciona de forma adecuada. Pero la ejecución manual de esta tarea puede tomar mucho tiempo y muchas veces no se obtienen los resultados esperados, es por esto que se debe pensar en la automatización de las pruebas con el fin de obtener un beneficio y dar un valor agregado a los procesos de la organización, ya que se liberará la carga de trabajo en las áreas encargadas de la ejecución de pruebas y permitirá aprovechar el tiempo que se dedicaba a esta tarea, a actividades de investigación que permitan mejorar los procesos del área.

Palabras clave
Api, Rest, Pruebas de regresión, Selenium, Scrum.

Introducción
 La empresa Pagosenlinea es una empresa dedicada al desarrollo de una plataforma de pagos para realizar pagos en línea a través de internet.

Provee diferentes medios de pago, como tarjeta de crédito, débito, efectivo y pagos en bancos; debido a la naturaleza del negocio se hace necesario realizar constantes mejoras en las aplicaciones que desarrolla con el fin de estar a la vanguardia del mercado y proveer un mejor servicio a sus clientes. Para llevar a cabo el soporte del negocio, cuenta con las siguientes aplicaciones:

Secure: Aplicación para los clientes.

Admin: Aplicación para los empleados.
Checkout: Aplicación para el procesamiento de transacciones vía web.
API: Aplicación para el procesamiento de transacciones vía servicio Rest.

Cada mes se realiza el despliegue de una nueva versión de las aplicaciones la cual contiene nuevas funcionalidades, corrección de bugs, entre otras.

Constantemente los aplicativos se están actualizando, y es por esto que el equipo de calidad de la empresa, de forma continua está realizando pruebas para validar que la aplicación cumple con los requerimientos establecidos por el cliente interno como externo, pero además tiene que ejecutar las pruebas de regresión para validar que en los aplicativos todo funciona de forma adecuada. Todo esto supone una carga elevada por el área, ya que los casos  de prueba para la regresión aumentan a medida que se despliega una nueva versión de la aplicación.

La solución que se plantea para este problema es la automatización de las pruebas de regresión, utilizando herramientas open source que permitan la validación de las interfaces web, como de servicios con el fin de realizar una inspección rápida de las aplicaciones y de esta manera llegar a la detección rápida de errores en un mínimo de tiempo, minimizando las tareas manuales y reduciendo los tiempos de entrega de la versión de las aplicaciones de la empresa Pagosenlinea.

Las herramientas a utilizar para llevar a cabo este proceso son: Selenium web driver, eclipse, testng, maven, firebug, firepath, entre otras.

Pero antes de empezar con el proceso de codificación se hace necesario definir una estrategia que nos permita tener una visión de cómo será el proceso de automatización de las pruebas para de esta manera trabajar de forma uniforme en la consecución de los resultados deseados.

Desarrollo
1.  Objetivo del documento

El presente documento presenta de manera general aspectos relacionados con la  automatización de pruebas de software y la estrategia guía que se tendrá  como  marco de referencia para el desarrollo de la automatización de la regresión de las pruebas para los aplicativos de Pagosonlinea.

2.  Automatización de Pruebas
2.1.  Alcance

En esta sección se determina el alcance del proceso de automatización de pruebas. El siguiente esquema muestra el alcance de las pruebas de forma general:

Fase 1:

Fase 2:

                                           
Grafica 2 Los Autores
2.2.  ¿Por qué pruebas automatizadas?

Automatizar las pruebas de software puede resumirse como tener la capacidad de ejecutar pruebas de  software haciendo uso de algún tipo  de herramienta que permita simular la interacción de un usuario con el aplicativo mediante el uso de un script.

Objetivos de la automatización:

  •  Facilitar la ejecución de pruebas de regresión.
  • Optimizar tiempos y recursos disponibles para pruebas.
  • Garantizar la calidad y estabilidad de los aplicativos.
  • Reutilización de pruebas.
  • Aumentar el cubrimiento de las pruebas.


Cosas a tener en cuenta a la hora de automatizar:

  • No reemplaza las pruebas manuales, las complementa.
  • Si existen falsas expectativas generará desmotivación y fallas en alcanzar las metas esperadas.
  • Si se elige una estrategia de automatización inapropiada al contexto de la organización y de  los aplicativos bajo pruebas, se generará dificultad en el mantenimiento de los scripts.
  • Requiere de tiempo para madurar.
  • Requiere que quienes realizan las labores de automatización tengan habilidades técnicas específicamente relacionadas con desarrollo.


2.3.  Niveles de automatización

Los factores claves a considerar cuando se va a automatizar las pruebas de software son:

2.3.1.  Tener un ambiente propicio para la automatización, el cual debe ser:

  • Controlado y administrado.
  • Restaurable en un punto determinado.
  • Actualizable, debería contar con procedimientos que faciliten su actualización y sincronización.


2.3.2. Las pruebas  se realizan sobre los aplicativos bajo control de versiones y cuyas liberaciones se encuentran integradas y programadas

2.3.3.  Con respecto al aplicativo cuyas pruebas serán automatizadas:
  • Conocer sus componentes y características.
  • Ambiente sobre el cual opera el aplicativo.
  • Establecer el cubrimiento de la automatización, teniendo en cuenta precondiciones y pos condiciones.


3.  Estrategia recomendada

La siguiente recomendación se hace a partir del  contexto de la organización, se sugiere iniciar por el nivel 1 de automatización de pruebas ya que a un corto plazo se puede iniciar con la automatización sin necesidad de hacer un proceso previo que implique más tiempo  en referencia a los  ambientes independientes de datos de  automatización y bases de datos de aplicaciones a automatizar, con el nivel 1 se puede ir madurando la automatización y llegar a un nivel 2 donde se tenga más control sobre los ambientes y los datos de automatización de pruebas.

Lo anterior teniendo en cuenta la arquitectura, proceso de automatización y fases plasmados en los numerales del presente documento.

3.1.  Arquitectura planteada para la automatización de pruebas.


  
3.2.  Proceso de automatización
3.2.1.  Planear

En esta etapa el objetivo principal es establecer el contexto general para el proceso de automatización de pruebas, teniendo en cuenta:

Características de la aplicación que será objeto de automatización.
  • Alcance de la automatización, metas alcanzables a corto y mediano plazo con las cuales se pueda apreciar el retorno de la inversión.
  • Elección de escenarios a automatizar, identificando la  ruta de la automatización, priorizando y buscando optimizar la ejecución de las pruebas.
  • Grupo de pruebas, tener claridad acerca de quiénes están involucrados en el proceso de automatización y cuál es su grado de responsabilidad.
  • Control de versiones, cada script automatizado genera código, el cual debe ser controlado como mejor práctica
  • Repositorio scripts, identificar cómo van a ser almacenados los scripts, teniendo en cuenta estructura y nombramiento.
  • Criterios de salida de las pruebas automatizadas, identificar los aspectos significativos que marcan el éxito o no de una prueba ejecutada.
  • Identificación de reglas de negocio
  • Definir los requisitos funcionales a automatizar
  • Identificación de riesgos
  • Identificar y establecer recursos de software y hardware.


3.2.2.  Preparar ambiente

Esta etapa hace referencia al control que debe existir sobre el ambiente de pruebas en el cual se automatiza y en el cual se ejecutan las pruebas. El objetivo es asegurar que el ambiente es estable, es similar a producción y es controlado por quién realiza las pruebas.

Es importante tener en cuenta que la preparación del ambiente tiene que ver no solo con los datos sino con el entorno de los aplicativos a los cuales se les realizan pruebas. Por tanto, el control sobre la aplicación de cambios en el ambiente de pruebas es necesario para asegurar y conocer el estado del ambiente en un momento dado.

3.2.3.  Diseñar e implementar

Esta etapa hace referencia a la generación del script automatizado, utilizando la herramienta de automatización, es en esta actividad en donde cobra gran importancia el enfoque, el punto de partida es la grabación de la interacción del usuario con el aplicativo y posteriormente se procede a darle mayor valor y cubrimiento al script incorporando características específicas de  la herramienta de automatización (puntos de control y verificación, manejo de datos,  reutilización, etc…).

3.2.4.  Ejecutar y revisar

La ejecución de pruebas automatizadas es por demanda, en cualquier momento, cada vez que sea requerido garantizar la estabilidad de un aplicativo.  En  lo querespecta a la  revisión  se hace una vez ejecutados los casos automatizados y dependiendo el tipo de soporte planeado en la automatización (ej imágenes soporte, análisis de base de datos de la aplicación, etc…).

Conclusiones

A la hora de iniciar un proceso de cambio en una empresa se hace necesario pensar en cuál es la mejor  manera de hacerlo, para ello se debe realizar un análisis inicial de los procesos que se llevan actualmente en la empresa para conocer el estado y de esta manera emitir un diagnostico.
Una vez se tenga ese  diagnostico se debe trabajar en una estrategia para definir las actividades a realizar en base a los hallazgos encontrados, para de esta manera centrar los esfuerzos en la obtención de los resultados deseados.
Es importante tener una planificación de las tareas antes de empezar la codificación, con esto se evita tener una falsa expectativa de lo que se espera y en cambio se tiene una visión más clara de lo que se quiere y que se debe hacer para conseguirlo.

Palabras claves

Api: Interfaz de programación de aplicaciones o API es el conjunto de funciones y procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.

Estrategia: Una estrategia es un conjunto de acciones planificadas sistemáticamente en el tiempo que se llevan a cabo para lograr un determinado fin o misión.

Pruebas de regresión: Cualquier tipo de pruebas de software que intentan descubrir errores (bugs), carencias de funcionalidad, o divergencias funcionales con respecto al comportamiento esperado del software, causados por la realización de un cambio en el programa.

Rest: En la actualidad se usa en el sentido más amplio para describir cualquier interfaz web simple que utiliza XML y HTTP, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes como el protocolo de servicios web SOAP.

Selenium:Es un entorno de pruebas de software para aplicaciones basadas en la web. Selenium provee una herramienta de grabar/reproducir para crear pruebas sin usar un lenguaje de scripting para pruebas (Selenium IDE). Incluye también un lenguaje específico de dominio para pruebas (Selanese) para escribir pruebas en un amplio número de lenguajes de programación populares incluyendo Java, C#, Ruby, Groovy, Perl, Php y Python.

Scrum: Es un modelo de desarrollo ágil.

Referencias







No hay comentarios:

Publicar un comentario