Vous êtes sur la page 1sur 33

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


DIRECCIÓN DE POSGRADO

Mejores herramientas para la automatización de pruebas de software

TRABAJO FINAL PRESENTADO PARA OBTENER EL CERTIFICADO DE DIPLOMADO


EXPERTO EN DESARROLLO DE APLICACIONES EMPRESARIALES VERSIÓN I.

POSTULANTE : Giovana Aleman Mamani.


TUTOR : Msg. Valentin Laime.

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

1.1. Antecedentes generales................................................................................................... 7

1.2. Antecedentes específicos ................................................................................................ 7

2. METODOLOGÍA .................................................................................................................. 7

3. FUNDAMENTOS BÁSICOS. ............................................................................................... 7

3.1 Definición de pruebas. ...................................................................................................... 7

3.2. Objetivo de la pruebas. .................................................................................................... 8

3.3. Entorno de pruebas.......................................................................................................... 8

4. SOFTWARE LIBRE Y SOFTWARE COMERCIAL. ............................................................... 12

4.1. Características del software libre, gratuito y comercial................................................... 12

4.1.1 Software Libre: .................................................................................................... 12

4.1.2 Software comercial: ............................................................................................. 13

4.2 Comparativa general. ................................................................................................. 13

5. AUTOMATIZACIÓN............................................................................................................. 14

5.1 Automatización de pruebas............................................................................................. 14

5.2. Objetivo de la automatización de pruebas...................................................................... 14

5.3. Tipos de pruebas automatizadas. .................................................................................. 14

5.3.1 Automatización de pruebas funcionales:.............................................................. 15

5.3.2 Automatización de pruebas no funcionales:......................................................... 15

5.4. Ventajas de automatizar pruebas................................................................................... 15

5.6. Herramientas para realizar pruebas de software............................................................ 16

5.6.1. Herramientas de gestión de pruebas ....................................................................... 16

5.6.2. Herramientas para pruebas funcionales................................................................... 16

5.6.3. Herramientas para pruebas de carga y rendimiento................................................. 16

5.7. Clasificación de las herramientas para la automatización de software. .......................... 17


5.7.1 Herramientas Open Source:...................................................................................... 17

5.7.2. Herramientas Comerciales....................................................................................... 21

6. HERRAMIENTAS DE AUTOMATIZACIÓN DE PRUEBAS DE SOFTWARE PARA


APLICACIONES WEB. ............................................................................................................. 25

6.1. Herramientas de automatización Open Source: ............................................................. 25

6.1.1 Selenium................................................................................................................... 25

6.1.2. Watir ........................................................................................................................ 27

6.1.3. Cucumber ................................................................................................................ 28

6.2. Comparativa de las herramientas seleccionadas. .......................................................... 29

7. CONCLUSIONES. ................................................................................................................ 31

8. BIBLIOGRAFÍA..................................................................................................................... 32
TABLA DE FIGURAS Y CUADROS

Figura 1-Proceso de depuración.............................................................................................................10


Figura 2- Pirámide de automatización de pruebas ..............................................................................11
Figura 3- Cono de helado de pruebas de software..............................................................................12

Cuadro 1- Tipos de pruebas ....................................................................................................... 9


Cuadro 2- Comparativa software libre y software comercial...................................................... 13
Cuadro 3- Comparativa de herramientas seleccionadas........................................................... 30

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.

Palabras clave:Testing – calidad, herramientas de pruebas.

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

1.1. Antecedentes Generales

Actualmente el número de herramientas para pruebas de software disponibles, tanto en el


mercado como de manera gratuita (herramientas de código abierto), es muy amplio así también
existen herramientas comerciales para realizar pruebas.
Hasta ahora las pruebas de carácter funcional, de reportes o rendimiento no han sido capaces
de minimizar el error humano de forma sustancial en el software; lo que ha derivado en la
generación de herramientas de automatización de pruebas que mejoran la efectividad de la
misma, por ello detectar cambios y estabilizar un software o una aplicación es el objetivo de
Quality Assurance (Q&A) es decir optimizar costos; llegar a tiempo con el sistema y cambiar la
perspectiva del proyecto son cualidades propias de la automatización de pruebas y de paso evitar
apuros y fallas.
Entonces es importante probar adecuadamente el software con herramientas de automatización,
antes de ponerlo en producción para que la calidad al producto que se está desarrollando,
produzca satisfacción del cliente y el cumplimiento de los requisitos del producto.

1.2. Antecedentes Específicos

Existe diversidad de herramientas de automatización de software que asisten en la etapa de


testing de un sistema, sin embargo en este trabajo se presentarán algunas de estas herramientas
de código abierto y herramientas comerciales que serán agrupadas según el tipo de prueba a
realizar.
También existen herramientas para realizar pruebas de aceptación funcionales para probar
aplicaciones web, sin embargo para este trabajo se hará uso de Selenium, Watir y Cucumber ya
que son las que mejor se adaptan para este tipo de pruebas.
2. METODOLOGIA.
Para el presente trabajo se utilizarán los siguientes métodos de investigación:
Método Bibliográfico, debido a que se realizara la lectura y compilación de libros relacionados al
tema de estudio.
Método Analítico, debido a que se procederá a revisar y analizar ordenadamente documentos
relacionados al tema de estudio, para la redacción del presente trabajo.

3. FUNDAMENTOS BÁSICOS.

3.1 Definición de pruebas.

Es el proceso de ejecutar un programa con la intención de encontrar fallos


Un buen caso de prueba es el que tiene alta probabilidad de detectar un nuevo error. (Tuya,
Javier, s.f., pág. 4).
El ISTQB (International Software Testing Qualifications Board), una organización sin ánimo de
lucro creada en el año 2002 por empresas, instituciones, organizaciones y personas
especializadas en el campo de las pruebas y la industria del software, define las pruebas como:

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).

3.2. Objetivo de la pruebas.

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).

3.3. Entorno de pruebas

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ó.

La técnica de análisis y pruebas al que se somete a un software, desarrollado o en proceso de


desarrollo, para comprobar que cumple con la especificación y funcionalidad marcada por el
cliente es conocido como el proceso de Verificación y Validación.

 La Verificación: Consiste en la comprobación de que estamos construyendo el producto


de acuerdo con su determinación. Esto es, que cumple todos los requisitos funcionales y
no funcionales establecidos por el cliente.

 La Validación: Consiste en la comprobación de que el producto satisface la especificación


marcada por el cliente que describe un proceso más general, debido a que en los
documentos de requisitos de software no siempre reflejan los deseos o necesidades del
cliente.

Teniendo en cuenta todos estos conceptos y procesos de realización de pruebas se puede


realizar una clasificación con los diferentes tipos de pruebas. La clasificación se lo hace
dependiendo del nivel dentro de la aplicación, por tanto, las pruebas se organizan en el siguiente
cuadro:

Cuadro 1- Tipos de pruebas


Fuente: (Perez, 2015, pág. 29)

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.

En la Figura 1, se muestra el proceso detección, depuración y corrección de errores. Todo parte


de la detección de un error o anomalía en los resultados de las pruebas realizados, a partir de
aquí tendremos que localizar el error, diseñar la reparación, repararlo y nuevamente volver a
realizar pruebas en el programa. Cabe destacar que este proceso es cíclico, de forma que se
realizará hasta que todos los defectos sean solucionados y, por tanto, después de la ejecución
de las pruebas marcadas sea exitoso.

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.

Figura 1-Proceso de depuración


Fuente: (Ruiz, pág. 47).

En la Figura 2, se puede observar la pirámide de las pruebas automatizadas. Es un contexto


desarrollado por Mike Cohn en el libro publicado Succeeding with Agile Software. Ahí se plantea
esta pirámide, que como podemos observar lo que nos indica es que en la base se encuentran
los tipos de pruebas que menos coste y más número de pruebas se realizan, que son las pruebas
unitarias. De igual forma, en el vértice o en la parte más alta, se encuentran las pruebas que
menos se realizan, que son las pruebas beta, ya que es necesario montar un entorno de
producción y reunirse con el cliente y el tester para poder comprobar funcionalmente si se adapta
a las especificaciones del cliente, por esta razón, son las que más coste tienen.

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.

Figura 2- Pirámide de automatización de pruebas


Fuente: (Ruiz, pág. 48)

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).

4. SOFTWARE LIBRE Y SOFTWARE COMERCIAL.

El software libre y software comercial trata esencialmente de una cuestión de garantía de


libertades. Un software será libre cuando permita a los usuarios, que adquirieron el producto,
poder ejecutarlo, copiarlo y estudiarlo, incluso distribuirlo modificado.
Mientras que el software comercial considerándolo así como una concepción opuesta a software
libre, no por el hecho de tener que pagar dinero para adquirirlo o utilizarlo, sino porque sus
productores, a diferencia de los programadores libres, deciden licenciar sus soluciones conforme
a leyes y principios que no contempla el software libre.
Sin embargo también se debe diferenciar entre software libre (Software Open Source) y software
gratuito (Free Software), ya que son términos que normalmente vienen estrechamente ligados,
sin embargo, no se deben de confundir.

4.1. Características del software libre, gratuito y comercial.

4.1.1 Software Libre:


Es el que es desarrollado y distribuido libremente y que además de compartir su los
aplicativos utilitarios, también comparte el código fuente.
Es aquel que respeta la libertad de todos los usuarios que adquirieron el producto para
ser usado, copiado, estudiado, modificado, y redistribuido libremente de varias formas. Es
muy importante aclarar que el Software Libre establece muchas libertades pero no es
necesariamente gratuito.

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).

4.1.2 Software comercial:


En la contraposición al software anteriormente expuesto. Es el más conocido y consiste
básicamente en pagar por un programa para poder instalarlo en nuestro ordenador y
utilizarlo. Con el pago de estas licencias el usuario tendrá, por regla general una garantía
de que el programa funcionará de manera correcta y en caso de no hacerlo, tener el
derecho a un servicio de asistencia técnica que ayude a solventar el problema.

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).

4.2 Comparativa general.


Las principales diferencias entre el software privativo y el software libre gratuito se
resumen en la siguiente tabla.

Cuadro 2 - Comparativa software libre y software comercial


Fuente: (Perez, 2015, pág. 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)

5.1 Automatización de pruebas.

La automatización de pruebas es un tipo particular de sistema software y consiste en la


realización de pruebas basadas en herramientas que permiten su ejecución y análisis automático.
Se trata de una alternativa muy interesante cuando se quiere asegurar cierto nivel de calidad de
cada liberación de productos o versiones software que se realice.
Lo ideal para empezar a utilizarla, es que nos encontremos en una fase de cierta estabilidad
dentro de los cambios y de las funcionalidades básicas que tiene el producto (regresión). Ya que
si el software cambiase bastante en unos intervalos cortos de tiempo, provocaría mucho coste en
el mantenimiento de scripts automáticos y no sería aplicable.
Esta automatización es muy útil sobre todo, cuando al aumentar la productividad en el desarrollo
software, disminuyen los tiempos entre la generación de nuevas versiones y no queremos que
crezca la incertidumbre acerca de la calidad del producto software resultante.
Utilizando este método se pretende que el número de errores detectados y reportados en el
entorno de producción sean mínimos. Esto es muy importante, ya que según antes se detecte un
error en el ciclo de vida del software menor será el coste de haberlo encontrado y reparado,
además de los daños de imagen del producto que se provocarían si estos fallos se encontrarán
en producción. (Ruiz, pág. 36)

5.2. Objetivo de la automatización de pruebas.

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).

5.3. Tipos de pruebas automatizadas.

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.

5.3.2 Automatización de pruebas no funcionales:


Tales como la eficiencia, fiabilidad o la usabilidad. En este tipo de pruebas se
encuentran las pruebas de rendimiento, pruebas de prestaciones, de seguridad,
portabilidad etc.:

 Prueba de carga: Tipo de prueba relacionado con la medida del


comportamiento de un componente o sistema con una carga creciente, por
ejemplo el número de usuarios concurrentes y/o número de transacciones
para determinar qué carga puede ser soportada por el componente o
sistema.

 Prueba de rendimiento: Se centra en determinar la velocidad con la que


el sistema bajo pruebas realiza una tarea en las condiciones particulares
del escenario de pruebas. Este servicio ayuda a su organización a detectar
los cuellos de botella de su aplicación, antes de que sus usuarios sufran un
mal rendimiento, con la consecuente pérdida económica y frustración de
sus clientes o empleados.

 Prueba de estrés: Pruebas orientadas a evaluar un componente o sistema


en, o más allá, de los límites especificados en los requisitos.
Gracias a la automatización de este tipo de pruebas que permite alcanzar cotas y realizar algunos
tipos de pruebas que no se podrían obtener de manera manual. Esto se debe al potencial que
nos ofrecen las herramientas encargadas de este tipo de pruebas y de la infraestructura hardware
que utilicemos. (Ruiz, págs. 37-38)

5.4. Ventajas de automatizar pruebas.

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.

 Automatizar aquellas actividades que requieren muchos recursos si se hacen de forma


manual (por ejemplo, pruebas estáticas).

15
 Reasignación de recursos que previamente realizaban las pruebas de manera manual,
y utilizarlos para otra tarea dentro del negocio.

 Automatizar aquellas actividades que no pueden ejecutarse de forma manual (por


ejemplo, pruebas de rendimiento a gran escala de aplicaciones cliente - servidor).

 Aumentar la fiabilidad de las pruebas (por ejemplo, cuando se automatizan


comparaciones de grandes ficheros de datos y se simula su comportamiento).

 Posibilidad de programar la ejecución de un plan de pruebas o escenario deseado, de


manera desatendida, del modo que se desee.

 Posibilidad de realizar algunos tipos de prueba en menos tiempo.


(Ruiz, págs. 38-39).

5.6. Herramientas para realizar pruebas de software.

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.

5.7. Clasificación de las herramientas para la automatización de software.

La lista de herramientas está dividida en categorías según si son herramientas open source o
comerciales.
5.7.1 Herramientas Open Source:

A) Herramientas de gestión de pruebas

 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]

 Test Environment Toolkit:


Es ampliamente utilizado en muchas aplicaciones de prueba, incluyendo el programa de
certificación UNIX del Open Group y LSB programa de Certificación de la Free Standards
Group.

 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.

B) Herramientas para pruebas funcionales


 Selenium:
Se trata de la herramienta gratuita más utilizada para automatizar pruebas funcionales.
Este software ofrece la ventaja de ser una herramienta de código abierto. Esta
herramienta está diseñada exclusivamente para navegadores, es decir, que está diseñada
para tecnologías web. Se puede escribir los scripts tanto en C#, Java, Groovy, Perl, PHP,
Python y Ruby. En cuanto al soporte, viene dado a través de la comunidad que lo
desarrolla y colabora en ello, pero eso no garantiza una respuesta. Esta herramienta se
puede usar en Windows, Linux y MacOS.

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.

Los componentes de la suite Selenium son:

 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

C) Herramientas para pruebas de carga y rendimiento

 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.

Esta herramienta permite hacer pruebas funcionales y de carga de aplicaciones web. Es


un software desarrollado en Java de código abierto, diseñado para efectuar pruebas
funcionales y medir el rendimiento de una aplicación. Fue diseñado originalmente para
pruebas de aplicaciones web, pero desde entonces se ha expandido a otras funciones de

20
prueba. jmeter incluye capacidad de carga y pruebas de rendimiento para diferentes tipos
deservidor / protocolo.

 FWPTT load testing:


Es una herramienta enfocada a realizar pruebas de carga en aplicaciones web. Permite
grabar peticiones normales y ajax. Probado para aplicaciones ASP, .NET, JSP, PHP u
otro. Puede grabar sus acciones de navegación utilizando cualquier navegador IE, Firefox
etc.

 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).

5.7.2. Herramientas Comerciales.

A) Herramientas de gestión de pruebas

 HP ALM (HP Application Lifecycle Management):


Anteriormente conocido como Quality Center. Se trata de una solución de gestión de
aplicaciones para ayudar a definir, crear, probar y entregar aplicaciones de forma rápida
y con confianza en todo el ciclo de vida de desarrollo del software. Es la herramienta líder
para la Gestión de Calidad (requisitos, pruebas y defectos) en proyectos de desarrollo de
aplicaciones en los departamentos de IT.

 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

 PractiTest: Permite administrar todos los requisitos, pruebas, problemas y presentación


de informes en una solución completa.

 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.

B) Herramientas para pruebas funcionales

 HP Unified Functional Testing:


Antes conocida como Quick Test Professional (QTP). Soporta una variedad muy extensa
de tecnologías: Java, Sap, Siebel, Visual Basic .Net y Oracle entre muchas otras. Esta
Herramienta se basa en el reconocimiento de objetos, aunque se puede utilizar el
posicionamiento dentro de una pantalla para la realización de pruebas, así como
reconocimiento de texto por OCR. Al poseer un interfaz amigable y un código de
generación de scripts en visual basic se consigue que se aprenda más fácilmente,
obteniendo una curva de aprendizaje muy alta desde el primer momento. Esta herramienta
se suele integrar con todas las herramientas de la suite de HP como Quality Center (gestor
de requisitos, casos de prueba y defectos).

 Microsoft Test Manager (MTM):


Herramienta propiedad de Microsoft para la gestión y automatización de pruebas. Esta
herramienta está incluida en Microsoft Visual Studio Ultimate 2010 o en Visual Studio Test
Professional 2010. El interfaz y el código generado en los scripts es bastante intuitivo, se
debe de integrar con Team Foundation Server que almacena los casos de prueba y
requerimientos entre otras cosas. El código generado se llama coded UI que graba
operaciones de interfaz basado en Visual C#.NET. Se instala en sistemas operativos
Windows.

 IBM Rational Functional Tester:


Herramienta de automatización de pruebas funcionales y de regresión. Proporciona
capacidades de pruebas de interfaz gráfica, pruebas manejadas por datos (Data Driven),
pruebas funcionales y pruebas de regresión. Algunas de sus características son:
Simplificación de creación y visualización de pruebas, pruebas de tipo storyboards,
trazabilidad en todo el ciclo de vida, validación de data dinámica (por medio de un wizard),
e inclusive capacidad de definir scripts (por medio de lenguajes de Scripting). Rational
Function Tester da soporte a diversas aplicaciones, como aplicaciones basadas en web,
.Net, Java, Siebel, SAP, basadas en emulador de terminal, PowerBuilder, Ajax, Adobe
Flex, Dojo Toolkit, GEF, documentos Adobe PDF, zSeries, iSeries y pSeries.

 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.

 Sahi: Es una versión de corrección de errores sobre aplicaciones Web.

 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.

C) Herramientas para pruebas de carga y de rendimiento

 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.

Esta herramienta permite realizar pruebas de rendimiento de las aplicaciones y resolver


los problemas antes de que resulten costosos.

 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.

 ANTS – Advanced .NET Testing System:


Es un Sistema que permite analizar las bases de datos SQL Server. Ofrece beneficios de
control de código fuente, integración continua, y la entrega continua – Comunicados
seguros, desarrollo eficiente y respuesta rápida - a las bases de datos SQLServer.

 Webserver Stress Tool:


Es una aplicación de prueba HTTP cliente/servidor de gran alcance, diseñado para
identificar problemas críticos de rendimiento en un sitio web o servidor web. Mediante la
simulación de las peticiones HTTP generadas por cientos o incluso miles de usuarios
simultáneos, se puede probar el rendimiento del servidor web bajo cargas normales y
excesivas, para garantizar que la información y los servicios críticos
estén disponibles. Webserver Stress Tool está disponible para Windows (2003 R2, Vista,
7,2008) puede referenciar casi cualquier servidor HTTP (por ejemplo, las páginas
estáticas, JSP / ASP o CGI).

 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:

 Popularidad, que las herramientas a seleccionar sean lo suficientemente conocidas para


que sean válidos los resultados y, por tanto, sea más creíble para el cliente.
 Multiplataforma.
 Desarrollo de Pruebas de Aceptación funcionales o de regresión.
 Open Source
 Sencillo
 Ágil
 Frameworks de test de pruebas.
 Probar cualquier página web.

Las herramientas seleccionadas, que cumplen los requisitos anteriormente, son:

 Selenium WebDriver.
 Watir
 Cucumber

6.1. Herramientas de automatización Open Source:

Se describirá cada una de las herramientas seleccionadas con detalle.


Se realizará un estudio de la herramienta, buscando información y comprobando
su funcionalidad, nos familiarizamos con la misma.

6.1.1 Selenium

Selenium es un conjunto de herramientas que automatizan el navegador. Cuyo propósito principal


se basa en dos objetivos principales:

 Automatización de entornos web para poder ejecutar planes de pruebas programados


previamente y poder así comprobar el comportamiento del entorno.

 Tareas de administración web.

Está formado principalmente por los siguientes componentes:

 WebDriver Selenium: Se puede controlar el navegador de forma nativa, ya sea desde


local como a máquinas remotas.

 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.

 Building-Tools: Maven, Ant…

 CI-Servidor: Jenkins (integración continua).

 Patrón: patrones de diseño como Page Object-Pattern.

 Webdriver API

 Programación: habilidades fundamentales para la automatización del navegador web.

 IDE: NetBeans, Eclipse, etc.

 HTML

 XPath: necesaria para la navegación sofisticada.

 Test-Marco: TestNG, JUnit, etc.

 Herramientas del navegador.

 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

 Drivers internos del navegador: el más utilizado Firefox.

 Selenium IDE. Es un entorno de desarrollo implementado como una extensión de Firefox


y permite grabar, editar y depurar pruebas funcionales. En la Figura 14 podemos ver la
interfaz de esta herramienta.

 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.

Selenium WebDriver, se utiliza para:

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.

Selenium IDE, se utiliza para:

 Crear secuencias de comandos para realizar la automatización de pruebas definidas, con


el objetivo de detectar errores.
 Como complemento de Firefox para reproducir las interacciones con el navegador.

Por tanto, en base a las características y especificaciones iniciales de las herramientas de


automatización se podrá seleccionar Selenium WebDriver, ya que es el que mejor se adapta a
dichas especificaciones. (Ruiz, págs. 64-66)

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.

Se encontró tres tipos de herramientas Watir:

 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.

➢ Scenario: Es una descripción del escenario que se va a probar.

➢ 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.

Lo ideal, es probar en diferentes escenarios la misma funcionalidad, de esta forma se podrá


realizar las pruebas que posteriormente sea automatizado.
Por tanto, realizar la automatización de pruebas en un entorno web es interesante a largo plazo,
ya que se gana tanto tiempo como dinero. (Ruiz, págs. 98-99).

6.2. Comparativa de las herramientas seleccionadas.

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.

También vimos un descripción detallada de tres herramientas seleccionadas que tienen un


software con más potencial, los cuales fueron: Selenium, Watir y Cucumber que se pueden
utilizar para realizar la automatización de pruebas de aceptación funcionales de una aplicación
web, de estas herramientas se sacó una comparativo para ver que hay muchas características
que son iguales en todas las herramientas, en otros casos se vio que hay herramientas que
destacan o que realmente tienen características que son superiores a la demás.

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.

10 herramientas para la gestión de calidad de software.


http://www.pmoinformatica.com/2015/04/herramientas-gestion-calidad-software.html

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

Automatización de Pruebas de Software con Herramientas Open Source. Henry Eduardo


Carrión Cristóbal.
https://docplayer.es/3812992-Automatizacion-de-pruebas-de-software-con-herramientas-open-
source-henry-eduardo-carrion-cristobal.html

Beneficios de las pruebas automatizadas de software.


http://www.kibernum.com/noticias/beneficios-las-pruebas-automatizadas-software/

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

Herramientas para realizar pruebas de software Ms. Jairo E. Márquez D.


https://es.slideshare.net/nanotechnology/las-mejores-herramientas-para-realizar-pruebas-de-
software

Estudio comparativo de herramientas para la automatización de pruebas software. Daniel Álvaro


Pérez, Madrid, Octubre 2015.
https://e-
archivo.uc3m.es/bitstream/handle/10016/26573/PFC_Daniel_Alvaro_Perez.pdf?sequence=1

Web Application Testing in Ruby


http://watir.com/

Selenium - Web Browser Automation. Installation Guide, System Requirements


and User Guide.
http://www.seleniumhq.org/

Estudio de herramientas de automatización de pruebas software en aplicaciones web. José


García Ruiz.
https://core.ac.uk/download/pdf/143444368.pdf

Diferencia entre Software Libre y Software Gratuito.


http://planetared.com/2010/04/diferencia-entre-software-libre-y-software-gratuito/

Software libre y software propietario. María Isabel Atopo.


http://www.monografias.com/trabajos89/sotware-libre-y-propietario/sotware-libre-y-
propietario.shtml

32
Pruebas para asegurar la calidad del producto software (II).
http://blog.elevenpaths.com/2014/11/qa-pruebas-para-asegurar-la-calidad-del.html

PMOinformatica.com. La oficina de proyectos en informática. Cucumber [Online]


http://www.pmoinformatica.com/2014/09/5-preguntas-y-respuestas-sobre-cucumber.html

Selenium manual de instalación y uso


https://docplayer.es/7202298-Selenium-manual-de-instalacion-y-uso.html

Herramientas de Evaluación para Automatizar Pruebas de Sistemas Orientados a Objetos


https://www.researchgate.net/publication/291447793_Herramientas_de_Evaluacion_para_Auto
matizar_Pruebas_de_Sistemas_Orientados_a_Objetos

33

Vous aimerez peut-être aussi