Escolar Documentos
Profissional Documentos
Cultura Documentos
Cochabamba- Bolivia
2018
1
Agradecimiento:
A mi madre, mi hermana, a mis amigos, las instituciones
que me han ayudado a formarme en cada momento, y las
personas con las que he trabajado ahí, de las cuales
siempre he aprendido algo más.
A la empresa Digital Harbor, por darme la oportunidad
tan grande y esperada de poder formar parte de su equipo,
aprender cada día más junto a ellos y ejercer la profesión
que me gusta con ellos.
A mis compañeros de trabajo, por su gran apoyo y su
ayuda incondicional por mejorar cada vez en
conocimiento y actitud.
Gracias a todos ellos que me han acompañado en el
camino duro y la mano amiga que me han brindado en
esta travesía.
2
Dedicatoria :
A mi madre Bernardina Ramírez, a mi hermana
Cristina Cussi, y a mi gran amigo Sergio Flores, los
que nunca dejaron de creer en mí.
3
Introducción 7
1. Generalidades 9
2. Metodología 10
3. Automatización de pruebas 10
6. Conclusiones 37
7. Bibliografía 38
4
Índice de Figuras
5
Resumen
Es importante realizar un análisis para determinar qué casos de prueba pueden ser
automatizados y cuales seguirán con el proceso manual.
6
Introducción
Cada grupo de desarrollo de software prueba sus productos, pero el software entregado
siempre tiene defectos. Los ingenieros de prueba se esfuerzan por atraparlos antes de
lanzar el producto, pero siempre se infiltran y, a menudo, vuelven a aparecer, incluso
con los mejores procesos de prueba manual. Por tanto el la automatización de pruebas,
es la mejor manera de aumentar la eficacia, la eficiencia y la cobertura de sus pruebas
de software.
Los reportes en general pueden tener diversos niveles de complejidad, desde una lista o
enumeración hasta gráficos mucho más desarrollados.
Así mismo los reportes de pruebas pueden mostrar el resultado de una lista de ejecución
de Test Cases (TC).
Existen pruebas que se hacen o se realizan de manera redundante, es decir que el flujo
se repite con algunas pequeñas excepciones sin embargo la lógica es la misma, estas
pruebas y ejecuciones de TC de manera manual toman su debido tiempo, pruebas en las
que se podrían ahorrar más tiempo si estas se automatizan, los resultados de estas
pruebas ejecutadas de manera automatizada se reflejan en un reporte que muestran los
TCs ejecutados, exitosos, fallidos, omitidos, entre otras. Pudiendo además adaptar
ciertas características en el reporte según lo que requiera el proyecto, en cuanto a la
ejecución de las pruebas.
7
Es por esto que el tema a tratar y analizar es la importancia de la generación de reportes
en el proceso de automatización y sus características.
Lo que se pretende mostrar en esta monografía para su debido análisis y relación con el
objetivo principal, pueden ser los siguientes puntos:
Esta monografía pretende servir de una guía base para la decisión adecuada en cuanto a
la generación de reportes, de manera general, en este sentido las opciones que se
muestren no serán de manera detallada.
Con esta monografía se pretende contribuir a las personas interesadas en este tema,
como QA de automatización por ejemplo, para que lo tomen en cuenta y les ayude a
tomar una mejor decisión.
8
1. Generalidades
El reporte, de esta forma, confiere una mayor utilidad a los datos. No es lo mismo
trabajar con una planilla de cálculos con 10.000 campos que con un dibujo en forma de
torta que presenta dichos campos de manera gráfica, de manera más llamativa.
Gracias a los reportes cualquier persona puede proceder a realizar un resumen de datos
o a clasificar estos en grupos determinados. Por todo ello, se entiende que estos
documentos sean tan importantes en cualquier empresa ya que gracias a ellos cuenta con
sus propias bases de datos.
Estos reportes deberían ser lo más explícitos e informativos para la fácil interpretación y
análisis, para la toma de decisiones.
Los scripts necesitan datos de prueba de entrada antes de que estén configurados para
ejecutarse. Una vez ejecutados, proporcionan informes de prueba detallados.
9
La mayoría de las herramientas de prueba de automatización con licencia contarán con
una opción de informe enriquecido para mostrar el estado de la ejecución. Sin embargo,
en esta monografía se mostrarán las opciones que se pueden utilizar de manera libre.
2. Metodología
3. Automatización de pruebas
10
El software de automatización también puede ingresar datos de prueba en el sistema
bajo prueba, comparar resultados esperados y reales y generar informes detallados de
prueba. La automatización de pruebas exige inversiones considerables de dinero y
recursos.
En este y en cada uno de los siguientes elementos, el retorno de la inversión (ROI) será
el rendimiento total (el número que acabamos de encontrar) menos el total invertido,
11
dividido por el total invertido. Si se obtiene un número mayor que 1, se ha ganado
dinero. Si no, se ha perdido dinero hasta ahora.
d. Cambio a la izquierda
¿Cuándo se escriben los casos de prueba? ¿Cuándo se escribieron antes de introducir la
automatización de prueba? Mientras más cerca estén de crearse al mismo tiempo que
cuando se definen las tareas, la prueba "más a la izquierda" ha cambiado. Mover la
actividad de crear automatización de prueba y planificarla hacia la izquierda también
obliga a aclarar las características y las rutas de usuario. La automatización de pruebas
12
escrita anteriormente significa una detección más temprana de defectos, lo que significa
una entrega más rápida y la entrega de un mejor producto.
b) Progreso de la automatización
13
3.3. Frameworks para la Automatización
Selenium
Selenium es posiblemente el marco de automatización de pruebas de código abierto más
popular para aplicaciones web. Originado en la década de 2000 y evolucionado durante
una década, Selenium ha sido un marco de automatización de elección para los
probadores de automatización web, especialmente para aquellos que poseen habilidades
avanzadas de programación y scripting. Selenium se ha convertido en un marco central
para otras herramientas de automatización de pruebas de código abierto como Katalon
Studio, Watir, Transportador y Robot Framework.
Serenity(Java)
Es un framework de pruebas automatizadas basado en Java que se integra con
herramientas behavior-driven development (BDD) como Cucumber y JBehave
permitiendo tener los escenarios como información de alto nivel mientras también
provee información detallada de los mismos en los reportes. Esta pensado
principalmente para pruebas de aceptación y regresión.
No solo nos sirve para las pruebas UI, también tiene soporte para pruebas de Servicios,
integrándose con REST Assured, incluyendo los resultados de los tests en el reporte.
Watir
Pronunciado “Water”, 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.
Robot Framework(Python)
Es el framework numero 1 para pruebas automatizadas en Python. Es un Framework del
tipo keyword-driven, lo que hace que los tests sean fáciles de leer y crear. Si no se usa
Python, de todas formas se puede utilizar igual gracias a Jython (Java) o IronPython
(.NET).
14
No solo puedes enfocar tus pruebas en la IU, también se puede hacer pruebas de niveles
más inferiores, como pruebas FTP, de base de datos, Android o Appium.
Su API permite extender su funcionalidad para cubrir cualquier necesidad especial de
nuestro proyecto.
En esta monografía se mostrará una visión general de las distintas librerías y formas de
generar reportes de automatización de pruebas.
La mayoría de las herramientas de prueba de automatización con licencia tendrán una
opción de creación de informe enriquecido para mostrar el estado de la ejecución. Pero
al venir a las herramientas de automatización de código abierto que carecen de esta
opción. Por ejemplo, Selenium para ejecutar el conjunto de pruebas, depende de los
marcos de prueba de la unidad como TestNG y Junit.
Extent Reports
TestNG Report Generation
Junit Report Generation
15
ExtentReports: Al usar esta clase, establecemos la ruta donde nuestros informes deben
generar.
ExtentTest: al usar esta clase, podríamos generar los registros en el informe.
En la que se implementan los métodos con las anotaciones respectivas como se indica
en el ejemplo, @BeforeSuite, @BeforeClass, @BeforeMethod, @AfterMethod.
16
Se necesita la referencia para registrar la información en el informe.
El objeto ExtentReports se utilizará para agregar la información del informe
como Título, encabezado y tema, etc.
La configuración anterior debe pasar desde el archivo XML externo utilizando el
método loadConfig() de la clase ExtentReports. Tomará la ruta del archivo XML
como argumento.
El método EndTest() de ExtentReports detendrá la captura de información sobre
el registro de prueba.
El método Flush() de ExtentReports insertará / escribirá todo en el documento.
El método Close() de los ExtentReports borrará / cerrará todos los recursos del
objeto ExtentReports.
17
Se tomó tres métodos con la anotación @Test como passTest, failTest y skipTest y un
método startTest con la anotación @BeforeTest y otro método endReport con la
anotación @AfterMethod.
Se utiliza el objeto de clase ExtentReports (es decir, extent) en el método startReport
que se asignó a la anotación @BeforeTest para generar el informe HTML en la ruta
requerida
Se utiliza el objeto de la clase ExtentTest (es decir, extent) en los métodos restantes para
escribir registros en el informe.
Una vez ejecutadas las pruebas o suites de pruebas, se puede visualizar el reporte html
en la ruta a la que se re-direcciona en la implementación, como se ve en la Figura 3:
18
Figura 3.- Reporte de ejecución de pruebas con extent report
Fuente: Reporte Generado, proyecto Automation Digital Harbor
En el siguiente ejemplo se puede ver una implementación con TestNG Listener, que
sobrecargan los métodos que tiene este, para hacer uso de las opciones que nos
proporciona y adecuarlo al reporte que queremos visualizar.
19
En esta clase, se crea un objeto ExtentReports y se puede acceder a través del método
getReporter (). Además, debe establecer la ubicación del archivo HTML del informe
ExtentReports.
20
Una vez finalizada la prueba, se podrá visualizar el archivo ExtentReportsResults.html
en la carpeta ExtentReports.
Cuando se abra el informe, se pueden ver los resultados de la prueba como se muestra a
continuación, en las figuras 4, 5, 6 y 7.
Pruebas.-
Categorías.-
21
Excepciones.-
22
Dependencia de Allure TestNG:
Para hacer que el informe de prueba sea más comprensible, se uttiliza la propiedad de
descripción de anotación @test. Como se muestra en el ejemplo:
@Test (prioridad = 0, descripción = "Escenario de inicio de sesión no válido con
nombre de usuario y contraseña incorrectos")
Se necesita definir los pasos en un lugar genérico en nuestro proyecto de prueba. Para
definir un paso, necesitamos usar la anotación @Step. En nuestro proyecto, los pasos se
definen en nuestras clases de página.
Aquí están los resultados. Se debe buscar en el informe como se muestra en la figura 9.
Figura 9.- Parte del reporte que se muestra con relación a la implementación de steps
Fuente: https://www.swtestacademy.com/allure-testng/
23
Para generar un informe, se debe instalar el intérprete de línea de comandos de Allure, y
seguir os siguientes pasos:
1. Descargar la última versión como archivo zip.
2. Descomprimir el archivo en el directorio allure-commandline.
3. Navegar al directorio bin.
4. Agregar Allure al PATH del sistema.
5. Abrir una pantalla de símbolo del sistema, vaya al directorio del proyecto y
escribir debajo el siguiente comando:
24
Suites.-
1. klov-x-x.jar file
2. application.properties file.
Ejecutar Klov:
Se debe proporcionar la versión correcta.
java -jar klov-x.x.x.jar
# data.mongodb
spring.data.mongodb.host = localhost
spring.data.mongodb.port = 27017
spring.data.mongodb.database = klov
25
Por ejemplo:
Ahora se puede ejecutar sus pruebas y ver los resultados mágicamente en el reporte
Klov Web Dashboard. Se puede verificar las fallas en la vista histórica en la tabla de
línea de tiempo. Verá cuántas veces ejecutó esas pruebas y la información de ejecución
de compilación.
A continuación se puede mostrar las vistas que ofrece Klov Report , ver las siguientes
figuras 13,14, 15.
26
Vista General de Builds (Construcciones).-
Figura 15.- Vista graficas de barras por builds del reporte klov
Fuente: http://extentreports.com/docs/klov/
27
sino que es una estrategia de desarrollo (así como TDD, que es test driven
development). Lo que plantea es definir un lenguaje común para el negocio y para los
técnicos, y utilizar eso como parte inicial del desarrollo y el testing.
La página del informe principal muestra una gran cantidad de información sobre
pruebas: recuento de pruebas, duración de la ejecución, pruebas fallidas y pendientes,
etc. Como se muestra en la figura 17.
28
Para tener una idea de cómo se crea una prueba típica de Serenity Screenplay. Las
pruebas de guión se expresan desde el punto de vista de uno o más actores. Los actores
tienen habilidades, como la capacidad de navegar por la web usando un navegador. Los
actores realizan tareas centradas en el negocio para lograr sus objetivos, como "Buscar
un término". Los actores también pueden hacer preguntas sobre el estado de la
aplicación, como verificar el estado de la pantalla de resultados.
29
El siguiente ejemplo contiene 2 características (features) con algunas historias. Cada
historia puede contener uno o más escenarios, cada escenario consta de uno o más pasos
y algunos ejemplos.
Feature:Definition
Story: Look for definition
Scenario (or Test, or Acceptance Criteria): Looking for
definition: pass
examples: 3
steps: 3
Scenario: Looking for definition with incorrect
symbols: @Ignore
examples: 4
steps: 3
Scenario: Looking for not existed definition: failed
examples: 2
steps: 3
Story: Update a definition
Scenario: Updating a definition: some internal error
examples: 5
steps: 3
Feature:Petstore
Story: Remove a pet
Scenario: Removing a pet: @Skip
steps: 5
Scenario: Removing multiple pets: @Pending
steps: 6
Story: Update a pet
Scenario: Updating a pet: @Ignore
steps: 4
Story: Add a pet
Scenario: Adding a pet: pass
steps: 3
Después de ejecutar todas estas pruebas (no importa si usa JBehave, Cucumber o JUnit)
se recibirá un informe de agregación, que se verá similar a la estructura de las pruebas:
30
Entre la información general, se puede encontrar información sobre las características
proporcionadas/historias de componentes en esta prueba. También representa
estadísticas de pruebas aprobadas/ignoradas/omitidas/fallidas según su cantidad.
El informe se genera en el directorio de target/site/serenity en un archivo Html.
Se puede destacar que Serenity report está muy relacionado con las siguientes
características:
Requerimientos
Información detallada sobre estadísticas basadas en características, historias y criterios
de aceptación
Características (Features)
Tabla resumen de todas las características
Historias (Stories)
Tabla resumen con estadísticas de historias
Figura 20.- Ciclo para analizar los que se debe automatizar en BDD Serenity
Fuente: http://www.thucydides.info/
Ahora que se ha hablado en forma general lo que ofrece Serenity report, además en
cuanto a BDD testing, se puede mostrar revisar también las diferentes pestañas que
genera un reporte de Serenity.
o Recuento de pruebas
Página de resumen de todas las estadísticas e información generales,
según la cantidad de escenarios y ejemplos utilizados.
31
o Pruebas ponderadas
Página de resumen de todas las estadísticas generales e información,
ponderada por el tamaño de los escenarios en pasos.
Figura 21.- Resultados del reporte BDD de serenity, pestaña de pruebas ponderadas
Fuente: http://thucydides.info/docs/serenity-staging/
32
Figura 22.- Reporte Serenity BDD para la estructura de prueba en la pestaña con
Requisitos, Fuente: http://thucydides.info/docs/serenity-staging/
En esta pestaña todos los resultados de las pruebas están organizados como
características. En nuestro ejemplo tenemos 2 características.
33
Resultado de la pestaña Historias (Stories)
Hay historias en esta pestaña. En este ejemplo, hay 5 historias. Y dentro de estas, la
notación correspondiente a BDD.
34
5. Características de un reporte de automatización de pruebas
35
11.- Se puede mostrar las capturas de pantalla en el informe donde sea que lo
necesitemos.
12.- Se puede agregar registro de las ejecuciones de prueba en el informe.
13.- Se puede agregar información expandida en el informe.
14.- Se puede dar nuestro propio nombre al informe HTML.
15.- Se proporcionará la información del sistema en el informe (es decir, el nombre de
host y el sistema operativo utilizados para ejecutar el conjunto de pruebas).
Además de contar con las características que se puede mostrar en la primera imagen de
este subtema, se pueden tener las siguientes cualidades en la versión comunity que es
libre para quien lo requiera:
ExtentHtmlReporter: informe interactivo en HTML
Soporte para Pruebas Estándar y BDD
Agregar capturas de pantalla a las pruebas
Soporte para enviar correos después de las ejecuciones de prueba
Cuadro Comparativo.-
Después de resaltar las características de estos tipos de reportes, como son Extent
report, Allure Report y Serenity report, se tiene el siguiente cuadro comparativo entre
las cualidades de los mismos.
36
Vistas agregadas de los resultados de las X
pruebas por requisitos
Agregar capturas de pantalla a las X X X
pruebas
Opciones sobre las capturas de pantalla X
de las pruebas
Soporte para enviar correos después de X
las ejecuciones de prueba
Plugin de integración con Jenkins X X X
6. Conclusiones
37
7. Bibliografía
38