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
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
- API. Recuperado el 26 de Noviembre del 2015 en http://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones
- Estrategia. Recuperado el 26 de Noviembre del 2015 en http://es.wikipedia.org/wiki/Estrategia
- Pruebas de regresión. Recuperado el 26 de Noviembre del 2015 en http://es.wikipedia.org/wiki/Pruebas_de_regresi%C3%B3n
- REST. Recuperado el 26 de Noviembre del 2015 enhttp://es.wikipedia.org/wiki/REST
- Selenium. Recuperado el 26 de Noviembre del 2015 enhttp://es.wikipedia.org/wiki/Selenium
- Scrum. Recuperado el 26 de Noviembre del 2015 enhttp://es.wikipedia.org/wiki/Scrum
- Estrategia de diseño para la automatización de pruebas unitarias de códigos php utilizando el framework phpunit. Recuperado el 26 de Noviembre del 2015 en http://72.29.67.34/~openjour/ojs/index.php/rp/article/view/176/183
- Evaluation of methods for automated testing in large-scale financial systems. Recuperado el 26 de Noviembre del 2015 enhttp://www.diva-portal.org/smash/get/diva2:537021/FULLTEXT01.pdf
- Fifth Generation Scriptless and Advanced Test Automation Technologies. Recuperado el 26 de Noviembre del 2015 enhttp://www.testars.com/docs/5GTA.pdf



No hay comentarios:
Publicar un comentario