Tabla de Contenidos
Introducción
Objetivos
Tecnologías utilizadas
Alcance
Suite de Pruebas
Arquitectura de las pruebas
Resultados y métricas
Repositorio Github
Conclusión
Lecciones Aprendidas
Descripción del proyecto
El proyecto DemoBlaze tiene como fin realizar la automatización de diferentes escenarios de prueba para garantizar el correcto funcionamiento de funcionalidades críticas del SUT tales como: realizar una compra, verificar la disponibilidad de todos los productos,verificar el login, navegar por todas las secciones de la pagina y verificar el formulario de contacto.
Para lograrlo, se utilizó el framework Selenium, que proporciona una interfaz de automatización de navegadores web. Se empleó el lenguaje de programación C# para desarrollar los scripts de prueba y se aplicó el patrón de diseño Page Object Model (POM) para mejorar la estructura y reutilización del código.
1. Introducción 🌐
El sitio demoblaze.com es un sitio de prácticas que simula una tienda de venta de productos de tecnología y funciones típicas de un sitio de comercio electrónico. Ofrece a los usuarios la posibilidad de explorar un catálogo de productos, registrarse como usuario, loguearse a la plataforma, contactarse con la empresa, agregar artículos al carrito de compras, realizar pagos y completar los datos de la compra.
2. Objetivos 🎯
- Automatizar pruebas de funcionalidad para mejorar la eficiencia y precisión de las pruebas.
- Reducir el tiempo y los recursos requeridos para realizar pruebas manuales.
- Detectar errores y problemas en el sitio web de manera temprana.
3. Tecnologías utilizadas 💻
Para la construcción del proyecto se emplearon las siguientes tecnologías , librerías , técnicas y herramientas de desarrollo:
3.1 Tecnologías 👨💻
- Selenium Web Driver: Framework de automatización de pruebas para interactuar con los elementos de la interfaz de usuario.
- C#: Lenguaje de programación utilizado para desarrollar las pruebas automatizadas.
- NUnit: Framework de pruebas utilizado para la ejecución y gestión de los casos de prueba.
- NuGet: Gestor de dependencias del proyecto.
- SpecFlow: Herramienta de pruebas automatizadas y desarrollo de software basada en el concepto de Behavior Driven Development (BDD). BDD es una metodología de desarrollo de software que se centra en el comportamiento esperado del sistema desde la perspectiva del negocio.
3.2 Librerias 📓
- Extent Report 4.1.0 : Librería para generar informes HTML interactivos que proporcionan una visión clara y detallada del resultado de las pruebas.
- FluentAssertions: Biblioteca útil y potente para escribir aserciones en pruebas unitarias en entornos .NET, que ayuda a mejorar la claridad, expresividad y mantenibilidad del código de prueba.
- DotNetSeleniumExtras.WaitHelpers 3.11.0: Biblioteca útil para facilitar el control de las esperas.
- JUnitTestLogger: Dependencia necesaria para escribir y ejecutar pruebas unitarias además de permitir registrar las pruebas en un documento xml.
3.3 Herramientas 🛠️
- IDE : Microsoft Visual Studio
4. Alcance 📍
En el proyecto se realizará la automatización de los siguientes escenarios de prueba :
☑️ESC001 - Realizar una compra
☑️ESC002 - Verificar la disponibilidad de todos los productos
☑️ESC003 - Iniciar sesión con credenciales validas
☑️ESC004 - Iniciar sesión con credenciales invalidas
☑️ESC005 - Navegar por todas las secciones de la pagina
☑️ESC006 - Verificar el formulario de contacto
☑️ESC007 - Verificar que los precios sean mayores a 0
5. Suite de Pruebas 🧪
5.1 Escenarios
Id | Feature | Escenario de prueba | Sentencias Gherkin | Resultado esperado |
---|---|---|---|---|
ESC001 | Realizar una compra | Realizar compra de varios productos | Given que estoy en la página DemoBlaze When agrego un Producto al carrito And realizo la compra Then debería visualizar un mensaje de confirmación | Ver un mensaje de confirmación de compra exitosa |
ESC002 | Verificar la disponibilidad de todos los productos | Verificar la disponibilidad de todos los productos listados | Given que estoy en la página DemoBlaze When visualizo todos los productos del sitio Then deberian mostrarse todos los esperados | Confirmar que todos los productos están disponibles |
ESC003 | Iniciar sesión con credenciales válidas | Verificar el Login | Given que estoy en la página DemoBlaze When ingreso mis credenciales And presiono el botón de iniciar sesión Then debería ser redirigido a la página principal de DemoBlaze como usuario autenticado | Ser redirigido a la página principal de DemoBlaze como usuario autenticado |
ESC004 | Iniciar sesión con credenciales inválidas | Verificar el Login | Given que estoy en la página DemoBlaze When ingreso mis credenciales And presiono el botón de iniciar sesión Then deberia visualizar un alert con el mensaje Wrong password. | Ver un mensaje de error de credenciales |
ESC005 | Navegar por todas las secciones de la página | Navegar por todas las secciones disponibles en la página | Given que estoy en la página DemoBlaze When navego por cada sección Then debería acceder a cada seccion | Confirmar que se puede acceder a todas las secciones sin problemas |
ESC006 | Verificar el formulario de contacto | Verificar que el formulario de contacto está funcionando correctamente | Given que estoy en la página DemoBlaze When navego a la seccion Contact And envio el formulario completo Then debería visualizar un alert con el mensaje | Ver un mensaje de confirmación de envío exitoso del formulario |
ESC007 | Verificar que los precios sean mayores a 0 | Verificar que todos los productos tengan un precio >0 | Given que estoy en la página DemoBlaze When visualizo todos los productos del sitio Then Todos los precios de los productos deberian ser mayores a 0 | No se espera ninguna respuesta del sistema. |
ESC008 | Verificar el carro de compras | Verificar la suma y cantidad de productos del carro de compras. | Given que estoy en la página DemoBlaze When agrego un productoA When agrego un productoB Then El carrito debería mostrar la cantidad de productos agregados y el monto de ambos. | Se espera que se facture la cantidad de productos y la suma de ambos productos. |
6. Arquitectura de las pruebas 🏠
El proyecto sigue el patrón Page Object Model (POM) para una mejor organización y mantenibilidad. Los elementos de la interfaz de usuario se encuentran separados en clases individuales, lo que permite un fácil mantenimiento y reutilización del código.
6.1 Estructura del proyecto 📂
DemoBlazeAutomation/
├── Dependencias/
├── Features/
│ ├── CarroDeCompras.feature
│ ├── IniciarSesion.feature
│ ├── NavegarPorTodasLasSecciones.feature
│ ├── RealizarUnaCompra.feature
│ ├── VerificarDisponibilidadDelCatalogo.feature
│ ├── VerificarFormularioDeContacto.feature
│ └── VerificarTodosLosPreciosMayorACero.feature
├── Hook/
│ ├── Hooks.cs
├── POM/
│ ├── Helper/
| │ └── ProductHelper.cs
│ ├── Input/
| │ ├── ProductMarketTest.cs
| │ └── ProductWebElement.cs
│ ├── Models/
| │ └── ProductModel.cs
│ ├── BasePage.cs
│ ├── CartPage.cs
│ ├── ContactPage.cs
│ ├── HomePage.cs
│ ├── LoginPage.cs
│ ├── ProductDetailPage.cs
│ └── SignUpPage.cs
├── Report/
│ └── index.html
├── StepDefinitions/
│ ├── BaseSteps.cs
│ └── DemoBlazeSteps.cs
└── Utilities/
├── ExtentReport.cs
└── TakeScreenShot.cs
7. Capturas de pantalla y ejemplos 📸
Se adjuntan las evidencias del funcionamiento de los scripts realizados y una demostración de los informes generados.
8. Resultados y métricas 📊
Se adjuntan los reportes de las pruebas realizadas:
8.1 Informe de Report Extent
El script realiza capturas de pantalla para los pasos fallidos (configurable) y de acuerdo a las directivas dadas, se elabora un informe con el resultado de la ejecución de cada paso.
Ver informe 📒✏️
8.2 Informe de NUnit
Desde la raíz del proyecto se puede ejecutar el siguiente comando para correr la suite y generar un informe XML
dotnet test --logger "junit;LogFilePath=D:\Documentos\Practicas_Testing\Selenenium_WebDriver\DemoBlazeAutomation\Report\resultsJunit.xml"
Ver informe 📒✏️
9. Repositorio Github 🌏💼
Link a repositorio: Git DemoBlaze Automation
10. Conclusión 📢
El proyecto demostró habilidades en el diseño de casos de prueba, la implementación de scripts de automatización, el uso de Selenium Web Driver y el conocimiento de programación en C#. Además, se prestaron especial atención a los aspectos de mantenibilidad y extensibilidad del código, lo que facilita futuras actualizaciones y mejoras del proyecto.
La automatización de las pruebas en el sitio demoblaze.com resultó en una mayor eficiencia, ya que se redujo el tiempo necesario para realizar pruebas manuales repetitivas. Además, proporcionó una mayor confiabilidad en la detección de errores y problemas funcionales, lo que a su vez mejoró la calidad del sitio web.
12. Lecciones Aprendidas 📚
- SpecFlow Project
- Gestor Nuget
- NUnit Framework
- Page Object Model
- Programación en C#
- Extent Report
- Selenium Web Driver