Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mejores Herramientas para La Automatizacion de Pruebas de Software PDF
Mejores Herramientas para La Automatizacion de Pruebas de Software PDF
Cochabamba – Bolivia
2018
A mi familia que siempre están en los malos y
buenos momentos.
A mis amigos, por creer en mí y apoyarme
siempre.
Sobre todo a Dios que me dio fortaleza para
lograr subir un peldaño más.
INDICE
RESUMEN.................................................................................................................................. 6
INTRODUCCIÓN........................................................................................................................ 6
1. GENERALIDADES .............................................................................................................. 7
2. METODOLOGÍA .................................................................................................................. 7
5. AUTOMATIZACIÓN............................................................................................................. 14
6.1.1 Selenium................................................................................................................... 25
7. CONCLUSIONES. ................................................................................................................ 31
8. BIBLIOGRAFÍA..................................................................................................................... 32
TABLA DE FIGURAS Y CUADROS
5
RESUMEN
Las aplicaciones informáticas evolucionaron con el correr de los años. Desde las aplicaciones de
consola a las aplicaciones Web. Estas últimas, muy utilizadas hoy en día por la gran popularidad
de Internet. Todas las etapas en el proceso del desarrollo de software son sumamente relevantes,
pero, quizás la etapa de testing (control de calidad) sea la menos sistematizada y tenida en
cuenta. Prueba de esto, es la gran cantidad de parches y versiones surgidas luego del
lanzamiento de una versión final de un software, destinadas a cubrir "agujeros de seguridad" o
simplemente, malos funcionamientos. Por este motivo, es muy importante realizar pruebas de
software que eviten sistemas de baja calidad y aumenten la confianza de los usuarios.
El trabajo tiene como finalidad presentar una serie de herramientas de código abierto y comercial
para realizar pruebas de software que asisten en la etapa de testing (control de calidad) de un
sistema, las cuales serán descritas y agrupadas según el tipo de pruebas que se realice.
Este trabajo también se enfocó a realizar una descripción sobre la automatización de pruebas de
aceptación funcionales para una aplicación web. Para ello, se define las diferentes herramientas
de automatización de código abierto y se realizará un informe comparativo de las mismas. De
esta forma se podrá conocer cuál de las herramientas es más usable o se adapta mejor a un
entorno dado, dependiendo de unas características o requisitos iniciales tanto de la aplicación
como del equipo de pruebas o desarrollo.
INTRODUCCIÓN
Cuando se realiza un proyecto de software, una de las actividades consiste en seleccionar una
herramienta para las pruebas, por lo tanto, es necesario conocer su contexto. Algunas son
multifuncionales, otras se construyen para propósitos limitados, unas son de código abierto y
otras tienen un costo bastante elevado para la mayoría de proyectos. Todo esto crea un espacio
multidimensional de métricas que se deben tener en cuenta al resolver el problema de la
selección. Existen grandes empresas que tienen estándares para definir y seleccionar alguna de
ellas.
Pero el interés de este trabajo es dar a conocer las diferentes herramientas de automatización
de software tanto de código abierto como herramientas comerciales para realizar pruebas sobre
el software, estas herramientas serán agrupados de acuerdo al tipo de prueba que se quiere
realizar, cuyo objetivo es que el equipo de pruebas o de desarrollo puedan seleccionar la
herramienta adecuada de acuerdo a los requisitos y las necesidades del proyecto, luego
comparar algunas candidatas y posteriormente probarlas hasta llegar a la selección más
adecuada.
También se realizará una descripción de las diferentes herramientas de automatización de código
abierto y un informe comparativo de las mismas para tomar en cuenta en la automatización de
pruebas de aceptación funcionales en una aplicación web.
El presente trabajo cuyo alcance será la mención y descripción de algunas herramientas para la
automatización de Software agrupadas de acuerdo al tipo de software. Y las herramientas para
realizar pruebas de aceptación funcionales serán solamente tres: Selenium, Watir y Cucumber
ya que son las que mejor se adaptan para este tipo de pruebas.
Por lo tanto el resultado de la monografía ayudara a las personas que deseen tomar en cuenta
estas herramientas como un principio de su aprendizaje y conocimiento para que puedan tomar
6
en cuenta la cantidad de herramientas que existen para realizar pruebas de software de acuerdo
al tipo de prueba que desean realizar.
1. GENERALIDADES
3. FUNDAMENTOS BÁSICOS.
7
“El proceso que consiste en todas las actividades del ciclo de vida, tanto estáticas como
dinámicas relacionadas con la planificación, preparación y evaluación de productos de
software y productos relacionados con el trabajo para determinar que cumplen los
requisitos especificados, para demostrar que son aptos para el propósito y para detectar
defectos”.
Edsger W. Dijstra, científico de la computación entre cuyas contribuciones a la ciencia esta ‘la
solución del problema del camino más corto’, también conocido como el algoritmo de Dijstra,
define el proceso de pruebas como:
“Las pruebas de software pueden ser una manera muy eficaz de mostrar la presencia de
errores, pero son totalmente inadecuadas para mostrar su ausencia.”
Cada una de estas definiciones tienen algo en común, todas se centran en mayor o menor manera
en la detección de errores. (Peño, Junio 2015, págs. 14,15).
El objetivo principal de las pruebas es aportar calidad al producto que se está desarrollando.
¿Qué es calidad?
Según la ISO 25000, es un conjunto de normas que tiene por objetivo la creación de un
marco de trabajo común para evaluar la calidad del producto software, dice:
“la calidad es el grado en que el producto de software satisface las necesidades
expresadas o implícitas, cuando es usado bajo condiciones determinadas”.
Según Philip Bayard Crosby, que contribuyó a las prácticas de la gestión de la calidad, la
define como “Conformidad con los requisitos”.
Según Armand V. Feigenbaum, que diseñó el concepto del control total de la calidad, la
define como “satisfacción de las expectativas del cliente”. (Peño, Junio 2015, pág. 18).
Todo proyecto de tiene como objetivo producir software de la mejor calidad posible que cumpla y
si puede superar las expectativas de los usuarios. (Fossati, febrero 2016).
Según Báez, las pruebas de software son el proceso de ejecutar un programa con la intensión de
encontrar fallos. Corresponde al conjunto de actividades dedicadas a realizar aseguramiento de
calidad sobre componentes de software, determinando su correcto funcionamiento de acuerdo a
lo requerido. (Báez, Bogota D. C. 2016, pág. 21).
Las pruebas del software consisten en la validación o confirmación del comportamiento de un
programa dinámicamente a través de un grupo finito de casos de prueba, debidamente
seleccionados del ámbito de ejecuciones infinito, en relación al comportamiento esperado.
Por tanto, a la hora de realizar pruebas se debe distinguir los tipos de pruebas que hay, ya que
se debe adaptar a las necesidades que se tenga en ese momento y la funcionalidad que se quiera
probar.
¨Puesto que el objetivo principal de ésta, es revelar el mayor número posible de fallos, por lo que
se tendrá que elegir el tipo o tipos de prueba que intenten “romper” el desarrollo, de esta forma
se pretende conseguir un sistema que cumpla las expectativas del cliente para un “propósito
8
marcado”. Es decir, que el producto resultante sea aceptable para los objetivos para los que se
planteó.
9
Una vez que se somete a una aplicación a los diferentes tipos de prueba que pueden realizarse,
pueden obtenerse errores. Entonces se realiza el proceso de depuración de errores que es una
tarea simple. De hecho, el objetivo de la realización de las pruebas es la obtención de errores
que deben depurarse.
Las herramientas utilizadas en este proceso, suelen encontrarse en los IDEs (Integrated
Development Environment) utilizados para realizar la programación de la aplicación. Estas tienen
una operativa de ejecución “paso a paso”. De forma que, permiten al desarrollador acotar la zona
del error y poder detectar donde se produce el fallo de una forma más fácil.
También la posición de la pirámide nos indica que en la parte baja o en la base se tiene más ROI
(Return On Investment), esto es, donde más partido o beneficio se sacará en base a la inversión
tanto temporal o económica realizada, de forma análoga, en la parte más alta o vértice se observa
el caso opuesto al ROI de la base. También, dentro de la pirámide se puede ver una clasificación
de qué tipo de pruebas se realizan por categoría, esto es, las pruebas de aceptación, sistema,
integración, de componentes y unitarias, se encargarán los desarrolladores y las pruebas de
validación, las Alpha y Beta, se encargará el equipo de QA (Quality Assurance) y los
desarrolladores.
10
En fin al ver esta pirámide, conviene hacer una valoración y un balance inicial de las pruebas que
se tiene que hacer en la aplicación que se quiere probar, teniendo en cuenta el coste, tanto de
tiempo como económico.
También nos muestra el caso ideal de la automatización de las pruebas, ya que si seguimos ese
patrón realizaremos una comprobación de la funcionalidad de la aplicación completa y desde el
mejor punto de vista de coste para el proyecto.
Por esta razón, si no se aplica este patrón, entonces se tendrán el “cono de helado” o anti-patrón,
que se puede ver en la Figura 3.
En él se puede apreciar que donde más tiempo y recursos se emplean en las pruebas manuales.
Este es el caso típico que se tiene cuando no se realiza la automatización de las pruebas de un
software. De esta forma, se debe invertir mucho tiempo en realizar este tipo de pruebas y no
servirán para garantizar una funcionalidad correcta de toda la aplicación. (Ruiz, págs. 44-47)
11
Figura 3- Cono de helado de pruebas de software.
Fuente: (Ruiz, pág. 48).
Este software respeta las cuatro libertades que la FSF (Free Software Foundation)
establece:
La libertad de usar el programa, con cualquier propósito.
La libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a
tus necesidades.
12
La libertad de distribuir copias del programa, con lo cual puedes ayudar a tu
prójimo.
La libertad de mejorar el programa y hacer públicas esas mejoras a los demás,
de modo que toda la comunidad se beneficie.
(Perez, 2015, pág. 33).
Este tipo de herramientas software no son libres o lo son sólo parcialmente (semilibre), ya
que el usuario tiene limitaciones para usarlo o modificarlo, y tienen totalmente prohibida
su copia y distribución. (Ruiz, págs. 34-35).
13
El software libre a pesar de que no implica el que sea gratuito, lo habitual es que podamos obtener
los programas descargándolos libremente de Internet o a través de distribuciones. El software
propietario o comercial conlleva pagar por adquirir estos programas. (Ruiz, pág. 35).
5. AUTOMATIZACIÓN.
“El término automatización se refiere a una amplia variedad de sistemas y procesos que operan
con mínima, incluso sin intervención, del ser humano” con el fin de que sean más rápidos,
eficientes y precisión. La automatización cobra importancia ya que reducen el costo de la mano
de obra directa, evitando retrasos por fallas humanas. (Báez, Bogota D. C. 2016, pág. 23)
El objetivo no es eliminar las pruebas manuales por completo, ni suplantar a los testers
manuales. El objetivo del proceso de automatización es apoyar y ser un añadido, aportando:
Apoyo en pruebas de regresión frecuentes.
Iteraciones ilimitadas de ejecución de casos de prueba.
Mayor flexibilidad y potencial de la ejecución de pruebas.
Reporte personalizado de los defectos de la aplicación.
Apoyo a las metodologías de desarrollo ágil.
Documentación normalizada de casos de prueba.
(Ruiz, pág. 36)
Al automatizar el software se mejora la calidad del producto, disminuye el tiempo de salida al
mercado, detectamos errores con anticipación, fomentar al equipo de desarrollo a realizar y
ejecutar pruebas de manera continua, reducción de costos. (Cristobal, pág. 11).
14
5.3.1 Automatización de pruebas funcionales:
Estas requieren una interfaz gráfica en la que se llevarán a cabo las navegaciones
pertinentes.
Se trata de realizar scripts, normalmente basados en un lenguaje de programación,
mediante los cuales se podrá reproducir la funcionalidad deseada sobre la interfaz.
Estos scripts se generar mediante el método de grabar y reproducir (Record and
Playback), programando directamente los scripts en algún lenguaje de
programación (scripting), etc.
La automatización de pruebas obtiene grandes resultados tras realizar una inversión a medio
plazo, ya que existe un tiempo de aprendizaje de las unidades de las herramientas y de la
generación de los scripts.
En un principio, invertir en automatización se traduce en mayores costes fijos provenientes de la
adquisición de hardware, licencias, formación, etc. Pero después de un tiempo asumible se
obtendrán una serie de ventajas evidentes:
Mejorar la eficiencia de las pruebas automatizando tareas repetitivas o dando soporte a
las actividades de pruebas manuales, como la planificación, el diseño, la elaboración de
informes y la monitorización de pruebas.
15
Reasignación de recursos que previamente realizaban las pruebas de manera manual,
y utilizarlos para otra tarea dentro del negocio.
Siguiendo el proceso de desarrollo software, tras la realización del análisis, diseño y en algún
punto del desarrollo de la aplicación debe iniciarse la etapa de pruebas. Para esto es necesario
un ambiente aislado del de desarrollo y el de producción, es decir, debería simularse la ejecución
de la aplicación en un entorno idéntico adonde se va a ejecutar.
La lista de herramientas está dividida en categorías como se describe a continuación.
5.6.1. Herramientas de gestión de pruebas
Las herramientas de gestión de pruebas se utilizan para almacenar información sobre cómo se
deben realizar las pruebas, planificar actividades de prueba e informar el estado de las
actividades de garantía de calidad.
Una herramienta de gestión de pruebas proporciona una plataforma para almacenar toda la
información relacionada con las actividades de prueba. Ayuda en la planificación de pruebas y
proporciona informes sobre el estado de los esfuerzos de prueba. Una herramienta de gestión de
pruebas mantiene y planifica todos los esfuerzos de pruebas manuales, recopila datos de
ejecución de pruebas automatizadas e ingresa información relacionada con defectos. La
herramienta de gestión de pruebas ayuda a agilizar todo el proceso de prueba y proporciona un
medio de comunicación entre varios equipos de proyectos. Una buena herramienta de gestión de
pruebas también incorpora la gestión de requisitos y las capacidades de seguimiento de errores.
5.6.2. Herramientas para pruebas funcionales
La prueba funcional consiste en probar la funcionalidad de la aplicación de software bajo prueba.
Básicamente, es para verificar la funcionalidad básica mencionada en el documento de
especificación funcional. También verifique si la aplicación de software cumple con las
expectativas del usuario. También podemos decir que se verifica el comportamiento de la
aplicación de software en comparación con las especificaciones de prueba.
5.6.3. Herramientas para pruebas de carga y rendimiento.
Antes de comenzar a operar en el mercado, el sistema de software debe probarse con la
velocidad, la estabilidad y la escalabilidad en diversas condiciones de carga.
Si el sistema se pone en funcionamiento sin realizar pruebas de rendimiento, es posible que los
problemas, como la ejecución del sistema, se realicen de forma lenta y al mismo tiempo el acceso
16
de varios usuarios al sistema, una facilidad de uso deficiente que puede ganar mala reputación y
afecta directamente al objetivo de ventas esperado. Las pruebas de rendimiento abarcan una
serie de pruebas diferentes que permiten el análisis de diversos aspectos del sistema. La prueba
de rendimiento informa sobre lo que debe arreglarse antes de comenzar a funcionar
(principalmente los problemas que se presentan en las diversas condiciones de carga.
La prueba de carga se realiza para asegurarse de que la cantidad de carga puede soportar la
aplicación bajo prueba. La prueba de carga ejecutada con éxito es solo si los casos de prueba
especificados se ejecutan sin ningún error en el tiempo asignado.
Pruebas de rendimiento será igual a: Qué tan rápido es el sistema.
Pruebas de carga será igual a: Cuánto volumen puede procesar el sistema.
La lista de herramientas está dividida en categorías según si son herramientas open source o
comerciales.
5.7.1 Herramientas Open Source:
Bugzilla Testopia:
Es un administrador de casos de prueba, que maneja extensiones para interactuar con
Bugzilla. Testopia es una herramienta genérica para el seguimiento de casos de prueba
de software e integra reportes de defectos encontrados, así como el resultado de los casos
de prueba. Testopia está diseñado desde el punto de vista de la actividad de pruebas, así
como el seguimiento virtual de cualquier proceso de ingeniería.
TestLink:
Es una herramienta que permite crear y gestionar casos de pruebas y organizarlos en
planes de prueba. Estos planes permiten a los miembros del equipo ejecutar casos de test
y registrar los resultados dinámicamente, generar informes, mantener la trazabilidad con
los requerimientos, así como priorizar y asignar tareas.
FitNesse:
Es un servidor wiki web, que tiene una entrada y curva de aprendizaje muy baja, lo que lo
convierte en una excelente herramienta para colaborar con, el análisis de una aplicación.
qaManager:
Es una aplicación independiente diseñada para la gestión y control de calidad de
proyectos, con una instalación muy sencilla.
qaManager tiene seguimiento de proyectos, Administración de Recursos, Gestión de TC,
Biblioteca en línea, alertas y más.
qaBook:
Es un producto de gestión de pruebas que permite crear, gestionar y editar
requerimientos, Casos de prueba (con o sin pasos de prueba), pruebas de
funcionamiento, Defectos, Entornos, Presentación de informes y más. Posee una elección
de escritorio a través de la web o en Microsoft SharePoint, como interfaz de usuario.
17
RTH (open source):
Es un Sistema relativamente nuevo, la documentación que existe no es mucha, y la que
hay es poco clara. Requiere de pruebas y registros para su calificación. [9]
Testitool:
Utiliza diversos casos de prueba, por lo que es muy versátil. Cada plan de prueba contiene
la lista maestra de todos los casos de prueba para un producto determinado. Sin embargo,
para cualquier versión dada puede que no se desee ejecutar todos y cada caso de prueba.
Testitool permite seleccionar y elegir qué prueba caso tendrá que ejecutar para cualquier
instancia dada del plan de pruebas.
XQual Studio:
Es más que una plataforma estándar de gestión de pruebas, es una solución líder que
maneja el ciclo de vida completo de sus proyectos de GC/prueba de principio a fin:
productos / comunicados, requisitos, especificaciones, proyectos ágiles, pruebas,
campañas de prueba, prueba de informes y defectos.
Radi-testdir:
Es una herramienta de gestión de pruebas que soporta características testdirectory como
configurar el plan de pruebas, la actualización (crear/editar) los resultados de las pruebas
para la imagen/construcción, copia de seguridad, gestión de usuarios.
Data Generator:
Realiza un estudio de diferentes aplicaciones tal como se ilustra en la imagen.
Está compuesto por una lista de versiones anteriores y código fuente, así como
información adicional para los usuarios de Maven (Maven es una herramienta popular de
construcción Java). Es un entorno de pruebas de software para aplicaciones basadas en
la web. Permite grabar/reproducir pruebas en una amplia gama de lenguajes de
programación tales como: Java, C#, Ruby, Groovy, Perl, Php y Python. Las pruebas
pueden ejecutarse en la mayoría de los navegadores web actuales sobre diferentes
sistemas operativos como Windows, Linux y OSX.
Selenium IDE:
18
Es un plugin de Firefox que permite grabar y reproducir test en Firefox. Permite
generar código para ejecutar posteriormente las pruebas con Selenium Remote
Control.
Selenium Remote Control:
Es un servidor escrito en Java que acepta comandos al navegador vía HTTP.
RC hace posible escribir pruebas automatizadas para aplicaciones web, en
cualquier lenguaje de programación lo que permite una mejor integración de
Selenium a entornos de prueba existentes.
Selenium WebDriver:
Es el sucesor de Selenium RC. Selenium WebDriver acepta comandos
(enviados en Selenese o vía el API del cliente) y los envía a un navegador.
Selenium Grid:
Es un servidor que permite usar instancias delnavegador ejecutándose en
máquinas remotas.
SoapUI:
Es una solución multiplataforma para pruebas funcionales. Con una interfaz gráfica
amigable, SoapUI permite crear y ejecutar pruebas funcionales, de regresión y de carga
automatizadas con facilidad y rapidez. En un solo entorno de prueba, SoapUI ofrece
cobertura de la prueba completa y apoya todos los protocolos y tecnologías estándar.
Dispone de una fácil interfaz gráfica. Permite crear y ejecutar pruebas funcionales, de
regresión, de cumplimiento y de carga automatizadas con facilidad y rapidez. En un solo
entorno de prueba, SoapUI ofrece cobertura de prueba completa y apoya todos los
protocolos y tecnologías estándar.
Watir:
Es una familia de librerías Ruby de Código Abierto (Open Source) para la automatización
de navegadores web. Le permite a su usuario escribir pruebas fáciles de leer y mantener.
Sencilla y flexible. Tiene la capacidad de hacer clic en enlaces, llenar formularios de
pantallas con datos y presionar botones. Watir también revisa los resultados, incluyendo
verificar si los textos esperados se muestran en las páginas. Tiene la capacidad de
enlazarse con bases de datos, leer archivos de datos y hojas de cálculo, exportar XML y
estructurar los códigos como librerías reutilizables.
WatiN
(Pruebas de aplicaciones web en .Net): Inspirado por el desarrollo Watir, WatiN comenzó
en diciembre de 2005 para hacer el mismo tipo de pruebas de aplicaciones Web en
lenguajes .Net. Desde entonces WatiN se ha convertido en una herramienta fácil de usar
en diversas necesidades corporativas. WatiN está desarrollado en C # y su objetivo es
lograr automatizar sus pruebas con Internet Explorer y FireFox utilizando .Net.
LabShark:
Es una suite de productos de pruebas de protocolo enredes. La familia de productos de
LabShark permite modificar y editar los paquetes a medida que fluyen entre los
dispositivos y probar cualquier protocolo que se desee.
Canoo WebTest:
Es una herramienta de código abierto para pruebas automatizadas de aplicaciones web
de manera muy eficaz.
Solex:
19
Es una herramienta de prueba gratuita de código abierto para aplicación Web construida
como un plug-in para Eclipse IDE. Proporciona funciones para grabar una sesión de
cliente, ajustarlo de acuerdo a diversos parámetros y reproducir posteriormente con el fin
de garantizar la no regresión del comportamiento de la aplicación (con capacidades de
pruebas de estrés que se añade en una etapa posterior).
Solex actúa como un proxy HTTP y registra todas las peticiones y respuestas HTTP que
pasan por el cable entre un cliente Web (por ejemplo. Un navegador web) y un servidor
Web. La tarea de reproducir un escenario consiste en enviar las peticiones HTTP
previamente grabadas hacia el servidor y afirmando cada respuesta.
Samie:
Es un módulo automatizado para Internet Explorer. Permite escribir scripts de Perl con el
fin de analizar Internet Explorer en toda la web, en particular como se muestra la
información de la empresa al mundo. El sistema puede registrar todos los resultados en
una base de datos o en un archivo de texto plano. Se puede publicar esos resultados a
una página web de la empresa.
Wet:
Es una herramienta de prueba de automatización open source web. Funciona sobre un
navegador directamente comprobando de forma automática las páginas web. Permite
realizar diversos controles como parte del proceso de prueba mediante el uso de puntos
de control.
WebInject:
Es una herramienta gratuita para pruebas automatizadas de aplicaciones web y servicios
web. Se utiliza para probar los componentes individuales del sistema que tienen interfaces
HTTP (JSP, ASP, CGI, PHP, AJAX, Servlets, formularios HTML, XML/Servicios
web SOAP, REST, etc.), también como un instrumento de pruebas funcionales, de
aceptación y de regresión. Permite ejecutar muchos casos y recoger/reportar sus
resultados en tiempo real. [24
Apache JMeter:
Es el software gratuito y de código abierto para pruebas de prestaciones por excelencia.
Una aplicación 100 % Java diseñado para realizar pruebas de carga y medir el
rendimiento. Fue diseñado originalmente para pruebas de aplicaciones web, pero desde
entonces se ha expandido a otras funciones de prueba. Puede ser utilizado para probar
el rendimiento tanto en recursos estáticos y dinámicos ( Webservices ( SOAP / REST ) ,
lenguajes dinámicos Web - PHP , Java , ASP.NET , archivos , etc. - , objetos Java, bases
de datos y consultas , Servidores FTP y más). Se puede utilizar para simular una carga
pesada en un servidor, en un grupo de servidores, en la red o en el objeto software para
probar su resistencia o para analizar el rendimiento general bajo diferentes tipos de carga.
Se puede utilizar para hacer un análisis gráfico de rendimiento o para probar su
comportamiento / objeto de servidor/ script bajo carga concurrente pesada.
20
prueba. jmeter incluye capacidad de carga y pruebas de rendimiento para diferentes tipos
deservidor / protocolo.
loadUI:
Ejecuta pruebas de carga rápida de la API, ya sea contra un solo punto final del servicio
web o contra varios, en minutos, no en días.
(Ruiz, págs. 41-44).
T –Plan Profesional:
Es una herramienta de pruebas altamente adaptable, fácil de usar en el análisis de caja
negra que crea casos de pruebas automatizados robustos. Se ejecuta en los principales
sistemas operativos de Windows, Linux y Unix, además de las plataformas móviles, entre
otros.
SMARTS:
Es un conjunto integrado de herramientas de prueba de software de regresión, dispone
de un Test Suite de Gestion y apoyo que actua sobre plataformas Windows y UNIX
Spira Test:
Es una herramienta corporativa de altas prestaciones. Se puede descargar un trial, que
permite evaluar sus funcionalidades.
TestLog:
Es una herramienta bastante buena en el análisis d software, que permite descargarse
por un periodo de evaluación gratuita de 90 días. Incluido el apoyo por correo electrónico
gratuito. Es una versión completa sin funciones deshabilitadas o restricciones.
Ap Test Manager:
Esta herramienta automatiza pruebas funcionales y de rendimientos para entornos como
java, SOAP, CORBA, HTML, WAP, sistema cliente/servidor, UNIX y Windows.
21
Zephyr:
Es una plataforma de gestión de pruebas en tiempo real para las empresas. Permite
gestionar equipos globales, integración con JIRA e informa en tiempo real los resultados.
Eggplant:
Es la solución que presenta la compañía Testplant. Esta herramienta es independiente de
las tecnologías ya que utiliza la pantalla como imagen y mediante reconocimiento OCR
es capaz de identificar imágenes y texto para su utilización. Tiene un interfaz sencillo
aunque utiliza un código de generación de scripts muy poco extendido en la actualidad,
Sense Talk, originalmente desarrollado por Next Step. Esta herramienta se puede integrar
con otras muchas como Eggplant Manager, también de este fabricante. Se puede usar
tanto Windows, MacOS y Linux.
Rational Robot:
Es un software corporativo de IBM. Se recomienda consultar su página.
Soap Test:
22
Permite realizar pruebas funcionales de desarrollo y prevención defectos en aplicaciones.
Simula entornos de prueba realistas, velando por la integridad de las transacciones.
TestComplete:
Pertenece a SmartBear software y se trata de una herramienta orientada a objetos que
soporta una gran cantidad de tecnologías tales como Visual Basic, Delphi, C + + y otras
herramientas de desarrollo. Se puede ejecutar en los navegadores Internet Explorer,
Mozilla Firefox y Google Chrome en sus versiones de 32 y 64 bits y soporta flash y otros
complementos.
Es una herramienta corporativa de altas prestaciones. Se puede descargar un trial, que
permite evaluar sus funcionalidades. Utiliza Python, VBScript, DelphiScrip, C ++ y C#
Scrip para crear las pruebas. Emplea una integración con SoapUI GN y SoapUI
disponibles para automatizar pruebas que invocan API u otros servicios web.
Ranorex:
Se basa en reconocimiento de objetos y genera scripts tanto en C# como en Visual Basic.
Además tiene un interfaz muy amigable. Se integra sólo con las herramientas propietarias
de Ranorex para la gestión de casos de prueba.
QA Wizard:
Usa scripts de prueba funcional o escribe otros completamente nuevos para medir el
rendimiento de una aplicación web. Ejecuta scripts de pruebas funcionales existentes bajo
de estrés, mediante la limitación de la red, la memoria y el acceso al disco.
Squish:
Realiza pruebas de la interfaz de grafica de usuario. Es un sistema multiplataforma que
permite pruebas GUI de regresión.
vTest:
Es una herramienta de pruebas funcionales para aplicaciones web. Permite grabar y
reproducir scripts de pruebas automatizadas. Estas secuencias de comandos se pueden
ejecutar sin vigilancia, incluso se puede establecer un horario.
Internet Macros:
Es una herramienta de pruebas funcionales para aplicaciones funcionales web. Permite
grabar y reproducir el trabajo repetitivo y es el único software de automatización web que
trabaja con todos los sitios web. Se puede descargar y cargar y cargar texto, imágenes,
archivos y páginas web, manejar archivos PDF o tomar capturas de pantalla. También
permite importar y exportar datos desde y hacia aplicaciones web usando archivos CSV y
XML, base de datos o cualquier otra fuente. La contraseñas se almacenan de forma
segura con encriptación segura AES 256-Bit.
HP LoadRummer
Es un software de pruebas de carga que ofrece una perspectiva precisa del rendimiento
del sistema al completo para identificar y resolver problemas antes de lanzar la aplicación.
Se trata de una herramienta única de pruebas de carga para aplicaciones móviles, web y
heredadas que proporciona una visión precisa del rendimiento integral del sistema. Lo
cual, permite identificar y corregir cualquier incidencia antes de salir al mercado.
23
IBM Rational Performance Tester: Es un motor de pruebas de carga de trabajo que le
permite validar la escalabilidad y el rendimiento de las aplicaciones web y de servidor. La
solución maximiza el uso de la infraestructura de pruebas para desplegar rápidamente
escenarios de carga y generar actividad de pruebas del sistema a gran escala.
LoadStorm:
Es una forma más fácil y rentable para cargar una web de prueba y aplicaciones móviles.
Se puede realizar el análisis on line pegando la dirección url de la aplicación.
Neoload:
Permite analizar aplicaciones web y móviles mediante pruebas de carga.
WebLOAD Profesional:
Permite construir escenarios de prueba de carga. Traduce automáticamente sus acciones
en un script de prueba. La grabación es transparente y automática con cualquier
tecnología web, incluyendo HTTP/ HTTPS (SSL, TLS), WebSocket, AJAX, SOAP,
HTML5, WebDAV y otros.
WebLOAD:
Genera un script de prueba en JavaScript, que proporciona la flexibilidad de agregar
cualquier lógica, llama a clases Java y añade integraciones - con un entorno de scripting
que es familiar a cualquier desarrollador web.
Load Impact:
Permite realizar pruebas de rendimiento bajo demanda para DevOps. Se carga y prueba
el sitio web, aplicación móvil o API instantáneamente con hasta 1,2 millones de usuarios
al mismo tiempo.
(Ruiz, págs. 44-48).
24
6. HERRAMIENTAS DE AUTOMATIZACIÓN DE PRUEBAS DE SOFTWARE PARA
APLICACIONES WEB.
Se realizara un marco comparativo de las herramientas que se pueden utilizar para realizar la
automatización de las pruebas de aceptación funcionales de una aplicación web.
Los criterios que se debe tomar en cuenta para la selección de dichas herramientas pueden ser:
Selenium WebDriver.
Watir
Cucumber
6.1.1 Selenium
Integración: se desarrolla para el mundo real y por lo tanto depende de proyectos reales
con configuraciones reales:
25
Desarrollo Ágil: parte clave en la automatización del navegador.
Nube.
Webdriver API
HTML
Partes internas: nos permitirán realizar soluciones sofisticadas para problemas complejos,
ya que no es necesario que conozcamos perfectamente el funcionamiento interno en el
momento de su uso.
Navegador partes internas. Facilitan a los navegadores que no sean vistos como
una caja negra
Selenium RC: Es un sistema cliente / servidor que le permite controlar los navegadores
web localmente o en otros equipos, utilizando casi cualquier lenguaje de programación y
marco de pruebas.
Selenium Grid: Es igual a Selenium control remoto a otro nivel mediante la ejecución de
pruebas en muchos servidores al mismo tiempo, reduciendo el tiempo que se necesita
para probar múltiples navegadores o sistemas operativos. En la Figura 15 podemos ver
un diagrama de cómo es el sistema que se forma al usar esta herramienta.
A la hora de seleccionar la herramienta que interesa, se tendrá que elegir entre dos Selenium
WebDriver y Selenium IDE.
26
Crear pruebas sólidas, basadas en el navegador suites de automatización de regresión
y pruebas.
Capacidad de escalar y distribuir guiones sobre muchos entornos.
Es el sucesor del Selenium RC, ya que éste está actualmente obsoleto. Además, ahora
también incluye una función de las capacidades de la red.
6.1.2. Watir
Watir (Web Aplication Testing In Ruby) es una herramienta de Testing de aplicaciones web
mediante el lenguaje de programación Ruby que automatiza las operaciones de los navegadores
web, actualmente trabaja en los siguientes navegadores:
Internet Explorer.
Firefox
Microsoft Edge.
Chrome
Safari.
Watir fue desarrollado inicialmente por BretPettichord y Paul Rogers. Es un proyecto de código
abierto, que tiene una lista creciente de participantes.
La funcionalidad que simula esta herramienta es como si un usuario la realizase cualquier acción
con la plataforma web, esto es, escribir un correo electrónico, consultar cierta información, rellenar
un formulario, etcétera.
También muestra la posibilidad de identificar cada uno de los elementos HTML que hay en la
página, pudiendo manipularlos y realizar acciones con ellos, de esta forma es con la que se puede
simular el funcionamiento al igual que si fuese un usuario.
WatirClassic:
Hace uso de la funcionalidad del enlazado de objetos que Ruby tiene integrada. Opera
diferente de otras herramientas de pruebas basadas en HTTP que emulan la existencia
de un navegador, en vez de ello, inicia instancia del navegador a través del protocolo
OLE que está implementado sobre la arquitectura COM que es la que permite la
comunicación entre procesos (por ejemplo, entre Ruby e Internet Explorer) y la creación
y manipulación dinámica de objetos, que es lo que hace Ruby con el Internet Explorer.
Microsoft llama a esto "automatización OLE" y al programa que ejerce la manipulación lo
27
llama controlador de automatización. Técnicamente el proceso de Internet Explorer es un
servidor y sirve objetos de automatización al exponer sus métodos mientras que el
programa escrito en Ruby se convierte en el cliente que manipula los objetos de
automatización.
Watir-Webdriver:
Es una versión moderna del API de Watir basada en Selenium (es un entorno de pruebas
de software para aplicaciones basadas en la web). Selenium 2.0 (Selenium-WebDriver)
intenta ser la implementación de referencia para la especificación WebDriver. Dado que
Watir-Webdriver es derivado tanto de Selenium 2.0 como de la especificación de HTML
Watir-Webdriver debe ser siempre compatible con las especificaciones del W3C (es un
consorcio internacional que produce recomendaciones para la World Wide Web)
Watirspec:
Hacer pruebas funcionales para aplicaciones web. Sin embargo, es necesario tener en
cuenta que Watir sólo funciona en IE (aunque existe FireWatir y SafariWatir, tanto que se
ejecuta en otras plataformas para Firefox y Safari, respectivamente). Si bien esto parece
terriblemente restrictivo para algunos, me dado cuenta de que la fuerza de RSpec + Watir
no está en las pruebas de compatibilidad del navegador sino en ser capaz de correr a
través de la aplicación web como se ha visto y utilizado por el usuario real, a través de
un navegador real. RSpec + Watir produce una capacidad sinérgica donde cada uno no
puede. La herramienta combinada nos permite probar cualquier aplicación web (ya sea
Ruby on Rails o no) y de hacerlo de una manera BDD.
Después de la clasificación de los diferentes tipos de herramientas de las que consta Watir, se
vio que Watir-Web driver, es el que mejor se adapta al entorno y es capaz de ejecutarse en más
navegadores que Internet Explorer. (Ruiz, pág. 86)
6.1.3. Cucumber
Cucumber es una herramienta software utilizada para ejecutar de forma automática pruebas de
aceptación en entornos web. A diferencia de las otras herramientas vistas se basa en la utilización
de un nuevo estilo BDD (Behavior-Driver Developement), de esta forma se puede realizar
descripciones funcionales en texto plano como pruebas software automatizadas.
BDD, Gherkin
Es un proceso de desarrollo software que más allá del desarrollo de software, más allá del
Testing, realmente, nació con el objetivo de evitar todas las malas repercusiones que conllevaban
los malos entendimientos en un proyecto.
La idea es que cada uno de los roles de un proyecto y de los clientes aporte su conocimiento para
que entre todos se pueda crear el software que importa o el que se necesita, satisfaciendo las
necesidades marcadas por el cliente.
Para poder diseñar, realizar y probar el software que se va a probar de una forma colaborativa es
necesario que, en esta colaboración, intervengan al menos tres roles dentro de un proyecto:
negocio, desarrollo y Testing.
Todo este procedimiento, para aplicarlo de una forma más cómoda se puede definir un DSL
(Domain Specific Language) a este lenguaje se le ha bautizado como Gherkin.
La característica más destacada de este lenguaje es muy similar al habitual, de hecho, soporta
más de 60 idiomas, ya que su principal objetivo es, que más allá de la implementación, negocio,
28
desarrolladores y tester, sepan de forma conjunta cómo será el software a crear, que
características tendrá y cómo será su funcionalidad.
Para poder poner en práctica este lenguaje es necesario tener claro los siguientes conceptos:
➢ Feature: Indica el nombre de la funcionalidad que se va a probar. Debe ser un título claro y
explícito. En base a esto se realiza los escenarios con sus pruebas concretas.
➢ Given: Aporta el contexto para el escenario en el que se va a ejecutar el test, tales como:
dónde se ejecuta el test, prerrequisitos en los datos. Además, incluye los pasos necesarios para
poner al sistema en el estado que se desea probar.
➢ When: Especifica el conjunto de acciones que lanzan el test, detallando la interacción del
usuario que acciona la funcionalidad que se desea testear.
➢ Then: Indica el resultado esperado en el test. Se puede observar los cambios en el sistema y
se puede ver si son los deseados o no en base a los especificados.
Se podrá ver las diferencias que hay entre las diferentes herramientas, cabe destacar que todas
deben partir de un fin común.
Para establecer una buena comparativa evidentemente depende del nivel de experiencia que
tienen los diferentes usuarios para empezar a utilizar los tipos de herramientas.
Por tanto, se debe partir de un caso personal de acuerdo a la experiencia en el desarrollo de
pruebas con estas herramientas con mayor dominio y eficazmente.
Podremos ver que hay muchas características que son iguales en todas las herramientas, en
otros casos se verá que hay herramientas que destacan o que realmente tienen características
que son superiores a la demás.
Otro detalle que hay que comentar, es el uso de los diferentes navegadores, en este caso todas
las herramientas se posicionan bastante bien. (Ruiz, pág. 108).
29
Cuadro 3- Comparativa de herramientas seleccionadas
Fuente: (Ruiz, págs. 109,110).
30
7. CONCLUSIONES.
Este trabajo permitió brindar un panorama general de las herramientas más populares y utilizadas
para los distintos tipos de pruebas las cuales están divididas de acuerdo al tipo de pruebas que
se quiere realizar. Y de acuerdo a las herramientas código abierto como también herramientas
comerciales las cuales se pueden seleccionar y adaptar a los requerimientos propios de un
proyecto.
Por tanto al conocer estas herramientas permitirá que podamos escoger la herramienta que mejor
se adapte a nuestro proyecto para minimizar los tiempos de testeo (dado que agilizan el proceso
de realizar las repeticiones, por ejemplo), y aumentar la eficiencia y la calidad tanto del software
como del equipo de desarrollo.
31
8. BIBLIOGRAFÍA.
Herramientas open source para testing de aplicaciones Web. Evaluación y uso. Javier Díaz
Claudia Banchoff Tzancoff Anahí Rodríguez y Valeria Soria.
http://sedici.unlp.edu.ar/bitstream/handle/10915/21017/Documento_completo.pdf?sequence=1
Herramientas de la automatización.
https://sites.google.com/site/sergioegtza21/3-3-3-herramientas-de-la-automatizacion
Pruebas de Software. Fundamentos y Técnicas. José Manuel Sánchez Peño Junio 2015.
http://oa.upm.es/40012/1/PFC_JOSE_MANUEL_SANCHEZ_PENO_3.pdf
32
Pruebas para asegurar la calidad del producto software (II).
http://blog.elevenpaths.com/2014/11/qa-pruebas-para-asegurar-la-calidad-del.html
33