Este es un proyecto Oficial de UPEX para usar Selenium4 usando Java y Maven.
-
Asegurarse de tener instalado JAVA (versión 20) y MAVEN (versión 3 o superior).
-
Asegurarse de tener la variable de environment JAVA_HOME y MAVEN_HOME en la variable PATH del sistema.
-
Reiniciar VSCODE por si acaso, y verifica si tienes java v20 y Maven en VSCODE corriendo:
java --version mvn --version
-
Para clonar el repositorio, ejecuta el siguiente comando:
git clone https://github.com/upex-galaxy/L1-seljava-demo.git
-
Una vez descargado y dentro del Repo, automáticamente JAVA y MAVEN detectarán los paquetes para instalar las dependencias del archivo pom.xml, dado que el nombre del archivo del proyecto es igual al
<artifactId>
del archivo pom.xml. (Esto es importante) -
[IMPORTANTE]: Recuerda ejecutar en la terminal el siguiente comando para compilar el proyecto y crear todos los correspondientes classpaths de los archivos del repo:
mvn clean package
-
Para comprobar que todo está instalado, EJECUTA el comando de pruebas E2E:
mvn verify -Dheadless=true
Cuyo comando ejecutará todas las pruebas activas Automatizadas de Selenium que tiene el repo (en modo headless, sin aparecer el navegador en pantalla).
(Puedes detener esta ejecución de pruebas si te parece larga con Ctrl+C en la terminal) -
[PLUS]: Como todo proyecto con "Reporte de Pruebas" es necesario tener una dependencia de Reportes. En nuestro caso, usaremos el MEJOR forever "Allure". Deberás descargar e instalarlo con un comando.
- Para comenzar, ejecuta el siguiente comando que descargará Allure en tu repo local (cuyo directorio está ignorado por git para evitar problemas
de almacenamiento):
mvn allure:serve
- Luego de haberse creado la carpeta correspondiente de .allure en el directorio principal, se ejecutará automáticamente el servidor en un puerto local desde tu archivo generado index.html; posiblemente te abrirá el navegador por defecto automáticamente con vista a Allure Reports.
- Para más información sobre ALLURE REPORTS con JUnit5 y Maven visita:
- Para comenzar, ejecuta el siguiente comando que descargará Allure en tu repo local (cuyo directorio está ignorado por git para evitar problemas
de almacenamiento):
Para ejecutar las pruebas, abre Visual Studio Code y asegúrate de tener el Test Runner instalado. Si no lo tienes, puedes instalarlo desde la sección de extensiones de Visual Studio Code.
Después, abre el archivo de prueba que deseas ejecutar y haz clic en el botón de "Run" que aparece al lado del nombre del archivo. Esto ejecutará todas las pruebas dentro del archivo.
Este proyecto utiliza un Plugin de Maven para correr las pruebas de Integración E2E. Para correr todas las pruebas, ejecuta el siguiente comando en la terminal de VSCODE: del proyecto:
mvn verify
Para correr pruebas en modo HEADLESS (significa que no va abrir el navegador en tu pantalla y que las pruebas se estarán corriendo como en background):
mvn verify -Dheadless=true
El comando -D
de Maven se usa para declarar parámetros en la ejecución del comando, en este caso se usa un parámetro llamado "headless", cuyo
parámetro del sistema es usado en las configuraciones del archivo de DriverManager para las pruebas automatizadas de selenium, haciendo que cuando una
prueba se corra con este parámetro en la terminal, se pueda declarar el argumento true
de headless para que las pruebas se corran sin abrir el
navegador, lo cual es importante para el CI sobretodo.
Para correr pruebas específicas, utiliza el parámetro it.test
de Maven en el -D
, es decir, así: -Dit.test
. Por ejemplo si quieres correr solo
las pruebas en el archivo clase: FirstTest.java
, ejecuta el siguiente comando:
mvn verify -Dit.test=FirstTest
Recuerda que si utilizas Visual Studio Code, puedes correr pruebas directamente utilizando la extensión Java Test Runner, cuya función está en el panel de navegación a un costado del Visual Studio Code.
NO OLVIDES, generar el Reporte de Pruebas con "Allure" para compartir tus resultados de prueba con el equipo de trabajo o tus managers!
El proyecto de Automatización Selenium-Java está estructurado de la siguiente manera:
├── src
│ ├── test
│ │ ├── java
│ │ │ └── e2e
│ │ │ ├── fixtures
│ │ │ │ ├── DriverManager.java
│ │ │ │ └── TestBase.java
│ │ │ ├── hooks
│ │ │ ├── page
│ │ │ │ └── LoginPage.java
│ │ │ ├── steps
│ │ │ │ ├── Account
│ │ │ │ └── LoginTest.java
│ │ │ └── utils
│ │ │ └── Action.java
│ │ │ ├── Assertion.java
│ │ │ └── Locator.java
│ │ └── resources
│ │ ├── features
│ │ │ └── ....
│ │ └── allure.properties
│ │ ├── cucumber.properties
│ │ └── log4j.properties
│ └── test-plan
│ └── in-sprint
│ └── S21
│ └── GX2-4919.md
El TestBase es una clase de utilidad que proporciona algunos métodos para la configuración del navegador y la inicialización de WebDriver. Si quieres utilizar esta clase en tus pruebas, simplemente extiende tu clase de prueba con TestBase y utiliza las 3 clases fundamentales de las pruebas:
web
=> es la instancia del WebDriver por cada test.get
=> es la instancia de la clase "Locator" para usar selectores de una forma más legibley directa.Do
=> es la instancia de la clase "Action" para usar acciones importantes con los elementos o screenshots.then
=> es la instancia de los Assertions que comienzan con "should" para validaciones.
public class SuiteTest extends TestBase {
@Test
@DisplayName("GX-123 TC1: Verificar formulario de Facturación")
public void fillForm() {
// Aquí puedes utilizar los métodos del TestBase directamente...
}
}
- Perfecta Nomenclatura del nombre de Archivo de prueba:
{StoryShortName}Test.java ej: addToCartTest.java
- Archivo de Prueba dentro del directorio de Steps correspondiente, ejemplo:
src/test/java/e2e/steps/FirstTest.java
. - En caso de usar PageObjectModel: Chequear que el "Page.java" esté dentro de la carpeta "pages" en la de "support", ejemplo:
src/test/java/e2e/page/ProductsPage.java
. - En caso de usar el CI Pipeline: Usar únicamente el archivo predeterminado del proyecto
sanity.yml
, y asegurarse de modificarlo correctamente (Solo cambiar el Path del Test Suite) y no borrar o cambiar nada más, que funcione y pase los Checks. El archivoregression.yml
se ejecutará automaticamente cuando los cambios hayan mergeado a QA. - En caso de usar Cucumber: Chequear que el archivo Gherkin (.feature) y los StepDefinitions (.java) estén correctamente diseñados y que la Ejecución en CI funcione y pase los Checks.
El programa UPEX Galaxy está diseñado para guiar a los Testers a través de 2 Etapas (Career Paths). Cada Etapa conlleva ciertos NIVELES que el Tester debe alcanzar para llegar a su mayor SENIORITY:
Capacidad de realizar análisis, planificación, ejecución y gestión de:
- Pruebas Manuales de UI
- Bases de Datos
- API Testing
Capaz de realizar tareas (US) sencillas de frontend sin mucha complejidad.
- Entiende y puede seguir guías y protocolos de prueba previamente definidos.
- Identifica errores obvios en la interfaz y reporta con claridad.
- Familiarizado con herramientas básicas de testing y reporting.
- Capaz de realizar pruebas de regresión siguiendo casos de prueba definidos.
Capaz de realizar tareas (US) avanzadas de frontend y también tareas de Backend (Pruebas de Bases de Datos y Pruebas de API).
- Realiza pruebas exploratorias identificando puntos críticos en las aplicaciones.
- Puede diseñar casos de prueba simples basados en requisitos.
- Familiarizado con SQL básico para realizar pruebas en Bases de Datos.
- Inicia pruebas básicas en APIs usando herramientas como Postman o similares.
- Entiende la importancia de ciclos de vida de defectos y los gestiona correctamente.
Capaz de realizar tareas (US) de performance y/o diseñar nuevas Historias de Usuario.
- Diseña y ajusta casos de prueba complejos basados en cambios de requisitos.
- Identifica y reporta problemas de rendimiento usando herramientas básicas.
- Realiza pruebas exploratorias avanzadas e identifica áreas no cubiertas.
- Gestiona los Planes de Prueba (Cobertura, Regresión, Sanity, Smoke) de manera efectiva.
- Ofrece guía y mentoría a testers de niveles inferiores (Capacidad de ser Tutor).
- Tiene una comprensión básica sobre automatización de pruebas.
Capacidad de realizar análisis, planificación, ejecución y gestión de:
- Pruebas Automatizadas de E2E
- Integration Testing (Aplicando para cualquiera de los Frameworks de automatización de Browsers/Apps)
Capaz de realizar tareas (TechDept) para Automatizar pruebas UI de historias implementadas.
- Capaz de manejar el flujo completo de trabajo ordinario.
- Capaz de realizar pruebas Frontend con data sin iteración (hardcodeada).
- Capaz de realizar Page-Object-Model básico.
- Capaz de realizar controles de versionado de código (conocimiento básico en GIT).
Capaz de realizar tareas (TD) para Automatizar pruebas complejas y de integración de historias implementadas.
- Capacidad de resolución de problemas y conflictos de pruebas (Debugging).
- Capaz de realizar pruebas E2E con data en iteración (Parametrizadas).
- Capaz de escribir código con Excelentes prácticas y principios (POM, “DRY”, etc.).
- Capaz de escribir scripts de prueba con Estructura de Datos, condicionales, bucles, etc.
- Capaz de entender y ejecutar Pipelines de Regresión en Continuous Integration (CI).
- Capaz de escribir scripts de prueba para intercepción y assertions de API Testing.
Capaz de realizar cualquier tarea (TD) de Automatización y gestionar los Planes de Prueba.
- Capacidad de resolución de conflictos de GIT con facilidad.
- Capacidad de resolución de problemas de ambientes y errores de config del Repo.
- Capaz de realizar Planes de Prueba generales y para Automatización de pruebas.
- Capaz de planificar, armar y hacer funcionar los Repositorios de Automatización de Prueba.
- Capaz de configurar integraciones de aplicaciones de Reporte de Prueba con el Repo.
- Capaz de realizar pruebas automatizadas de Performance (con ciertas herramientas).
Suscríbete a un Sprint y trabaja como un QA Automation Engineer!