Anda di halaman 1dari 11

TRABAJO COLABORATIVO 4

INTEGRANTES:
Yuly Marcela Tapias Suarez
Cd.: 1090458751
Tomas De Aquino Moreno Crdoba
Jairo Javier Verdeza
Paulo Vctor Garcia Acosta
Cd.: 86015076

GRUPO:
201014_61

TUTOR:
Mg. JAVIER MEDINA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


PROYECTO DE GRADO (ING. DE SISTEMAS)
DICIEMBRE DE 2014

Automatizacin e Implementacin de Pruebas Funcionales para la


Calidad de Aplicaciones Web
Automation and Implementation of Functional Testing for Web
Applications Quality
RESUMEN
En este artculo se presenta una metodologa y el conjunto de herramientas para la
automatizacin de las pruebas funcionales de productos con aplicaciones web. Este
conjunto de herramientas est compuesto por: Selenium, Eclipse, Simple Test, PHP
Unit, PHP Unit y JUnit. Se describe la experiencia de utilizar la metodologa en un
proyecto de automatizacin especfico y se concluye la factibilidad para la
automatizacin de las pruebas siguiendo las actividades y el conjunto de
herramientas definidos. Si bien las herramientas asisten en las pruebas
automatizadas, no brindan soporte para la organizacin de los artefactos del
proyecto: scripts, documentos y reportes de ejecucin. Buscando mejorar la
organizacin de las pruebas junto con la comunicacin y colaboracin del equipo de
pruebas.
Palabras clave: Ingeniera de software, Pruebas, Pruebas Funcionales, Pruebas
Funcionales Automatizadas, Herramientas, Software Selenium, Test Driven
Development, Framework.
ABSTRACT
In this paper a methodology and toolset for automating functional testing of web
applications products is presented. This toolkit consists of: Selenium, Eclipse,
Simple Test, Unit PHP, PHP Unit and JUnit. The experience of using the
methodology in a specific automation project is described and the feasibility of
automated testing is concluded following the activities and defined set of tools. While
tools assist in automated tests do not provide support for the organization of project
artifacts: scripts, documents and execution reports. Seeking to improve the
organization of the tests with the communication and collaboration of the test team.
KEYWORDS: Software Engineering, Testing, Functional Testing, Functional Testing
Automated Tools, Software Selenium, Test Driven Development, Framework.

1. INTRODUCCIN
La automatizacin de las pruebas funcionales reduce significativamente el esfuerzo
dedicado a las pruebas de regresin en productos que se encuentran en continuo
mantenimiento. La automatizacin de las pruebas debe ser considerada un proyecto
en s mismo con objetivos definidos.
En este artculo se presenta una metodologa y el conjunto de herramientas utilizado
para la automatizacin de las pruebas funcionales en productos con interfaz Web.
Este conjunto de herramientas est compuesto por: Selenium, Eclipse y
extensiones de Mozilla Firefox como son Firebug, XPath Checkery XPather, Simple
Test, Unit PHP, PHP Unit y JUnit.
Si bien las herramientas asisten en las pruebas automatizadas, no brindan soporte
para la organizacin de los artefactos del proyecto: scripts, documentos y reportes
de ejecucin
2. FUNDAMENTOS TERICOS
El objetivo de la prueba funcional es validar cuando el comportamiento observado
del software probado cumple o no con sus especificaciones. La prueba funcional
toma el punto de vista del usuario. Las funciones son probadas ingresando las
entradas y examinando las salidas. La estructura interna del programa raramente
es considerada.
Para realizar pruebas funcionales, la especificacin se analiza para derivar los
casos de prueba.
Tcnicas como particin de equivalencia, anlisis del valor lmite, grafo causaefecto y conjetura de errores son especialmente pertinentes para las pruebas
funcionales. Se deben considerar condiciones invlidas e inesperadas de la
entrada y tener en cuenta que la definicin del resultado esperado es una parte
vital de un caso de prueba. El propsito de la prueba funcional es mostrar
discrepancias con la especificacin y no demostrar que el programa cumple su
especificacin.
Un caso de prueba (test case) es un conjunto de valores de entrada,
precondiciones de ejecucin, resultados esperados y pos condiciones de
ejecucin, desarrollados con un objetivo particular o condicin de prueba, tal como
ejercitar un camino de un programa particular o para verificar que se cumple un
requerimiento especfico.
Un script de prueba (test script) son los datos y las instrucciones escritas con una
sintaxis formal, almacenado en un archivo y usado por una herramienta de
automatizacin de las pruebas. Un script de prueba puede automatizar uno o ms
casos de prueba, navegacin, inicializacin u operaciones de configuracin del
entorno. Un script de prueba previsto para la ejecucin manual de las pruebas es
un procedimiento de prueba.
Una suite de pruebas es uno o ms conjuntos de pruebas reunidos para satisfacer
un objetivo de prueba. Un conjunto de prueba incluye scripts y documentacin. En
nuestro caso, las suites constituyen un conjunto de scripts y el orden de ejecucin
de los mismos.

Las pruebas de regresin tienen como objetivo verificar que no ocurri una
regresin en la calidad del producto luego de un cambio, asegurndose que los
cambios no introducen un comportamiento no deseado o errores adicionales.
Implican la re ejecucin de alguna o todas las pruebas realizadas anteriormente.
Las pruebas de humo son un conjunto de pruebas aplicadas a cada nueva versin,
su objetivo es validar que las funcionalidades bsicas de la versin se comportan
segn lo especificado. Estas pruebas buscan grandes inestabilidades o elementos
clave faltantes o defectuosos, que hacen imposible realizar las pruebas como
fueron planificadas para la versin. Si la versin no pasa las pruebas de humo, no
se comienza la ejecucin de las pruebas planificadas de la versin.
3. DESARROLLO DEL TRABAJO
La comunidad de ingeniera del software, est dando cada vez ms importancia al
Software Testing de Aceptacin Automatizado. Un ejemplo de esta situacin es el
Desarrollo Guiado por Pruebas (Test Driven Development), mtodo en el que el
cdigo de programa es desarrollado de acuerdo a casos de prueba previamente
definidos.
Asimismo, Selenium WebDriver se ha convertido en uno de los principales
exponentes en la Automatizacin de Software Testing, por ser esta de cdigo
abierto y soportar mltiples lenguajes de Scripting como Ruby, Java, Perl, entre
otros.
PMOInformatica.com, "La Oficina de Proyectos de Informtica", presenta a
continuacin algunas pautas para usar Selenium WebDriver en el marco de las
metodologas giles de desarrollo de software.
Por qu se necesita automatizar el Software de Pruebas?
En cada iteracin, adems de expandir las funcionalidades del sistema, podemos
realizar Refactorizaciones para optimizar funcionalidad que ya desarrollamos y
eliminar deuda tcnica.
Esto implica la necesidad de realizar constantemente pruebas regresin, dado que
al modificar cdigo desarrollado previamente, debemos revisar que continua
funcionando adecuadamente.
Con frecuencia, esto implica:
Constantes pruebas de regresin.
Esfuerzo duplicado en pruebas.
Todos en el equipo terminan haciendo pruebas manuales, inclusive
desarrolladores, Testers y el cliente
Selenium es una suite de herramientas para automatizar navegadores y lo puedes
usar para tareas de Testing, as como para automatizar otros procesos que se
hacen con el navegador.
Automatizan el navegador para hacer pruebas sobre sitios web y comprobar de una
manera sencilla que todo el conjunto de sitio o aplicacin funciona correctamente.
Esta es una aplicacin que sirve para testear websites desde el lado del cliente,
simulando determinados usos de sitios en el navegador, tal como los realizaran los
propios usuarios, de modo que puedas comprobar cmo se comporta el conjunto
de una aplicacin o sitio web con respecto a una carga de uso determinada. Puede

ser una gran carga de usuarios, una accin inesperada, sin tener que hacerlo
manualmente.
Es un sistema de automatizacin para navegadores, preparado para cargar distintos
perfiles, y por medio de programacin podemos controlar lo que queremos que
ocurra. Con estas aplicaciones simulas acciones, eventos JavaScript, accediendo
al DOM y diciendo lo que quieres que pase con esos elementos de la pgina. Tienes
adems conectores con varios lenguajes de programacin como C#, PHP, para
enviar simular tambin cosas como cargas de ficheros.
El cometido principal es hacer Testing de sitios y aplicaciones desarrolladas por tu
equipo de trabajo, pero tambin puede servir a los administradores de sitios web o
aplicaciones web para automatizar tareas repetitivas que pueden ser aburridas en
el da a da. Es compatible con diversos browsers como Chrome, Safari, Firefox,
Internet Explorer y distintos perfiles y sistemas operativos, hasta de dispositivos
como iOS o Android. De hecho, forma parte del core de estos sistemas, gracias al
soporte de los propios fabricantes de navegadores, de modo que puedas probar las
funcionalidades nativamente. Tienes varios productos dentro de la suite de
herramientas Selenium, que puedes usar segn tus necesidades.
Para Selenium crea rpidos scripts para reproduccin de errores. Realiza
exploracin de un sitio para Testing de manera automtica.
Con Selenium IDE, un complemento Firefox puedes hacer una grabacin de
acciones muy sencilla que luego puedes repetir las veces que necesites. Lo que
creas en realidad son scripts Selenium, que puedes almacenar para ejecutar y
reproducir de nuevo cuando lo desees.
Con Selenium WebDriver tienes adems dentro de Selenium la WebDriver API, que
se ha creado pensando ms en aplicaciones web modernas, donde otras soluciones
de Testing daban problemas. Por ejemplo, puedes testear perfectamente sitios que
trabajan con llamadas al servidor por Ajax, sin que la pgina recargue. Adems
tienes pasarelas de comunicacin que funcionan directamente con el servidor en
diversos lenguajes como Java, PHP, Ruby, C#...
La solucin de este problema sera la utilizacin de pruebas unitarias y pruebas
automatizadas con Selenium.
Para la realizacin de pruebas unitarias, existen herramientas y entornos de
desarrollo (frameworks) que facilitan su creacin en multitud de lenguajes de
programacin:

JUnit: Framework de pruebas unitarias en Java.


JTiger: Otro framework de pruebas unitarias en Java.
SimpleTest: Framework de pruebas unitarias de PHP, inspirado en JUnit.
PHPUnit: Framework de pruebas unitarias de PHP de PEAR.
PerlUnit: Framework de pruebas unitarias en Perl.

Las herramientas de automatizacin de pruebas nos permiten verificar el


comportamiento unitario del cdigo o inclusive pre-grabar acciones de los usuarios,
comparar los resultados con el funcionamiento esperado y reportar el xito o fracaso
de estas pruebas a las personas interesadas. Una vez creadas estas pruebas

pueden ser ejecutadas repetitivamente de forma muy sencilla y pueden ser


extendidas para realizar tareas que seran imposibles de forma manual.
Entre los beneficios de utilizar pruebas automatizadas tenemos:
Ahorrar tiempo y dinero
Aumentar la calidad del software
Reducir considerablemente la cantidad de bugs
Poder ejecutar pruebas de manera rpida ante cualquier cambio en el
software
Debido a todo esto muchas empresas han encontrado que la automatizacin de
pruebas es un componente esencial para un proyecto exitoso de desarrollo de
software.
Una de las principales dificultades al utilizar herramientas de prueba en el TDD, es
que el mtodo de registrar (capturar) la accin del usuario y luego reproducirla no
puede usarse debido a que el sistema no est implementado al momento de disear
los casos de prueba.
En este sentido, el API de Selenium soporta la implementacin manual de casos de
prueba, los cuales pueden definirse en lenguajes de programacin como Ruby,
Java, entre otros, de esta manera, el desarrollo de los casos de prueba
automatizados se puede realizar antes que el software que se va a probar est
implementado.
Casos de prueba escritos en un lenguaje de programacin determinado, se pueden
transformar a otros lenguajes, de esta forma, se puede integrar Selenium por
ejemplo con JUnit.
Para la implementacin de pruebas automatizadas debemos seguir una secuencia
de actividades las cuales vamos a detallar a continuacin, esta Se especifican los
objetivos y se detallan las tareas realizadas en cada actividad
ACT1 Definicin de las pruebas automatizadas:
El objetivo de esta actividad es definir el conjunto de ciclos funcionales o
funcionalidades que se probarn con las pruebas automatizadas. Esta actividad
consiste en definir con el Cliente qu pruebas se van a automatizar (en alto nivel),
considerando los ciclos funcionales o funcionalidades que involucran. Para ello se
priorizan y evalan las pruebas y las funcionalidades a probar.
ACT2 Definicin de los Procedimientos de Prueba:
El objetivo de esta actividad es definir las suites y scripts que conformarn las
pruebas automatizadas. A partir de los ciclos funcionales y funcionalidades
seleccionados para las pruebas, se especifican las suites y scripts que las
ejecutarn. Definir las suites implica definir los scripts que las componen y
especificar posibles dependencias de ejecucin entre ellas. Para cada script se
debe definir la tarea que debe realizar y las verificaciones que debe contener.
ACT4 Ejecucin de las pruebas automatizadas del ciclo funcional:

El objetivo de esta actividad es ejecutar una prueba completa de las suites


correspondientes al ciclo funcional y verificar su correcto funcionamiento. Esta
actividad consiste en realizar la prueba completa del ciclo funcional en el entorno
preparado para dicho fin. En caso de un funcionamiento incorrecto deben realizarse
los ajustes necesarios. En esta actividad se verifica el comportamiento de las suites
en su conjunto.
ACT5 Investigacin y modificacin de herramientas:
El objetivo de esta actividad es encontrar soluciones a las necesidades que no
pueden satisfacerse con las herramientas de automatizacin que se manejan.
Esta actividad incluye recorrer foros, referencias y buscar antecedentes similares a
la necesidad planteada. Luego se analizan las posibles soluciones. Estas incluyen
instalar nuevas versiones de las herramientas, modificar las herramientas o
extenderlas. Esta actividad tambin incluye bsqueda de nuevas herramientas que
asistan en la automatizacin.
ACT6 Configuracin del entorno:
El objetivo de esta actividad es configurar el entorno de la aplicacin que se desea
probar para poder ejecutar las suites correctamente y documentar esta
configuracin. En esta actividad se debe configurar los datos que mantiene la
aplicacin de manera que permitan la correcta ejecucin de las suites. Es importante
documentar con el detalle suficiente esta configuracin.
ACT7- Validacin de las pruebas automatizadas:
El objetivo de esta actividad es verificar el correcto comportamiento de los scripts,
en el ambiente de prueba del cliente y preparar las suites y scripts generados para
la validacin del cliente. En esta actividad se prueba y eventualmente se ajustan los
scripts para el correcto funcionamiento en el ambiente de pruebas del cliente. El
cliente valido comparando las pruebas que espera automatizar con las pruebas que
los scripts realizan.
ACT8 Organizacin de las pruebas automatizadas
El objetivo de esta actividad es gestionar los artefactos generados en el proyecto de
automatizacin. Esta actividad consiste en definir, actualizar y ejecutar los
procedimientos para la gestin de los documentos, suites y scripts que se generen
en el proyecto de automatizacin.
4. RESULTADOS
Despus de una previa investigacin se realizaron pruebas de automatizacin con
la empresa SOLWEB, tomando como piloto un aplicativo web desarrollado hace
ms de una ao para una aseguradora, esta aplicacin, est desarrollada para la
plataforma Java. Otra de las aplicaciones para las cuales se automatizaron pruebas
fue construida utilizando .NET. En general, con mayor y menor dificultad se pudo
lograr la automatizacin.

En el proyecto de automatizacin de las pruebas para la aplicacin, el equipo de


automatizacin que llevo a cabo este proyecto estuvo conformado por tres Testers
automatizadores, que cumplan tambin el rol de diseador de pruebas y un lder
de proyecto. Se definieron dos etapas para la automatizacin, donde se automatizaron
distintos escenarios de prueba. En la etapa 2 se extendieron las pruebas de la etapa 1 y se
crearon pruebas para nuevos escenarios.

En la tabla 2 se puede observar la cantidad de suites y scripts generados en cada


etapa. Si apreciamos la relacin entre la cantidad de suites y scripts generados y el
tiempo de cada etapa, observamos que a medida que se fue adquiriendo
experiencia en el uso de Selenium, la productividad del personal fue creciendo, lo
que marca la necesidad de tener Testers automatizadores especializados en el
rea. Un punto importante a destacar en este proyecto en particular, es el alto
porcentaje de reutilizacin de los scripts de una etapa a la otra. De los 271 scripts
generados en la segunda etapa, el 40% se bas en scripts generados en la primera
etapa, esto contribuy tambin al aumento de productividad. Los scripts reutilizados
de la etapa 1, pasaron a conformar nuevas suites en la etapa 2, en forma directa o
realizndoles pequeos cambios.
Etapa 1

Etapa 2

Suites

26

Scripts

26

50

Scripts reutilizados
etapa anterior

52%

100%

60%

Scripts nuevos

El primer paso en un proyecto de automatizacin de pruebas funcional es definir


aquellas funcionalidades o ciclos funcionales que resulta importante o beneficioso
automatizar. Tambin evaluar cules son los ms fciles de automatizar o los ms
ejecutados. Esto constituye la actividad Definicin de las pruebas automatizadas.
Una vez definidas las funcionalidades, se debe escribir los procedimientos de
prueba en los cuales se definen las acciones y verificaciones que conforman las
pruebas. En este paso, es bueno tener en mente las posibilidades que ofrece
Selenium en cuanto a las acciones y verificaciones posibles. Selenium permite
ejecutar cdigo JavaScript arbitrario, por lo tanto, pone a disposicin para estos
propsitos todo el potencial de este lenguaje.
En el inicio, se comenz utilizando un documento que especificaba los ciclos
funcionales con las funcionalidades que involucra junto con una planilla electrnica
donde se enumeran los pasos a seguir en cada pantalla. Luego se not que era

muy costoso llegar a este nivel de detalle y no proporcionaba un beneficio


considerable. Se opt por un documento donde se detallan los ciclos funcionales y
para cada funcionalidad se especifica las verificaciones que se deben realizar. Los
ciclos funcionales y las pruebas de las funcionalidades se transformarn luego en
suites y scripts respectivamente. Esto forma parte de la actividad Definicin de los
procedimientos de prueba. Una vez definidas las pruebas se puede comenzar a
crear y documentar el entorno de datos, esto es Configuracin de entorno. Las
actividades llevadas a cabo hasta el momento no requieren herramientas ms all
de un editor de texto y una planilla electrnica.
La actividad Generacin de suites y scripts comienza cuando estn las pruebas
definidas y el entorno de datos configurado. En ella los Testers encargados de la
automatizacin utilizan Selenium IDE que permite grabar y editar script fcilmente.
Esta herramienta, como ya dijimos, es una extensin de Mozilla Firefox. Las
extensiones para este navegador se convierten en una herramienta fundamental
para el tester automatizador. Si la aplicacin no soporta este navegador, los scripts
no podrn ser grabados sino que se debern codificar en forma manual.
Una vez grabados o codificados, los scripts son probados y, en ocasiones, ajustados
para que funcionen en otros navegadores. Cabe destacar que el tester requiere
aprender sobre la herramienta de automatizacin Selenium Core, la herramienta de
grabacin Selenium IDE, el lenguaje HTMLSelenese (de Selenium Core),
estndares de programacin y procedimientos de gestin de las pruebas definidos
por el equipo de automatizacin. A medida que el desarrollador va adquiriendo
experiencia va dejando de lado herramientas como el grabador Selenium IDE y
comienza a escribir directamente los script a travs de un editor de texto. En nuestro
caso utilizamos el entorno de desarrollo Eclipse.
Los scripts se deben mantener bajo gestin de configuracin. Para ello se utiliza un
servidor CVS donde se colocan todos los artefactos generados en el proceso. Como
cliente CVS usamos el propio Eclipse.
Una vez construido el script, se procede a reproducirlo en el servidor Web a travs
de Selenium Core. Este es un proceso iterativo de ajuste y prueba.
Luego de construidas las suites se procede a ejecutarlas en el orden preestablecido
de manera de verificar su correcto funcionamiento y verificar las dependencias. Esto
requiere ejecutar secuencialmente en Selenium Core cada una de las suites
observando su comportamiento. Esto es parte de Ejecucin de las pruebas
automatizadas del ciclo funcional. Luego, se procede con la actividad Validacin
de las pruebas automatizadas ejecutando las suites en el ambiente del cliente y
verificando el correcto funcionamiento. De esta manera el cliente puede comenzar

la validacin de las pruebas. Cuando el mismo acepta las pruebas se cierra el


proceso.
La actividad Organizacin de las pruebas automatizadas se ejecuta en paralelo y
durante todo el proyecto. En ella se deben definir, mantener y actualizar los
procedimientos de gestin de las pruebas. No se cont con una herramienta que
facilite la tarea.
Resulta fundamental la actividad Investigacin y modificacin de herramientas
pues una de las caractersticas ms importantes de Selenium es tener a disposicin
el cdigo fuente. Las posibilidades que ofrece Selenium son amplias (comandos y
ejecucin de cdigo JavaScript del usuario a travs del comando
waitForCondition), sin embargo, puede ser necesario realizar extensiones de
manera de ajustarnos a caractersticas particulares de la aplicacin bajo prueba.
Desde que comenzamos a usar Selenium hasta la fecha hemos implementado
varias extensiones que nos permitieron nuevas posibilidades en el manejo de
ventanas emergentes, soluciones para subir archivos desde el cliente al servidor
Web e implementaciones de Selenium Core que ejecutan las pruebas a velocidades
diferentes.
5. CONCLUSIONES
En cuanto a Selenium, demostr ser simple, potente y flexible, adems de proveer
un lenguaje fcil de usar y de aprender. La documentacin de Selenium disponible
en el sitio se limita a una referencia de comandos, por lo tanto los foros son una
importante fuente de informacin. En general los usuarios de Selenium tienen gran
participacin en los foros y hay muchas extensiones disponibles de la herramienta.
Tambin debemos destacar algunos aspectos negativos en el uso de Selenium
Core, por ejemplo, no se puede obtener datos de fuentes externas como puede ser
una base de datos. Sin embargo, si se utiliza Selenium Remote Control no tenemos
este inconveniente, ya que se tiene a disposicin todas las posibilidades del
lenguaje de programacin en el cual se escriben las pruebas. Hay otras dos
limitaciones que tiene Selenium Core y que, al igual que en el caso anterior, se
pueden sortear utilizando Selenium Remote Control. La primera es que los scripts
no manejan instrucciones o comandos de bifurcacin, esto es una decisin de
diseo de la herramienta, en busca de simplicidad. La segunda es que Selenium
Core debe estar instalado en el mismo servidor Web que la aplicacin a probar.
De nuestra experiencia, podemos asegurar la factibilidad de proyectos de
automatizacin de pruebas funcionales para aplicaciones Web utilizando este

conjunto de herramientas open Source. Adems, los clientes se mostraron


satisfechos con el producto resultante de la automatizacin: scripts, suites y
documentacin. Las suites y scripts generados son utilizados para ejecutar las
pruebas automatizadas sin la necesidad de personal.

6. REFERENCIAS

Universidad del Cauca (2013). Desarrollo e Implementacin de Sistemas de


Informacin Recuperado de:
http://fccea.unicauca.edu.co/old/admonproyectos.htm

lvarez Miguel ngel (2014). Selenium y Selenium Web Driver Recuperado


de: http://www.desarrolloweb.com/

PMOinformtica.com. (2014). Testing de Aceptacin Automatizado con


Selenium. 2014, Sitio web: http://www.pmoinformatica.com/2014/03/testingde-aceptacion-automatizado-con.html

Adrin Moya. (2014). Pruebas Automatizadas: Una Visin De Desarrollador.


2014, de Adrin Moya Sitio web: http://adrianmoya.com/2014/02/pruebasautomatizadas-una-vision-de-desarrollador/

SOLWEB. (2014). Web SOLWEB. 2014, de SOLWEB Sitio web:


http://solwebonline.com/portal/quienes-somos/

Anda mungkin juga menyukai