miércoles, 6 de noviembre de 2024

La Hoja de Ruta Definitiva para Ingenieros de QA: Tu Guía para el Éxito

Buenas lectores.

Debido a que muchos lectores cumplen el rol de QA, he decidido publicar algunos temas relacionados para que puedan mejorar sus perfiles.

A medida que avanzan las prácticas de desarrollo de software, también lo hacen las expectativas y responsabilidades de los ingenieros de QA. Si estás comenzando una carrera en QA o buscando perfeccionar tus habilidades, tener una hoja de ruta clara es esencial.

El día de hoy vamos a revisar una hoja de ruta donde encontraras todos los temas importantes que debes conocer siendo QA. Puedes comenzar primero con los temas principales e ir tachando de tu lista que herramientas y temas conoces sobre cada tema principal. Muy seguramente en este blog estaremos revisando algunos de los temas. 

No siendo más, les dejo la hoja de ruta:




Esta guía te llevará a través de las áreas clave en las que debes enfocarte, asegurándote de estar preparado para sobresalir en el campo.


El Aseguramiento de la Calidad no se trata solo de encontrar errores; se trata de asegurar la calidad general del producto. Un ingeniero de QA debe pensar críticamente, anticipar posibles problemas y abogar por la experiencia del usuario final. Adicionalmente ten en cuenta que Más Allá de la Funcionalidad, Las pruebas no funcionales aseguran que tu aplicación no solo funcione, sino que funcione bien bajo diversas condiciones.


Conclusión: Sigue Aprendiendo

El campo de QA está en constante evolución. Las herramientas y técnicas mencionadas en esta hoja de ruta son solo el comienzo. Para mantenerte a la vanguardia, necesitas aprender y adaptarte continuamente.

Participa en comunidades de QA, asiste a seminarios web y sigue a líderes de la industria para mantenerte actualizado sobre las últimas tendencias y herramientas.

Recuerda, el objetivo de un ingeniero de QA no es solo encontrar errores, sino asegurar la entrega de software de alta calidad. Siguiendo esta hoja de ruta y expandiendo continuamente tu conocimiento, estarás bien preparado para enfrentar cualquier desafío de QA que se te presente.


Fuente:

https://medium.com/@monish.correia/the-ultimate-qa-engineer-roadmap-your-guide-to-success-7244ad97fe21

martes, 5 de noviembre de 2024

Automatización con Java y Selenium (Todo lo que necesitas para comenzar)

Buenos días lectores.


Selenium es una potente herramienta (marco de código abierto) para automatizar aplicaciones web en múltiples navegadores y plataformas. Con soporte para varios lenguajes de programación como Java, permite crear scripts de prueba robustos que simulan interacciones de usuario.

Aquí te voy a dejar lo básico para manejarlo, con solo saber esto ya podrás automatizar todos los sitios:


Abrir un Navegador y Navegar a una URL:

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

public class OpenBrowser {

    public static void main(String[] args) {

        WebDriver driver = new ChromeDriver();

        driver.get("https://example.com");

        driver.quit();

    }

}


Encontrar Elementos Usando Diferentes Localizadores:

Por ID:

driver.findElement(By.id("elementID")).click();

Por Nombre:

driver.findElement(By.name("elementName")).sendKeys("input text");

Por XPath:

driver.findElement(By.xpath("//input[@id='elementID']")).click();

Por Selector CSS:

driver.findElement(By.cssSelector("#elementID")).click();


Hacer Clic en un Botón

driver.findElement(By.id("buttonID")).click();


Escribir texto en un cuadro de Texto

driver.findElement(By.name("textboxName")).sendKeys("Sample Text");


Hacer clic en un checkbox (Casillas de Verificación)

WebElement checkbox = driver.findElement(By.id("checkboxID"));

checkbox.click();

System.out.println(checkbox.isSelected());  // Verificar si está seleccionada


Manejo de Listas Desplegables

Select dropdown = new Select(driver.findElement(By.id("dropdownID")));

dropdown.selectByVisibleText("OptionText");


Esperar a que un Elemento Sea Visible y dar click cuando este visible

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("elementID")));

element.click();


Manejo de Alertas

Aceptar Alerta:

Alert alert = driver.switchTo().alert();

alert.accept();


Rechazar Alerta:

Alert alert = driver.switchTo().alert();

alert.dismiss();


Manejo de Múltiples Ventanas

String parentWindow = driver.getWindowHandle();

Set<String> allWindows = driver.getWindowHandles();


for (String window : allWindows) {

    if (!window.equals(parentWindow)) {

        driver.switchTo().window(window);

    }

}

// Volver a la ventana principal

driver.switchTo().window(parentWindow);


Manejo de Carga de Archivos

driver.findElement(By.id("uploadButtonID")).sendKeys("C:\\path\\to\\file.txt");


Tomar Capturas de Pantalla

File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

FileUtils.copyFile(srcFile, new File("path/to/screenshot.png"));


Extraer Texto de un Elemento Web

String elementText = driver.findElement(By.xpath("//div[@id='elementID']")).getText();

System.out.println(elementText);


Manejo de Marcos (Iframes)

Por Índice:

driver.switchTo().frame(0);

Por Nombre o ID:

driver.switchTo().frame("frameNameOrID");


Manejo de Elementos Dinámicos

driver.findElement(By.xpath("//*[contains(@id, 'dynamicPart')]")).click();


Realizar Acción de Hover con el Ratón

Actions actions = new Actions(driver);

WebElement element = driver.findElement(By.id("elementID"));

actions.moveToElement(element).perform();


Acción de Arrastrar y Soltar (Drag and drop)

Actions actions = new Actions(driver);

WebElement source = driver.findElement(By.id("sourceElementID"));

WebElement target = driver.findElement(By.id("targetElementID"));

actions.dragAndDrop(source, target).perform();


Aserciones en TestNG/JUnit

Aserción en TestNG:

import org.testng.Assert;

String pageTitle = driver.getTitle();

Assert.assertEquals(pageTitle, "Expected Title");


Aserción en JUnit:

import static org.junit.Assert.*;

String pageTitle = driver.getTitle();

assertEquals("Expected Title", pageTitle);


Cerrar el Navegador

Cerrar la ventana actual del navegador:

driver.close();


Terminar la sesión de WebDriver (cerrar todas las ventanas):

driver.quit();


Esta lista cubre preguntas y soluciones esenciales proporcionando una base sólida para la preparación de entrevistas. Así que tienes un 2x1.


Saludos


Fuentes:

https://www.linkedin.com/pulse/basic-selenium-java-automation-testing-kushal-parikh-kgsxf/

martes, 17 de septiembre de 2024

Sitios web para practicar automatización de pruebas WebUI

 En el ámbito de la automatización de pruebas WebUI, la práctica constante es fundamental para adquirir experiencia y mejorar las habilidades técnicas. Estos sitios web también ofrecen otros beneficios significativos para los profesionales y estudiantes de pruebas de software. Afortunadamente, existen varios sitios web gratuitos y abiertos diseñados específicamente para brindar oportunidades de práctica en herramientas populares como Selenium, Cypress y Playwright.

Github User – Starter

Este sitio web proporciona una plataforma para practicar la automatización de pruebas en aplicaciones web de GitHub. Permite realizar búsquedas y explorar perfiles de usuarios, lo que ofrece una excelente oportunidad para poner a prueba las habilidades de automatización de pruebas en un entorno real.

Enlace: https://gh-users-search.netlify.app/

Swag Labs

Swag Labs es un sitio de demostración que ofrece una amplia gama de escenarios de prueba para aplicaciones de comercio electrónico. Los usuarios pueden practicar la automatización de pruebas en diversos aspectos, como la navegación por el sitio, la selección y compra de productos, y la gestión del carrito de compras.

Enlace: https://www.saucedemo.com/

DEMOQA

DEMOQA es una plataforma de demostración que ofrece una variedad de herramientas y aplicaciones para practicar la automatización de pruebas. Desde formularios y ventanas emergentes hasta interacciones complejas de elementos de página, este sitio proporciona una amplia gama de escenarios de prueba para mejorar las habilidades en la automatización de pruebas WebUI.

Enlace: https://demoqa.com/

Automation Exercise

Este sitio web ofrece ejercicios prácticos y desafiantes para aquellos que desean mejorar sus habilidades en la automatización de pruebas. Con una variedad de escenarios de prueba, los usuarios pueden poner a prueba su conocimiento y experiencia en herramientas de automatización como Selenium, Cypress y Playwright.

Enlace: https://automationexercise.com/

Expand Testing

Expand Testing proporciona una serie de ejercicios de práctica para la automatización de pruebas en aplicaciones web. Con casos de prueba estructurados y detallados, este sitio ofrece una excelente oportunidad para desarrollar habilidades en la automatización de pruebas WebUI en un entorno controlado y seguro.

Enlace: https://practice.expandtesting.com/

Test Pages by Evil Tester

est Pages es un sitio web creado por Evil Tester que ofrece una variedad de escenarios de prueba diseñados específicamente para poner a prueba las habilidades en la automatización de pruebas WebUI. Con ejercicios que abarcan desde formularios simples hasta interacciones complejas de elementos de página, este sitio ofrece una excelente oportunidad para practicar y mejorar las habilidades en la automatización de pruebas.

Enlace: https://testpages.eviltester.com/styled/index.html

UI Test Automation Playground

Este sitio web proporciona un entorno de práctica interactivo para la automatización de pruebas de interfaz de usuario (UI). Con una variedad de ejemplos y desafíos, los usuarios pueden experimentar con herramientas de automatización como Selenium y Cypress para mejorar sus habilidades en la automatización de pruebas WebUI.

Enlace: http://www.uitestingplayground.com/

Estos sitios web ofrecen una valiosa oportunidad para practicar y mejorar las habilidades en la automatización de pruebas WebUI en un entorno práctico y controlado. Al participar en estos ejercicios y escenarios de prueba, los profesionales pueden adquirir experiencia práctica y desarrollar competencias técnicas fundamentales en el campo de la automatización de pruebas.



Fuente del articulo:

https://mteheran.dev/sitios-web-para-practicar-automatizacion-de-pruebas-webui/

jueves, 22 de agosto de 2024

Serenity.conf con Selenium grid y que funcione para Linux y Windows

Buenas lectores.

Les comparto mi archivo serenity.conf el cual funciona conectandome a un selenium grid que a su vez tiene varios nodos, entre ellos una combinación entre Windows  y Linux.

Con el siguiente serenity.conf pueden ejecutar en ambos sistemas operativos sin que salgan los mensajes de chrome crash: 


serenity {

  take.screenshots = FOR_FAILURES

  test.root = "starter.acceptancetests"

  logging = QUIET

}


headless.mode = true

webdriver {

  driver = remote

  capabilities {

    browserName = "chrome"

    acceptInsecureCerts = true

    "goog:chromeOptions" {

      args = ["ignore-certificate-errors","disable-popup-blocking","headless=new","start-maximized","no-sandbox","disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]

    }

  }

  remote {

    url="http://localhost:4444/wd/hub"

    driver=chrome

    headless.mode = false

    capabilities {

    browserName = "chrome"

    acceptInsecureCerts = true

    "goog:chromeOptions" {

        args = ["ignore-certificate-errors","disable-popup-blocking","headless=new","start-maximized","no-sandbox","disable-dev-shm-usage","--disable-blink-features=AutomationControlled"]

    }

  }

  }

 }

Espero les sirva.

PD: No es necesario enviar el último flag.

Saludos.


Se te comienzan a quedar sesiones de chrome abiertas luego de ejecutar automatizaciones?

Buenas lectores.

Ha venido ocurriendo que en algunos proyectos ejecutados se van quedando procesos de chrome huerfanos ocasionando que el consumo de la CPU suba al 100% y finalmente la caida del servidor de pruebas.

He realizado descarte de muchos factores, sin embargo, el parámetro que parece funcionar es quitar el siguiente flag: "disable-gpu".

He probado y funciona con la creación directa del webdriver y también cuando lo parametrizamos desde el serenity.conf.

Espero les sirva el tip.

Saludos.




jueves, 27 de junio de 2024

Generar automaticamente los setters y getters en java usando eclipse

Buenas lectores.

Las personas que venimos trabajando en C# y nos pasamos a java nos encontramos con las declaraciones manuales de los set y get de cada clase, sin embargo, existe una forma de hacerlo casi igual para java, esto es usando la libreria "Lombok"


Para instalarla solo debes ir a "instalar nuevo software" desde la pestaña de ayuda y lo buscas, reinicias el eclipse y ya tienes todo listo.


Saludos.


Fuentes:

https://projectlombok.org/setup/eclipse

martes, 25 de junio de 2024

Configurar un proyecto de serenitybdd para que se ejecute en un grid de Selenium

Buenas tardes lectores.

Nos encontramos con nuevos desafios cada día, uno de los más grandes es la automatización de procesos. Cuando estamos en un equipo complejo es frecuente encontrar automatizaciones de pruebas funcionales y estos proyectos están construidos en frameworks que permiten un mantenimiento a largo plazo como lo puede ser SerenityBDD.

Al contar con muchos proyectos, es factible encontrarnos la lentitud de ejecución, una de las soluciones es la ejecución paralela y esa es la razón por la que estamos aquí. Para que nuestro proyecto se ejecute de manera rápida y paralelamente puedes montar un grid y añadir los nodos que requieras, luego en el proyecto en el archivo serenity.conf dejas lo siguiente:


# Remote

webdriver {
  driver = remote
  remote {
      url="http://localhost:4445/wd/hub"
      driver=chrome
  }
}


Cambias localhost y el puerto , por el que corresponda cuando ejecutaste el selenium grid.

Espero te sirva.

Saludos.

Fuentes:
https://stackoverflow.com/questions/49535381/how-do-i-specify-the-selenium-hub-url-when-running-serenity-tests-from-eclipse