Anda di halaman 1dari 40

UNIVERSIDAD MAYOR DE SAN SIMON

FACULTAD DE CIENCIAS Y TECNOLOGIA


DIRECCIÓN DE POSGRADO

“Herramientas para automatizar el proceso de


control de calidad enfocadas en BDD”

TRABAJO FINAL PRESENTADO PARA OBTENER EL


CERTIFICADO DE DIPLOMADO EXPERTO EN DESARROLLO DE
APLICACIONES EMPRESARIALES VERSIÓN I
.

POSTULANTE : Rodrigo Brian Perez Orozco


TUTOR : Ing. Mauricio G. Vizcarra Rivera

Cochabamba – Bolivia
2018

1
Agradezco a Dios y a mis seres queridos,
que fueron el faro que me guio hacia mis
metas y sueños, en especial a mis padres
que me demostraron que con esfuerzo y
perseverancia todo es posible.
“Solo una cosa convierte en imposible un
sueño: El miedo a fracasar.”
Paulo Coelho
Índice de Contenido
ÍNDICE DE CUADROS, GRAFICOS Y FIGURAS................................................................ 4
Resumen ................................................................................................................................... 5
Introducción .............................................................................................................................. 6
1 Generalidades................................................................................................................... 6
1.1 Antecedentes Generales ..................................................................................................... 6
1.2 Antecedentes Específicos ................................................................................................... 6
2 Metodología ...................................................................................................................... 7
3 Herramientas de automatización .................................................................................... 7
4 Cómo funcionan las Herramientas de automatización ................................................. 7
5 Ventajas y Desventajas de Automatizar casos de prueba ........................................... 7
5.1 Cuando es mejor usar Manual Testing .......................................................................... 8
5.2 Cuando es mejor Automatizar los casos de prueba ..................................................... 9
6 BDD para automatizar casos de prueba ........................................................................ 9
6.1 Gherkin ............................................................................................................................ 10
7 Herramientas de Automatización basadas en BDD .................................................... 13
7.1 Cucumber ........................................................................................................................ 13
7.2 TestLeft............................................................................................................................ 13
7.3 Easy B ............................................................................................................................. 15
7.4 JDave ............................................................................................................................... 16
7.5 Concordion ...................................................................................................................... 16
7.6 Jbehave ........................................................................................................................... 19
7.7 FitNesse .......................................................................................................................... 19
7.8 SpecFlow ......................................................................................................................... 21
7.9 Cypress............................................................................................................................ 22
7.10 Ranorex ........................................................................................................................... 23
7.11 Sahi Pro ........................................................................................................................... 24
7.12 WatiN ............................................................................................................................... 26
7.13 TestingWhiz .................................................................................................................... 27

2
3

7.14 Selenium.......................................................................................................................... 28
7.15 Telerik Test Studio.......................................................................................................... 30
8 Jenkins............................................................................................................................. 31
9 JMeter .............................................................................................................................. 32
10 PostMan .......................................................................................................................... 33
11 Tabla Comparativa ......................................................................................................... 35
12 Conclusiones................................................................................................................... 37
13 Bibliografía ...................................................................................................................... 37

3
4
ÍNDICE DE CUADROS, GRAFICOS Y FIGURAS
Ilustración 1: Comparación BDD y TDD .............................................................................. 10
Ilustración 2: Logo de Cucumber .......................................................................................... 13
Ilustración 3: Herramientas para TestLeft ............................................................................ 14
Ilustración 4: Integración Continua con TestLeft ................................................................. 14
Ilustración 5: Ejemplo BDD easy B....................................................................................... 15
Ilustración 6: EasyB prueba de integración ......................................................................... 15
Ilustración 7: EasyB prueba unitaria..................................................................................... 16
Ilustración 8: Ejemplo BDD en EasyB 2 ............................................................................... 16
Ilustración 9: Concordion estructura..................................................................................... 17
Ilustración 10: Concordion Ejemplo dividir Nombres .......................................................... 17
Ilustración 11: Concordion instrumentos.............................................................................. 18
Ilustración 12: Concordion sintaxis Markdown .................................................................... 18
Ilustración 13: Concordion Ejemplo dividir nombres........................................................... 18
Ilustración 14: Comandos Concordion ................................................................................. 19
Ilustración 15: FitNesse Ejemplo 1 ....................................................................................... 20
Ilustración 16: FitNesse Ejemplo SLIM ................................................................................ 20
Ilustración 17: Cypress Ejemplo ........................................................................................... 23
Ilustración 18: Ranorex Ejemplo ........................................................................................... 24
Ilustración 19: Sahi Pro Ejemplo........................................................................................... 25
Ilustración 20: WatiN Ejemplo ............................................................................................... 27
Ilustración 21: Testing Whiz Navegadores .......................................................................... 28
Ilustración 22: Selenium IDE ................................................................................................. 29
Ilustración 23: Selenium ejecución de pruebas ................................................................... 30
Ilustración 24: Telerik Test Studio IDE ................................................................................. 31
Ilustración 25: Integración continua con Jenkins ................................................................ 31
Ilustración 26: Herramientas que pueden trabajar con Jenkins ........................................ 32
Ilustración 27: Características de Jenkins ........................................................................... 33
Ilustración 28: Ejemplo Postman .......................................................................................... 34

4
5

Resumen
Las herramientas de automatización de pruebas tienen como objetivo el simplificar el trabajo del
equipo de QA, ejecutando de manera automática ciertas pruebas que ya fueron ejecutadas por
el QA manual previamente, sin embargo implementar la automatización de casos de prueba tiene
ciertos puntos negativos: automatizar casos de prueba requiere una gran inversión inicial,
requiere tiempo de entrenamiento con las herramientas; puntos positivos: reducir el tiempo que
necesita un QA en verificar la calidad del proyecto, ya que con automatización será más rápido
encontrar fallas.
Varias herramientas de automatización utilizan Behavior-Driven Development (BDD) o en español
Desarrollo guiado por comportamiento, que es una técnica ágil de desarrollo de software, el cual
consiste en hacer uso de un vocabulario que sea accesible para personas con o sin conocimiento
técnico. Junto con BDD se utiliza Gherkin que es una estructura para documentar ejemplos de
los casos de prueba que se deben realizar en la aplicación, usando la estructura de Given, When,
Then puede llegar a describir cualquier caso de prueba como una funcionalidad que cualquier
persona seria capaz de entender. Existen varios tipos de herramientas de automatización de
casos de pruebas y del control de calidad: Herramientas de diseño de pruebas, de interfaz de
usuario, de carga y rendimiento, de gestión de pruebas y de análisis estático.
Algunas de las herramientas más importantes son: Cucumber, TestLeft, Easy B, JDave,
Concordion, JBehave, FitNesse, SpecFlow, Cypress, Ranorex, Sahi Pro, WatiN, TestingWhiz,
Selenium, Telerik Test Studio, Jenkins, Jmeter y Postman.

5
6

Introducción
En el desarrollo de aplicaciones empresariales un factor importante es el control de calidad del
producto, que se encarga el equipo de QA (Que es Quality Assurance?, 2018) realizando una
verificación de las características de la aplicación y verificando que la cantidad de bugs (errores)
sea la mínima posible.
Es imposible que una aplicación no tenga ni un solo bug o que de vez en cuando los
requerimientos no sean cumplidos como se los esperaba, el equipo de QA (Que es Quality
Assurance?, 2018) tiene que estar pendiente de que los nuevos cambios no rompan las antiguas
funcionalidades y dado que no es posible llevar un control de calidad al 100%, se buscaron formas
de reducir el tiempo y esfuerzo en el control de la calidad, de ahí surgen las herramientas para
automatización del control de calidad.
La automatización del control de calidad se lleva acabo usando herramientas que hacen posible
la ejecución automática de pasos necesarios para la verificación de un caso de prueba,
actualmente existen varias herramientas para automatización de casos de prueba con distintos
enfoques al proceso de desarrollo de software, sin embargo el proceso que más se utiliza es el
Behavior Drive Development (BDD) (AgileAlliance, 2018), siendo un proceso que mejora la
comunicación entre equipos técnicos y no técnicos, y está más enfocado y basado en el
comportamiento del sistema, por éstas razones las herramientas para automatización que usan
BDD (AgileAlliance, 2018) son las más usadas actualmente en el desarrollo de aplicaciones.
1 Generalidades
1.1 Antecedentes Generales
A medida que una aplicación va creciendo, adquiriendo nuevas características se hace más difícil
el poder controlar la calidad de la aplicación, de ahí surgen las herramientas para automatizar el
proceso de control de calidad. Un gran apoyo para realizar esta investigación fue el internet donde
en general se encontró la mayor parte de la información, los tipos de herramientas y hacía que
tipo de pruebas están enfocados.
1.2 Antecedentes Específicos
Actualmente existen demasiadas herramientas para automatizar el control de calidad, el presente
documento servirá como una guía para conocer las herramientas que utilizan BDD (Behavior-
Data Driven) (AgileAlliance, 2018), que pertenezcan a cualquiera de los tipos de herramientas de
automatización:
 Herramientas de diseño de pruebas (Test Desing tools)
 Interfaz Gráfica de usuario (GUI Test Drivers)
 Herramientas de Carga y Rendimiento (Load and Performance Tools)
 Herramientas de Gestión de pruebas (Test Management Tools)
 Herramientas de evaluación de test (Test Evaluation Tools)
 Herramientas de análisis estático (Static Analysis tools)

6
7

2 Metodología
Para el presente trabajo se utilizarán los siguientes métodos de investigación:
 Método Bibliográfico, debido a que se realizará 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 Plan de
Emergencia.
3 Herramientas de automatización
El objetivo de las herramientas de automatización de pruebas, es el de simplificar lo más posible
el esfuerzo dedicado a realizar pruebas. Estas herramientas son capaces de ejecutar de manera
automática las pruebas realizadas por un QA (Que es Quality Assurance?, 2018), generar
reportes y comparar resultados con antiguas ejecuciones de pruebas. El método o proceso usado
para implementar este tipo de automatización es llamado marco de automatización de pruebas
(test automation framework).
La demanda por la automatización en la industria del software se fue incrementado a lo largo de
los años y existen muchas herramientas para automatizar el control de la calidad, pero en este
documento se hablará de solo unas cuantas de ellas.
4 Cómo funcionan las Herramientas de automatización
Las herramientas de automatización ejecutan una serie de pasos para verificar un caso de
prueba, pero a diferencia de las pruebas unitarias y las pruebas de integración, estas se usan
para automatizar pruebas más complejas, el caso más claro siendo las pruebas de la interfaz
gráfica de una aplicación. Ejemplo para probar: un usuario puede ingresar correctamente a la
aplicación:
 Ingresar Usuario
 Ingresar Contraseña
 Hacer clic en ingresar
 Verificar que el usuario pudo ingresar al sistema
Estos son los pasos que un QA (Que es Quality Assurance?, 2018) tiene que realizar
manualmente para verificar que un usuario puede ingresar a la aplicación.
Cuando se termina una nueva versión del proyecto, el equipo de QA (Que es Quality Assurance?,
2018) tiene que verificar el funcionamiento correctamente y para optimizar el tiempo del equipo,
se decide automatizar algunos casos de prueba, no solo se utilizan para la interfaz gráfica, se
puede automatizar pruebas a la base de datos a las API (¿Qué es una API y para que sirve?,
2018) del proyecto, etc.
5 Ventajas y Desventajas de Automatizar casos de prueba
La mayoría de las personas piensan que automatizar los casos de prueba solo puede traer
beneficios, pero no siempre es así, es necesario saber qué ventajas y desventajas tiene, para
conocer cuándo debería ser usado. (When to Automated your testing (and When Not), 2018)
Los mitos de la automatización de pruebas son:

7
8

 Automatizar los casos de prueba siempre mejorará la calidad del software.


 Todo proyecto de desarrollo de aplicaciones o equipo de QA (Que es Quality
Assurance?, 2018) puede usar herramientas de automatización. (When to Automated
your testing (and When Not), 2018)
Estos puntos no son 100% reales como piensa la mayoría de personas que han trabajado poco
o nada con automatización de casos de prueba, las desventajas de la automatización son:
 Automatizar casos de prueba requiere una inversión inicial grande pero pueden
producir un retorno de inversión más alto.
 Se requiere tiempo de entrenamiento y habilidad para ser alguien exitoso con una
herramienta de automatización.
 Toda aplicación, empresa o proyecto que utilice automatización todavía realiza
casos de prueba en forma manual. De hecho, en la industria de software actual se
estima que al menos más del 70% de las pruebas de control que se realizan son de
forma manual. (When to Automated your testing (and When Not), 2018)
La mayoría de las empresas todavía realizan pruebas de forma manual por sus ventajas:
 Tiempo: El equipo de QA (Que es Quality Assurance?, 2018) encargado de realizar
las pruebas no tiene que invertir tiempo investigando sobre que herramientas de
automatización que pueden usar, ni como aprender a usarlas.
 La Complejidad de la Aplicación: Algunas aplicaciones son tan complejas que es
muy difícil o imposible el aplicar pruebas automatizadas en ellas.
 Costo: Muchas empresas optan por no usar automatización para ahorrar el costo
de las herramientas. (When to Automated your testing (and When Not), 2018)
5.1 Cuando es mejor usar Manual Testing
Hay casos en los que automatizar casos de prueba ofrece muy poco o nulo valor al proyecto, esto
por distintos factores:
 Validación Subjetiva: Algunas funciones de las aplicaciones deben ser validadas
subjetivamente por humanos como la usabilidad o la experiencia del usuario, para
estos casos la ejecución de pruebas manuales es la única opción.
 Nueva o cambio de funcionalidad: Para nuevas funciones en la aplicación que aún
están en desarrollo y están evolucionando/cambiando constantemente, automatizar
casos de pruebas para cada uno y tener que actualizarlos también es una pérdida de
tiempo innecesaria.
 Desarrollo Estratégico: Para funciones estratégicas de la aplicación lo mejor es
que el equipo de QA (Que es Quality Assurance?, 2018) tenga atención específica en
todos los detalles, por lo cual sería mejor ejecutar casos de prueba manualmente.
 Funcionalidades muy complejas: Las funcionalidades de una aplicación que son
extremadamente complejas, ya que sería mejor ejecutar las pruebas manualmente,
para ahorrar costos y tiempo. (When to Automated your testing (and When Not), 2018)

8
9

5.2 Cuando es mejor Automatizar los casos de prueba


Hay muchos casos de prueba que pueden ser automatizados y que si representan un beneficio
para el equipo y la aplicación:
 Pruebas de regresión (Regression Testing): Para probar funcionalidades que ya
fueron probadas, por ejemplo, el login de una aplicación,
 Pruebas de Humo (Smoke Testing): Son pruebas realizadas para tener un control
de la calidad en un alto nivel, es decir no son pruebas a fondo sobre todas las
características de la aplicación.
 Pruebas estáticas y repetitivas: Son pruebas que se realizan repetidamente y no
cambian en el paso del tiempo.
 Pruebas impulsadas por datos (Data Driven Testing): Son pruebas en las que el
mismo caso se debe validar con varios tipos de entradas y salidas.
 Pruebas de carga y rendimiento: Estas pruebas no son posibles de ejecutarse
manualmente (When to Automated your testing (and When Not), 2018)
6 BDD para automatizar casos de prueba
Durante los últimos años la automatización de casos de prueba fue ganando bastante popularidad
entre las empresas y equipos de desarrollos de aplicaciones, una gran cantidad de estas
herramientas han optado usar una técnica ágil en específico, BDD (AgileAlliance, 2018). (Medium:
Cucumber BDD (Part 1): Starting with Feature Mapping, 2018)
Behavior-Driven Development (BDD) (AgileAlliance, 2018) o en español Desarrollo guiado por
Comportamiento, es una técnica ágil de desarrollo de software propuesta por Dan North en 2003
como una respuesta a la ineficacia del método Test Driven Development (TDD) (Que es TDD,
2017), mezclando buenas prácticas de TDD (Que es TDD, 2017) y el método Domain-Driven
Design (DDD), haciendo uso de un vocabulario preciso, accesible, descriptivo e inconsistente
para minimizar el desentendimiento en el equipo de desarrollo. (Medium: Cucumber BDD (Part
1): Starting with Feature Mapping, 2018)

9
10

Ilustración 1: Comparación BDD y TDD


Fuente: Thaliana Ashen G. (2017), Cucumber BDD. [Figura] Recuperado de
https://medium.com/agile-vision/starting-with-bdd-for-collaborative-development-in-agile-
environments-5fb034078b3c
Existen muchas herramientas que ayudan a implementar BDD (AgileAlliance, 2018) en estos
días, tomando en cuenta que BDD (AgileAlliance, 2018) trata sobre comportamientos, las
historias y los tests deben seguir una estructura específica para que así la herramienta pueda
entender e interpretar todo correctamente. Ejemplo:
 Test
1. Dado un contexto inicial (Given)
2. Cuando ocurre un evento (When)
3. Entonces pasa algo (Then)
BDD (AgileAlliance, 2018) es una metodología ágil, y como toda metodología ágil es iterativa e
incremental, el QA (Que es Quality Assurance?, 2018), debe encargarse de que los
requerimientos sean claros, y obtener ejemplos de cómo deberían funcionar estos para preparar
las pruebas. Las palabras Given, When y Then son muy buenas guías para la creación de pruebas
para un requerimiento, esta forma de crear pruebas para el control de calidad se usa tanto en
Manual testing (Pruebas Manuales) como en Automation Testing (Pruebas automatizadas), BDD
(AgileAlliance, 2018) usa la estructura Gherkin. (Medium: Cucumber BDD (Part 1): Starting with
Feature Mapping, 2018)
6.1 Gherkin
Cuando se empieza a desarrollar software es muy difícil saber exactamente qué es lo que quiere
una persona, la parte más difícil en desarrollar software es decidir que desarrollar. Una manera
más simple de definir lo que se desea es plantear ejemplos que describan un comportamiento

10
11
real del sistema a desarrollar, utilizando un lenguaje que cualquier persona pueda entender. Para
comprender a cabalidad mejor esta parte, es mejor utilizar un ejemplo:
 Si un cliente ingresa el número de una tarjeta de crédito, que no sea de 16 dígitos,
al enviar un formulario, un mensaje deberá ser mostrado explicando que el campo no
contiene el número de dígitos necesario. (The cucumber book, 2012)
Si vemos el ejemplo, se puede notar que el comportamiento está bastante definido, lo suficiente
como para que un desarrollador empiece a trabajar en él, y es entendible tanto para un
desarrollador como para cualquier otra persona, como un cliente, ahora la pregunta es, como
escribir buenos casos de prueba (Test cases) para este o cualquier otro requerimiento del
sistema, se debe lograr que los casos de prueba sean entendibles para cualquier persona del
equipo, incluso para el cliente, ahí es donde nace Gherkin. (The cucumber book, 2012)
Gherkin es una estructura para documentar ejemplos de lo que se espera que pueda realizar la
aplicación, siendo su principal meta la legibilidad, logrando que la forma en que está escrito un
caso de prueba se pueda leer como si fuera parte de la documentación. (The cucumber book,
2012)
Por ejemplo, tomamos el caso del número valido de una tarjeta de crédito, al realizar alguna
compra por internet, al usar Gherkin el lenguaje por defecto es el inglés, aunque existen maneras
de sobrescribir las palabras importantes de Gherkin para que se soporte otros lenguajes:
 Al momento de que un usuario usa una aplicación, puede cometer varios errores
al ingresar el número de su tarjeta de crédito. Nosotros debemos ayudar en lo posible
a evitar perder usuarios en una parte importante de la transacción. (The cucumber
book, 2012)
Background:
Given I have choosen some items to buy
And I am about to enter my credit card details
Scenario: Credit Card number too short
When I enter a card number that’s only 15 digits long
And all the other details are correct
And I submit the form
Then The form should be redisplayed
And I should see a message advising me of the correct number of digits
Scenario: Expiry date invalid
When I enter a card expiry date that’s in the past
And all the other details are correct
And I submit the form
Then the form should be redisplayed
And I should see a message telling me the expiry date must be wrong

11
12
Los archivos Gherkin deben tener una extensión .feature, y son guardados en texto plano, eso
quiere decir que pueden ser leídos y editados por herramientas de edición simples. (The
cucumber book, 2012)
Como se puede ver en ejemplo hay palabras que están en negrilla, debido a que esas palabras
forman parte de la nomenclatura especial (Palabras reservadas) que deben usarse para describir
el caso de prueba, la siguiente lista contiene todas las palabras reservadas de Gherkin en inglés:
 Feature
 Background
 Scenario
 Given
 When
 Then
 And
 But
 *
 Scenario Outline
 Examples (The cucumber book, 2012)
Todo archivo Gherkin empieza con la palabra clave Feature, donde se describe la historia de
usuario de la que se realizara un caso de prueba, después viene la palabra clave Scenario donde
se describe la situación planteada, un solo Feature suele tener varias situaciones posibles, un
Scenario se puede describir como el caso de prueba en sí, la estructura del caso de prueba debe
seguir la misma que del ejemplo. Given, When, Then son las palabras claves para seguir los
pasos del caso de prueba, describen exactamente el escenario que se está realizando, también
se usan las palabras clave And y But para describir mejor las condiciones del escenario. (The
cucumber book, 2012)

12
13

7 Herramientas de Automatización basadas en BDD


7.1 Cucumber

Ilustración 2: Logo de Cucumber


Fuente: Anónimo (2011), Genesys Guru Blog. [Figura] Recuperado de
http://genesysguru.com/blog/blog/2011/07/22/genesys-business-driven-testing/
Cucumber es una herramienta que soporta Behavior-Driven Development (BDD) (AgileAlliance,
2018), ofrece una manera de escribir test que cualquier miembro del equipo pueda entender sin
importar su conocimiento en el área de QA (Que es Quality Assurance?, 2018), al utilizar el
lenguaje Gherkin. (“What is Cucumber Testing Tool?”, 2018)

Fue originalmente desarrollado en el lenguaje de programación Ruby (Ruby, 2018), y


originalmente solo soportaba Ruby (Ruby, 2018), pero ahora tiene también compatibilidad con
Java (Java, 2018), JavaScript (Javascript, 2018), Scala, Perl (Perl, 2018), PHP (¿Qué es PHP?,
2018), Python (Python, 2018) y otros. Cucumber es capaz de generar reportes donde se vea a
detalles los resultados de las pruebas ejecutadas. (“What is Cucumber Testing Tool?”, 2018)
A continuación se destaca algunas características que tiene Cucumber:
 No se necesita pagar para usarlo
 Cucumber como herramienta mantiene los requerimientos y las condiciones de los
casos de prueba en un solo lugar
 Está restringido solo a automatización en Web. (“What is Cucumber Testing
Tool?”, 2018)
7.2 TestLeft
TestLeft es un framework para la automatización de casos de prueba, sirve para crear y ejecutar
pruebas funcionales y de UI para aplicaciones web y para el escritorio de Windows. Puede crear
casos de prueba en C# (C# Guide, 2018), Visual Basic .NET (Introduccion a Visual Basic, 2018)
o en cualquier otro lenguaje .NET.
No viene por defecto con soporte de BDD (AgileAlliance, 2018) pero puede integrarse fácilmente
con otras herramientas como Cucumber, SpecFlow y JBehave entre otros. (“SmartBear-TestLeft”,
2018)

13
14

Ilustración 3: Herramientas para TestLeft


Fuente: Anónimo (2018), Smart Bear – TestLeft [Figura] Recuperado de
https://smartbear.com/product/testleft/overview/
Es muy sencillo de agregar al ciclo de vida del proyecto, y al Continous Integration, ya que es
compatible con Jenkins, Team Foundation Service (Visual Studio, 2018) entre otros. (“SmartBear-
TestLeft”, 2018)

Ilustración 4: Integración Continua con TestLeft


Fuente: Anónimo (2018), Smart Bear – TestLeft [Figura] Recuperado de
https://smartbear.com/product/testleft/overview/

14
15

7.3 Easy B
EasyB fue creado por Andrew Glover y en sus palabras es un framework para la verificación de
historias de usuario construido en el espíritu de BDD (AgileAlliance, 2018), “easyb is story
verification framework built in the spirit of behavior driven development”, fue desarrollado en su
mayoría usando Groovy y echo para funcionar con Groovy y Java (Java, 2018). Un ejemplo de
un caso de prueba en easyB es:

Ilustración 5: Ejemplo BDD easy B


Fuente: Steven Devijver (2008), Smart Bear – DZone [Figura] Recuperado de
https://dzone.com/articles/easyb-introducing-conversation
También easyB soporta varias formas de verificación de resultados, siendo posible usar
shouldBeEqual, shouldBeequalTo, shouldEqual, shouldNotBe. ( “SmartBear – DZone”, 2008)
El framework viene con un plug-in que soporta el manejo de base de datos usando DbUnit, gracias
al plug-in easyB soporta pruebas de integración. ( “SmartBear – DZone”, 2008)

Ilustración 6: EasyB prueba de integración


Fuente: Steven Devijver (2008), Smart Bear – DZone [Figura] Recuperado de
https://dzone.com/articles/easyb-introducing-conversation
EasyB también se puede usar para realizar test unitarios, en caso de un test común seria la
imagen y la imagen sería la de un test unitario, pero en easyB. ( “SmartBear – DZone”, 2008)
15
16

Ilustración 7: EasyB prueba unitaria


Fuente: Steven Devijver (2008), Smart Bear – DZone [Figura] Recuperado de
https://dzone.com/articles/easyb-introducing-conversation

Ilustración 8: Ejemplo BDD en EasyB 2


Fuente: Steven Devijver (2008), Smart Bear – DZone [Figura] Recuperado de
https://dzone.com/articles/easyb-introducing-conversation
7.4 JDave
JDave es un Behavior Driven Development framework para Java (Java, 2018) que provee una
manera más sencilla de especificar el comportamiento de las clases. Tiene integración con
JMOCK2 y Hamcrest, es muy fácil de aprender y es un framework más orientado a
desarrolladores. (JDave, 2017)
7.5 Concordion
Concordion es un framework para automatizar casos de pruebas que originalmente fue
desarrollado por David Peterson y ahora es mantenido por un equipo de contribuidores.
(“Concordion”, 2018)
Concordion usa aspectos de especificaciones, Specification by Example (SBE) en inglés y BDD
(AgileAlliance, 2018) para elaborar su estructura. (“Concordion”, 2018)

16
17
Cuando se trata de escribir un caso de prueba en Concordion, se debe describir el
comportamiento deseado en términos generales y sus criterios de aceptación, junto con varios
ejemplos específicos para cada caso. (“Concordion”, 2018)
Por ejemplo, tomemos una tienda por internet y creemos los casos de pruebas, definimos como
un criterio de aceptación “Todas las compras de 50$ o menos tendrán envió gratis”, ejemplo para
el caso de prueba seria “Una compra de 49.99$ tiene que pagar por él envió” y otro seria “Una
compra de 50.00$ tiene envió gratis”. Es muy importante que para cada criterio de aceptación se
definan todos los ejemplos posibles. (“Concordion”, 2018)

Ilustración 9: Concordion estructura


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/discussing/java/markdown/
Tomemos otro ejemplo para ver la estructura que usa Concordion, sobre el ejemplo de dividir
nombres, por ejemplo, Jane Smith se dividiría en Jane y en Smith, en Concordion se escribiría
así:

Ilustración 10: Concordion Ejemplo dividir Nombres


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/tutorial/java/markdown/

Este caso de prueba se usa el formato llamado Mark Down, en un archivo con extensión .md:

17
18

 El carácter # al principio de la línea crea el encabezado, donde el nivel del


encabezado es determinado por el número de #.
 Las líneas sin # son tratados como párrafos planos. (“Concordion”, 2018)
Para lograr hacer la especificación ejecutable, es necesario hacer una instrumentación utilizando
comandos, la instrumentación es invisible para los browser, pero es procesada por el código del
fixture. (“Concordion”, 2018)

Ilustración 11: Concordion instrumentos


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/tutorial/java/markdown/
El primer paso es seleccionar las palabras del ejemplo, que define el contexto (pre-condiciones),
acciones y resultados. En el ejemplo el contexto es Jane Smith, la acción es separar el nombre y
los resultados son el primer nombre Jane, y el apellido Smith. Usando la sintaxis Mark Down seria
así: (“Concordion”, 2018)

Ilustración 12: Concordion sintaxis Markdown


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/tutorial/java/markdown/
Usando un editor que soporte la sintaxis Mark Down se vería así: (“Concordion”, 2018)

Ilustración 13: Concordion Ejemplo dividir nombres


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/tutorial/java/markdown/
18
19
Después se añaden los comandos de Concordion: (“Concordion”, 2018)

Ilustración 14: Comandos Concordion


Fuente: Anónimo (2018), Concordion [Figura] Recuperado de
https://concordion.org/tutorial/java/markdown/
Estos comandos son:
 Definiendo el contexto al asignar a la variable #name el valor Jane Smith
 Ejecutando la acción, ejecutando el método Split () con la variable #name y
retornando una variable #result
 Verificando los resultados, revisando que la variable #result.firstName contenga el
valor Jane y la variable #result.lastName tenga el valor Smith. (“Concordion”, 2018)
7.6 Jbehave
JBehave es un framework para el manejo de BDD (Behavior Driven Development) (AgileAlliance,
2018), es un framework Open source exclusivamente para Java (Java, 2018).
Puede generar reportes en XML, HTML o en modo texto, y tiene compatibilidad con distintas
herramientas e IDEs como Eclipse (Eclipse, 2018), IntelliJ (IntelliJ, 2018), JUnit, Maven, Selenium
y Apache ant entre otros. (JBehave, 2017)
7.7 FitNesse
FitNesse es un framework que está totalmente integrado a un wiki, es open source, y es un
servidor wiki, porque este te permite crear tu propia página web en donde las tablas de los casos
de prueba son creadas, estas tablas solo contienen la información de las pruebas. (“Getting
Started with FitNesse”, 2018)
Soporta test de regresión y el estilo black box, busca que los desarrolladores como los QA (Que
es Quality Assurance?, 2018) colaboren para diseñar los casos de prueba. (“Getting Started with
FitNesse”, 2018)
FitNesse se puede usar para realizar pruebas unitarias ya que es muy parecido a JUnit, pero
también tienen ciertas diferencias porque las pruebas están en formas de simples tablas las
cuales puedes ser usadas por cualquier miembro del equipo. Algunos de sus beneficios son:
 Retroalimentación rápida, ya que al automatizar los casos de prueba estos se
pueden ejecutar más rápido y más seguido.
 Soporta BDD (AgileAlliance, 2018).
 Los resultados son determinísticos y se resaltan en Rojo y en Verde.
 Las tablas están definidas en términos de entradas y de salidas esperadas.
 Funciona con múltiples lenguajes de programación como Java (Java, 2018), C#
(C# Guide, 2018), Team Foundation Service (Visual Studio, 2018), Python (Python,
2018), etc. (“Getting Started with FitNesse”, 2018)

19
20

Ilustración 15: FitNesse Ejemplo 1


Fuente: Anónimo (2018), Getting Starting With FitNesse [Figura] Recuperado de
https://www.softwaretestinghelp.com/getting-started-with-fitnesse-a-collaboration-tool-for-
testers-and-developers/
En la imagen previa, se puede ver un ejemplo de una calculadora, que viéndolo en texto plano
seria así:

Ilustración 16: FitNesse Ejemplo SLIM


Fuente: Anónimo (2018), Getting Starting With FitNesse [Figura] Recuperado de
https://www.softwaretestinghelp.com/getting-started-with-fitnesse-a-collaboration-tool-for-
testers-and-developers/

En la primera línea dice a FitNesse que se usara el sistema SLIM (Simple List Invocation Method),
SLIM tiene su SLIM Runner y un SLIM Executer, lo que hace es convertir los casos de prueba en
simples instrucciones y esas instrucciones se pasan a SLIM Executer el cual redirecciona el
código a llamar al sistema que se está probando. (“Getting Started with FitNesse”, 2018)
En la segunda línea se define la dirección de la aplicación que se ira a probar. (“Getting Started
with FitNesse”, 2018)
En la tercera línea se encuentra el nombre de la clase, en este caso “Calculadora”. (“Getting
Started with FitNesse”, 2018)
En la cuarta línea:

20
21

 Las primeras dos columnas son los parámetros de entrada al método que se está
probando.
 Las ultimas 4 columnas que tienen “?”, son los métodos de la clase, en este caso,
suma, resta, multiplicación, y división, y contienen sus resultados esperados
respectivamente. (“Getting Started with FitNesse”, 2018)

Ilustración 17: FitNesse Ejemplo 2


Fuente: Anónimo (2018), Getting Started With FitNesse [Figura] Recuperado de
https://www.softwaretestinghelp.com/getting-started-with-fitnesse-a-collaboration-tool-for-
testers-and-developers/

Se puede ver como en FitNesse se ejecutan test basados en las filas de una tabla, se usan
distintos tipos de tablas para distintos tipos de casos de prueba:
 Column Fixture: es el método más usado y del que se hizo un ejemplo
previamente, donde las filas representan los datos de entrada y salida para los
distintos métodos.
 Row Fixture: se utilizan para probar consultas que devuelven un conjunto de
valores.
 Action Fixture: se utilizan para ejecutar casos de pruebas donde se necesita una
secuencia de eventos, como hacer clic en un botón, verificar datos, etc. (“Getting
Started with FitNesse”, 2018)
7.8 SpecFlow
SpecFlow es una herramienta Open Source, es conocido como el Cucumber para .NET, debido
a la similitud que tienen en varios aspectos, de hecho, SpecFlow se desarrolló tomando como
inspiración a Cucumber. (“Specflow”, 2018)
Utiliza el formato Gherkin en inglés para describir las historias de usuario. SpecFlow es basado
en .NET, por lo que se puede integrar con Visual Studio, sin embargo también es posible usarse
desde la línea de comandos. (“Specflow”, 2018)

21
22
SpecFlow soporta varios frameworks para realizar pruebas como: MSTest, NUnit2 y NUnit3, xUnit
2 y MbUnit, tiene una extensión llamada SpecFlow+ que añade funcionalidades, como la
integración con Visual Studio Test Explorer, que es un ejecutor de casos de pruebas con
opciones avanzadas en ejecución de pruebas, crea reportes en HTML, XML y JSON. (“Specflow”,
2018).
7.9 Cypress
Cypress es un framework para realizar casos de pruebas que está basado en JavaScript, que no
utiliza Selenium. Fue construido usando Mocha, que es también un framework basado en
JavaScript (Javascript, 2018) que se ejecuta en los navegadores, realizando pruebas de marea
asíncrona. Cypress también puede soportar BDD (AgileAlliance, 2018) o TDD (Test Driven
Development) (Que es TDD, 2017). (“DZone: Why should you switch to Cypress for Modern Web
Testing.”, 2018)
Cypress fue desarrollado por Brian Mann, esta herramienta cuenta con algunas características
especiales:
 Espera Automática: Cypress automáticamente espera hasta que el DOM se
cargue, que todos los elementos sean visibles, que las animaciones sean
completadas, y que todas las llamadas con XHR y AJAX hayan terminado, ahorrando
el trabajo de definir esperas explícitas o implícitas.
 Recargas en tiempo real: Cypress es lo suficientemente inteligente como para
saber que después de guardar el archivo donde se tiene los casos de pruebas
(test_spex.js), estos lo más seguro es que serán ejecutados, entonces Cypress los
ejecuta automáticamente después de que los guardes.
 Su arquitectura: La mayoría de las herramientas para realizar casos de pruebas
funcionan ejecutándose fuera del browser y ejecutando por vía remota comandos a
través de la red. Cypress en cambio hace lo opuesto, ejecuta los casos de prueba en
el mismo ciclo que la ejecución de la aplicación.
 Trabaja en la capa de la red: Cypress también opera al nivel de la red, leyendo y
alternando el tráfico de red en el camino, esto no solo hace que Cypress pueda
modificar todo lo que entra y sale del navegador, sino que también puede cambiar el
código que pueda interferir con las funciones de automatización.
 Una nueva forma de realizar control de calidad: Teniendo todo el control sobre tu
aplicación, el tráfico de red, y acceso nativo a cualquier host, Cypress puede usarse
para probar todos los aspectos posibles de la aplicación. (“DZone: Why should you
switch to Cypress for Modern Web Testing.”, 2018)

22
23

Ilustración 17: Cypress Ejemplo


Fuente: Shivam Bharadwaj (2018), Dev Ops Zone [Figura] Recuperado de
https://dzone.com/articles/why-should-you-switch-to-cypress-for-modern-web-te/
7.10 Ranorex
Ranorex Studio es un muy completo framework para automatización de casos de prueba, para
aplicaciones móviles y de escritorio, tiene capacidades de generar reportes, tiene un IDE
completamente integrado y es completamente de pago. (Ranorex, 2018)
Ranorex Studio impulsa a los equipos de QA (Que es Quality Assurance?, 2018) con una
herramienta capas de ejecutar pruebas para aplicaciones de escritorio, web y móviles,
automatizar casos de prueba en Windows y ejecutarlos de manera remota o local, se puede
ejecutar casos de prueba en ambientes reales de Android e iOS en simuladores/emuladores,
ejecuta las pruebas en paralelo y distintos navegadores como Chrome, Firefox, Safari, Microsoft
Edge y muchos más. (Ranorex, 2018)
Ranorex provee la capacidad de monitorear los resultados de las pruebas generando reportes
que incluyen, gráficos, capturas de pantalla, y los errores encontrados de manera detallada de
manera que sea muy entendible para los QA (Que es Quality Assurance?, 2018), que se guarda
automáticamente en un archivo .pdf, este reporte puede personalizarse de acuerdo a las
necesidades del equipo, tiene soporte de JUnit por lo que se podrá incluir las pruebas que lo usen
en los reportes. (Ranorex, 2018)

23
24

Ilustración 18: Ranorex Ejemplo


Fuente: Anónimo (2018), Ranorex [Figura] Recuperado de https://www.ranorex.com
7.11 Sahi Pro
Sahi Pro es una herramienta para la automatización de pruebas para aplicaciones Web, para
aplicaciones de escritorio en Windows y para aplicaciones Java (Java, 2018). Soporta por defecto
automatización en pruebas que utilizan REST API (¿Qué es una API y para que sirve?, 2018),
también soporta múltiples navegadores que soportan javascript (Javascript, 2018) y usan Ajax,
como: Internet Explorer, Firefox, Chrome, Safari, Opera, Edge, etc. (SahiPro, 2018)
Sahi Pro tiene soporte para aplicaciones para iOS y Android, tiene la característica de espera
automática, que se refiere a que Sahi Pro esperará automáticamente hasta que la página termine
de cargarse y que toda actividad que involucre Ajax haya terminado, esto reduce el código un
50% más en comparación con otras herramientas donde la espera tiene que colocarse de forma
explícita. (SahiPro, 2018)
Algunas de sus características son:
 Tiene una interfaz para crear escenarios empresariales en formato .csv
 Todos los flujos funcionales se encuentran en librerías (Sahi scripts/Java)
 Los elementos son almacenados por separado en repositorios de archivos
 Todos los archivos para la automatización son archivos de texto que soportan
control de versiones.
 Soporta la ejecución de varios scripts, estos scripts pueden a su vez invocar otros
scripts, los datos almacenados en cada script se pueden compartir con otro script.

24
25

 Tiene un editor de texto basado en web, que ayuda a crear y organizar scripts,
escenarios y pruebas fácilmente, este editor es lo suficientemente inteligente que
provee al usuario sugerencias de cómo mejorar su código (Refactoring).
 Puede ejecutar pruebas y scripts de forma paralela.
 Los errores que se encuentran al realizar pruebas se guardan automáticamente
junto con una captura de pantalla.
 Genera reportes de las pruebas en formatos como HTML, XML, Junit, Excel y
otros, estos reportes son guardados en una base de datos para análisis históricos.
 Se puede integrar fácilmente con herramientas para integración continua, por
ejemplo para Jenkins Sahi no necesita estar instalada en el mismo lugar que Jenkins,
Jenkins puede ejecutar las pruebas en Sahi de manera remota, y enviar los reportes
a Jenkins. (SahiPro, 2018)

Ilustración 19: Sahi Pro Ejemplo


Fuente: Anónimo (2018), Sahi Pro [Figura] Recuperado de
https://sahipro.com/docs/introduction/whats-new-in-sahi-pro-v6.0.0.html

25
26

7.12 WatiN
WatiN es una abreviación para “Web Application Testing in .NET”, que se deriva de WaTiR que
es “Web Application Testing in Ruby”. WatiN soporta solamente dos navegadores, Internet
Explorer y Mozilla Firefox. Es una herramienta open source conocida por que es fácil de usar y
por qué su sintaxis es muy sencilla, está desarrollada en C# (C# Guide, 2018). (“WatiN”, 2018)
La manera en que interactúa con Internet Explorer es utilizando COM (Component Object Model),
mientras que con Firefox la interacción se realiza usando JSSH (JavaScript Shell Server), que es
una extensión de Firefox, JSSH es un plug-in que permite usar comandos de automatización.
(“WatiN”, 2018)
Al ser WatiN una herramienta que fue desarrollada a base de C# (C# Guide, 2018) puede trabajar
en conjunto con Visual Studio, NUnit o Gallio. WatiN se puede usar para pruebas de interfaz
gráfica, pruebas funcionales y pruebas de regresión. (“WatiN”, 2018)
Algunas de sus características son:
 Automatización a través de todos los elementos HTML.
 Puede encontrar varios elementos a través de sus atributos.
 Soporta Ajax.
 Puede ser usado con cualquier lenguaje .NET (“WatiN”, 2018)
Algunas de sus limitaciones son:
 Una limitación de WatiN es que los códigos de estado de HTTP no son mostrados
lo cual en realidad es una limitación del COM en la automatización en Internet
Explorer.
 Las versiones de Internet Explorer desde el 7 para adelante incluyen la capacidad
de usar un modo protegido, Protected Mode, este modo ocasiona problemas a WatiN
cuando trata de acceder a una página web, cuando se use en este tipo de versiones
de internet Explorer lo mejor es desactivar la opción de Protected Mode. (“WatiN”,
2018)

26
27

Ilustración 20: WatiN Ejemplo


Fuente: James Kovacs (2008), Running Watin Test on Vista [Figura] Recuperado de
http://jameskovacs.com/2008/06/18/running-watin-tests-on-vista/
7.13 TestingWhiz
TestingWhiz es una herramienta para la automatización de pruebas desarrollada por Cygnet
Infotech, soporta BDD (AgileAlliance, 2018) y TDD (Que es TDD, 2017) y usa una arquitectura
basada en objetos, puede ejecutar archivos del tipo .exe, .bat, DOS para ejecutar proyectos de
automatización. (“TestingWhiz”, 2008)
TestingWhiz permite grabar y guardar todos los controles web utilizando Object Eye®,
permitiendo un fácil acceso y edición para generar escenarios modulares para casos de prueba
complejos. También viene con un sistema de grabación integrador para ver todos los pasos que
se hicieron en las pruebas, hacer un clic, introducir un valor a un input, etc. (“TestingWhiz”, 2008)
Soporta distintos navegadores como Chrome, Firefox, Internet Explorer y Edge, viene con la
opción de Headless, que permite ejecutar las pruebas sin iniciar una instancia del navegador. Se
puede integrar con herramientas que te ayuden a manejar las actividades del equipo respecto a
27
28
pruebas como Visual Studio Team Service, TestRail, HP Quality Center entre otros, permitiendo
una mejora al generar reportes y optimizando el proceso de pruebas. (“TestingWhiz”, 2008)
Es muy fácil de integrar con herramientas de integración continua como Jenkins y Bamboo,
acelerando el proceso ágil y los ciclos dedicados a la ejecución de pruebas. (“TestingWhiz”, 2008)
TestingWhiz permite crear Bugs en herramientas que permiten llevar un control de las tareas,
bugs e historias de usuario del equipo, siendo perfectamente compatible con herramientas como
Jira, FogBugz, Mantis Bug tracker, Visual Studio Team Foundation Server. (“TestingWhiz”, 2008)
También tiene integración con bases de datos para ayudar a la base de datos de pruebas,
configuraciones y asegura que la validación de pruebas se realice en la aplicación completa y no
solo concentrarse en la UI, permitiéndote verificar el estado de la base de datos. (“TestingWhiz”,
2008)
Soporta pruebas para aplicaciones iOS y Android en entornos reales o de simulación.
(“TestingWhiz”, 2008)

Ilustración 21: Testing Whiz Navegadores


Fuente: Anónimo (2018), Testing Whiz [Figura] Recuperado de https://www.testing-
whiz.com/automated-cross-browser-testing
7.14 Selenium
Selenium es una herramienta open source para la automatización de pruebas en navegadores,
no se puede usar en aplicaciones de escritorio o en aplicaciones móviles. (“What is Selenium”,
2018)
Los scripts para Selenium pueden estar escritos en Java (Java, 2018), Python (Python, 2018),
C# (C# Guide, 2018), PHP (¿Qué es PHP?, 2018), Ruby (Ruby, 2018), Perl (Perl, 2018) y .Net, y
se los puede ejecutar en Windows, Mac o Linux, usando cualquier navegador como Mozilla
Firefox, Internet Explorer, Google Chrome, Safari, Opera entre otros. (“What is Selenium”, 2018)
28
29
Se puede integrar con herramientas como TestNG y JUnit para manejar casos de prueba y
generar reportes, ya que no tiene una manera nativa de generar reportes, también puede
integrarse con Maven, Jenkins y Docker para la integración continua. (“What is Selenium”, 2018)
Selenium cuenta con otras herramientas derivadas del propio selenium para poder trabajar:
 Selenium IDE (Intregrated Development Environment) es un plug-in de Firefox,
que es usado para ejecutar de manera rápida y frecuente casos de prueba y grabarlos.
El caos de prueba en el IDE son creados al grabar las interacciones del usuario con
el navegador. Estas pruebas pueden volver a reproducirse las veces que sea
necesario. La ventaja de usar Selenium IDE es que las pruebas grabadas a través del
plug-in pueden ser exportadas en diferentes lenguajes de programación como Java
(Java, 2018), Ruby (Ruby, 2018), Python (Python, 2018), etc. (“What is Selenium”,
2018)

Ilustración 22: Selenium IDE


Fuente: Anónimo (2018), What is Selenium [Figura] Recuperado de
https://www.edureka.co/blog/what-is-selenium/
 Selenium Grid, esta herramienta permite ejecutar varios scripts de pruebas al
mismo tiempo en distintos equipos. Esta ejecución en paralelo es lograda gracias a la
ayuda de la arquitectura Hub-Node, donde una maquina asumirá el rol de Hub y los
otras actuarán como nodos, la máquina principal, el Hub, controla la ejecución de
scripts de pruebas ejecutándose en varios navegadores dentro de varios sistemas
operativos, incluso las pruebas que se ejecutan en distintos Nodos pueden estar
escritas en distintos lenguajes de programación. (“What is Selenium”, 2018)

29
30

Ilustración 23: Selenium ejecución de pruebas


Fuente: Anónimo (2018), What is Selenium [Figura] Recuperado de
https://www.edureka.co/blog/what-is-selenium/
 Selenium WebDriver, que permite hacer llamadas directamente al navegador,
soporta 7 lenguajes de programación, Java (Java, 2018), C# (C# Guide, 2018), PHP
(¿Qué es PHP?, 2018), Ruby (Ruby, 2018), Perl (Perl, 2018), Python (Python, 2018)
y .Net, se puede utilizar en distintos sistemas operativos como, Windows, Mac, Linux,
Android e iOS, los diferentes WebDrivers son:
o Firefox driver (Gecko Driver)
o Chrome Driver
o Internet Explorer Driver
o Opera Driver
o Safari Driver
o HTM Unit Driver (“What is Selenium”, 2018)
7.15 Telerik Test Studio
Telerik Test Studio es una herramienta para la automatización de casos de prueba, que permite
grabar y reproducir pruebas de múltiples navegadores, incluyendo Internet Explorer, Google
Chrome, Mozilla Firefox y Safari, siendo 100% independiente del navegador obtiene de una
manera y más precisa el porcentaje de código cubierto por los casos de prueba. (Telerik, 2018)
Permite trabajar de manera sencilla con la interfaz gráfica, si hay varias pruebas que utilizan el
mismo elemento, este será referenciado por el explorador de elementos en vez de crearse uno
nuevo para cada prueba, de esta manera se usa elementos únicos que son actualizados según
se amerite en vez de crear y modificar varios elementos. Puede ejecutar varias pruebas en
paralelo a través de la ejecución de varios servidores. (Telerik, 2018)
Algunas de sus características son:
 Puede ejecutar pruebas para aplicaciones móviles en dispositivos reales o en
emuladores.
 Es fácil de integrarse con herramientas de integración continua como Jenkins,
Team Foundation server, etc.

30
31

 Permite realizar pruebas de carga y estrés en aplicaciones de escritorio, web y


móviles. (Telerik, 2018)

Ilustración 24: Telerik Test Studio IDE


Fuente: Anónimo (2018), Telerik [Figura] Recuperado de https://www.telerik.com/blogs/getting-
started-with-progress-test-studio-for-apis
8 Jenkins
Jenkins es una herramienta de integración continua, que provee servicios de integración continua
para el desarrollo de software que pueden utilizarse a través de línea de comandos o de la
aplicación web, es usado para realizar el deploy, generar el build y la ejecución de casos de
prueba automatizados. Las herramientas de integración continua sirven para mantener el flujo de
trabajo en el equipo de desarrollo, cuando se habla del término “build” se refiere a compilar el
código, ejecutar los tests unitarios y generar el paquete o el .exe, el término “deploy” se refiere a
que automáticamente el nuevo código compilado se instalará en los ambientes que corresponda,
puede ser en el ambiente de pruebas, en el ambiente de demostración o incluso en producción,
también puede ejecutar los casos de pruebas automatizados. (What is Jenkins?, 2018)

Ilustración 25: Integración continua con Jenkins


Fuente: Shwetha Sneha (2018), what is Jenkins? [Figura] Recuperado de
https://vmokshagroup.com/blog/what-is-jenkins/

31
32
Algunas de sus ventajas son:
 Jenkins es una herramienta open source.
 Cuenta con más de 1000 plug-ins para realizar distintas tareas.
 Es fácil crear plug-ins para Jenkins (What is Jenkins?, 2018)
El siguiente diagrama describe como Jenkins puede ser integrado con varias herramientas
DevOps:

Ilustración 26: Herramientas que pueden trabajar con Jenkins


Fuente: Shwetha Sneha (2018), What is Jenkins? [Figura] Recuperado de
https://vmokshagroup.com/blog/what-is-jenkins/
9 JMeter
JMeter es una herramienta Open Source para ejecutar pruebas de carga y estrés, que fue
desarrollada por Stefano Mazzochi. Se puede usar para analizar y medir el rendimiento de las
aplicaciones web respecto al número de usuarios y al número de llamadas que se realicen al
servicio, es decir usando JMeter se puede conocer el número de usuarios que pueden usar en
paralelo una aplicación web y el número de requests máximo que soportaría el servicio. (What is
JMeter?, 2018)
Algunas de sus ventajas son:
 Es totalmente gratuito.
 Es al 100% una aplicación de escritorio hecho en Java (Java, 2018) así que puede
correr en múltiples plataformas.
 Es muy fácil de instalar
 Puede ser integrado con otras herramientas como Bean Shell y Selenium para la
automatización de casos de pruebas. (What is JMeter?, 2018)

32
33

Ilustración 27: Características de Jenkins


Fuente: Anónimo (2018), What is JMeter? [Figura] Recuperado de
https://www.guru99.com/introduction-to-jmeter.html
10 PostMan
Postman es una herramienta que se utiliza para probar las llamadas a una aplicación REST sin
la necesidad de escribir código o tener que utilizar la interfaz gráfica de la aplicación, soporta
llamadas del tipo POST, GET, PUT, DELETE, es muy fácil de instalar y sencillo de usar, se utiliza
para verificar que todos los servicios estén funcionando correctamente de una manera rápida y
sencilla.

33
34

Ilustración 28: Ejemplo Postman


Fuente: Kevin Farmer (2018), What is Postman? [Figura] Recuperado de
https://www.digitalcrafts.com/blog/student-blog-what-postman-and-why-use-it

34
35

11 Tabla Comparativa
A continuación, se presentan tablas para comparar las herramientas presentes en el
documento.
Tabla 1: Tabla comparativa de herramientas de automatización

Aplicaciones Aplicaciones Aplicaciones Genera Reportes Ejecuta Pruebas


de Escritorio Web Móviles sin necesidad de en Paralelo
Otra Herramienta

Cucumber No Si No Si Si

TestLeft Si Si No Si Si

Easy B No Si No Si Si

JDave No Si No Si Si

Concordion No Si No Si Si

Jbehave No Si No Si Si

FitNesse No Si No Si Si

SpecFlow No Si No Si Si

Cypress No Si No Si Si

Ranorex Si Si Si Si Si

Sahi Pro Si Si Si Si Si

WatiN No Si No Si Si

TestingWhiz No Si Si Si Si

Selenium No Si No Si Si

Telerik Test Si Si Si Si Si
Studio

35
36

Graba y reproduce Soporta No Se puede integrar Es Open


ejecuciones Todos los necesita con herramientas de Source
Previas Browsers Waiters Continuos
Integration

Cucumber No Si No Si Si

TestLeft No Si No Si No

Easy B No Si No Si No

JDave No Si No Si Si

Concordion No Si No Si No

Jbehave No Si No Si Si

FitNesse No Si No Si Si

SpecFlow No Si No Si No

Cypress No Si Si Si No

Ranorex No Si No Si No

Sahi Pro Si Si Si Si No

WatiN No No Si Si Si

TestingWhiz Si Si No Si No

Selenium No Si No Si Si

Telerik Test Si Si No Si No
Studio

Elaboración Propia
La herramienta más utilizada actualmente es Cucumber, debido a su fácil integración con distintos
IDEs, así como con herramientas de integración continúa como Jenkins, soporta Gherkin de
manera nativa sin necesidad de usar algún plugin o herramienta extra.

36
37

12 Conclusiones
Behavior-Driven Development y Gherkin son lo más utilizado actualmente en el desarrollo de
software, debido a las ventajas que provee al proyecto:
 Los casos de prueba que usan BDD y Gherkin pueden ser entendidos por todo el
equipo, incluso por los que no tienen conocimientos técnicos.
 Son sencillos de aprender.
 Existe una gran variedad de herramientas que soportan BDD y Gherkin.
 El hecho de usar Gherkin y BDD facilita la mantenibilidad y creación de casos de
prueba, optimizando el tiempo que se utiliza en el control de calidad.
Las herramientas de automatización son muy útiles para optimizar el proceso de control de
calidad y obtener beneficios rápidamente, las herramientas más utilizadas actualmente son:
 Cucumber: Herramienta de automatización de casos de pruebas que es open
source, soporta todos los browsers, y se integra fácilmente con otras herramientas.
 Jenkins: Herramienta de integración continua, que cuenta con varios plug-in para
trabajar con múltiples herramientas, puede ser configurado para trabajar con cualquier
proyecto.
 JMeter: Herramienta para realizar pruebas de carga y estrés en aplicaciones web.
 Sahi Pro: Herramienta de gestión de pruebas, que permite al equipo gestión sus
casos de pruebas manuales y automatizadas.
Estas herramientas cumplen con los estándares de calidad para proveer una buena optimización
en el control de calidad.
13 Bibliografía
Libros consultados:
 Amodeo, E., (2015). Learning Behavior-driven Development with JavaSript,
Mumbai, India: Packt Publishing.
 Carter, J. (Ed), (2012). The cucumber book, United States of America: Pragmatic
Bookshelf.
Páginas web consultadas:
 Arturo L. (2018) Que es Quality Assurance? Recuperado de
https://www.analiticaweb.es/que-es-quality-assurance/
 AgileAlliance (2018) Recuperado de https://www.agilealliance.org/glossary/bdd
 ¿Qué es una API y para que sirve? (2018) Recuperado de
https://www.abc.es/tecnologia/consultorio/20150216/abci--201502132105.html
 Joe F. Alex D. (2018) When to Automated your testing (and When Not) Recuperado
de https://www.oracle.com/technetwork/cn/articles/when-to-automate-testing-1-
130330.pdf
 Carlos H (2017) Que es TDD. Recuperado de https://openwebinars.net/blog/que-
es-tdd-test-driven-development/
37
38

 Gamage T. A. (2018) Medium: Cucumber BDD (Part 1): Starting with Feature
Mapping. Recuperado de: https://medium.com/agile-vision/starting-with-bdd-for-
collaborative-development-in-agile-environments-5fb034078b3c
 What is Cucumber Testing Tool? (2018, Octubre 31). Recuperado de
https://www.guru99.com/introduction-to-cucumber.html
 C# Guide (2018) Recuperado de https://docs.microsoft.com/en-us/dotnet/csharp/
 Introduccion a Visual Basic (2018) Recuperado de https://docs.microsoft.com/es-
es/sql/database-engine/dev-guide/getting-started-in-visual-basic-net?view=sql-
server-2014
 Java (2018) Recuperado de https://www.java.com/
 Javascript (2018) Recuperado de https://www.javascript.com/
 ¿Qué es PHP? (2018) Recuperado de http://php.net/manual/es/intro-whatis.php
 Perl (2018) Recuperado de https://www.perl.org/
 Python (2018) Recuperado de https://www.python.org/
 Ruby (2018) Recuperado de https://www.ruby-lang.org/es/
 Visual Studio (2018) Recuperado de https://visualstudio.microsoft.com/es/vso/
 Eclipse (2018) Recuperado de https://www.eclipse.org/
 IntelliJ (2018) Recuperado de https://www.jetbrains.com/idea/
 SmartBear-TestLeft (2018, Octubre 31). Recuperado de
https://smartbear.com/product/testleft/overview/
 Steven D. D. (2018) DZone: Introducing Conversational Unit Test for Java.
Recuperado de https://dzone.com/articles/easyb-introducing-conversation
 JDave (2017, Julio 2). Recuperado de http://jdave.org/
 Concordion (2018, Octubre 31) Recuperado de
https://concordion.org/discussing/java/markdown/
 JBehave (2017, Mayo 5). Recuperado de https://jbehave.org/
 Getting Started with FitNesse (2018). Recuperado de
https://www.softwaretestinghelp.com/getting-started-with-fitnesse-a-collaboration-
tool-for-testers-and-developers/
 FitNesse (2018). Recuperado de http://www.fitnesse.org/
 Specflow (2018). Recuperado de https://specflow.org/
 Shivam B. (2018) DZone: Why should you switch to Cypress for Modern Web
Testing. Recuperado de: https://dzone.com/articles/why-should-you-switch-to-
cypress-for-modern-web-te
 Ranorex (2018). Recuperado de https://www.ranorex.com/
 SahiPro (2018) Recuperado de http://sahipro.com/

38
39

 WatiN (2018) Recuperado de http://ww38.watin.org/


 James K. (2008) Running Watin Test on Vista Recuperado de
http://jameskovacs.com/2008/06/18/running-watin-tests-on-vista/
 TestingWhiz (2008) Recuperado de https://www.testing-whiz.com/
 What is Selenium (2018) Recuperado de https://www.edureka.co/blog/what-is-
selenium/
 Telerik (2018) Recuperado de https://www.telerik.com/blogs/getting-started-with-
progress-test-studio-for-apis
 Shwetha S. (2018), What is Jenkins? Recuperado de
https://vmokshagroup.com/blog/what-is-jenkins/
 What is JMeter? (2018) Recuperado de https://www.guru99.com/introduction-to-
jmeter.html
 Kevin F. (2018), What is Postman? Recuperado de
https://www.digitalcrafts.com/blog/student-blog-what-postman-and-why-use-it

39

Anda mungkin juga menyukai