En este tema, exploraremos cómo realizar pruebas basadas en datos utilizando TestNG, un marco de pruebas popular en el ecosistema de Java. Las pruebas basadas en datos permiten ejecutar un caso de prueba varias veces con diferentes conjuntos de datos, lo que es esencial para validar la funcionalidad de una aplicación con múltiples entradas.
Conceptos Clave
-
Pruebas Basadas en Datos:
- Permiten ejecutar el mismo caso de prueba con diferentes datos de entrada.
- Ayudan a identificar problemas que pueden surgir con diferentes combinaciones de datos.
-
TestNG:
- Un marco de pruebas para Java que soporta pruebas basadas en datos.
- Ofrece anotaciones y características que facilitan la ejecución de pruebas parametrizadas.
-
DataProvider:
- Una anotación en TestNG que permite proporcionar datos a un método de prueba.
- Los métodos anotados con
@DataProvider
deben devolver un objeto de tipoObject[][]
.
Configuración de Pruebas Basadas en Datos
Paso 1: Crear un DataProvider
Un DataProvider
es un método que proporciona datos a un método de prueba. Aquí hay un ejemplo básico:
import org.testng.annotations.DataProvider; public class TestData { @DataProvider(name = "loginData") public Object[][] createLoginData() { return new Object[][] { {"user1", "password1"}, {"user2", "password2"}, {"user3", "password3"} }; } }
Paso 2: Usar el DataProvider en un Método de Prueba
El siguiente paso es usar el DataProvider
en un método de prueba. Aquí está cómo hacerlo:
import org.testng.annotations.Test; public class LoginTest { @Test(dataProvider = "loginData", dataProviderClass = TestData.class) public void testLogin(String username, String password) { System.out.println("Logging in with " + username + " and " + password); // Aquí iría el código para realizar la acción de login } }
Explicación del Código
- DataProvider: El método
createLoginData
devuelve un arreglo bidimensional de objetos, donde cada subarreglo representa un conjunto de datos de prueba. - Test: El método
testLogin
está anotado con@Test
y utiliza eldataProvider
especificado. Cada conjunto de datos se pasa al método de prueba como argumentos.
Ejercicio Práctico
Ejercicio
Crea un caso de prueba que verifique la funcionalidad de una calculadora simple (suma y resta) utilizando pruebas basadas en datos.
- Define un
DataProvider
que proporcione diferentes pares de números y sus resultados esperados. - Implementa un método de prueba que use estos datos para verificar la suma y resta.
Solución
import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; public class CalculatorTest { @DataProvider(name = "calculatorData") public Object[][] createCalculatorData() { return new Object[][] { {2, 3, 5, -1}, {5, 5, 10, 0}, {10, 5, 15, 5} }; } @Test(dataProvider = "calculatorData") public void testCalculator(int a, int b, int expectedSum, int expectedDifference) { assertEquals(a + b, expectedSum, "Sum is incorrect"); assertEquals(a - b, expectedDifference, "Difference is incorrect"); } }
Explicación de la Solución
- DataProvider:
createCalculatorData
proporciona pares de números junto con sus resultados esperados para suma y resta. - Test:
testCalculator
verifica que la suma y resta de los números proporcionados coincidan con los resultados esperados.
Conclusión
Las pruebas basadas en datos con TestNG son una herramienta poderosa para validar aplicaciones con múltiples entradas. Al usar DataProvider
, puedes simplificar y automatizar la ejecución de pruebas repetitivas, asegurando que tu aplicación maneje correctamente una variedad de escenarios de entrada. En el siguiente módulo, exploraremos conceptos avanzados de Selenium que complementarán tus habilidades de automatización de pruebas.
Automatización de Pruebas con Selenium
Módulo 1: Introducción a la Automatización de Pruebas
- ¿Qué es la Automatización de Pruebas?
- Beneficios de la Automatización de Pruebas
- Visión General de Selenium
- Configuración de Tu Entorno
Módulo 2: Comenzando con Selenium
- Introducción a Selenium WebDriver
- Instalación de Selenium WebDriver
- Primer Script de Selenium
- Entendiendo la Interfaz WebDriver
Módulo 3: Localización de Elementos Web
- Introducción a los Localizadores
- Uso de Localizadores ID y Name
- XPath y Selectores CSS
- Estrategias Avanzadas de Localización
Módulo 4: Interacción con Elementos Web
- Realizando Acciones en Elementos Web
- Manejo de Desplegables y Casillas de Verificación
- Trabajando con Alertas y Ventanas Emergentes
- Gestión de Ventanas del Navegador y Marcos
Módulo 5: Sincronización en Selenium
Módulo 6: Marcos de Pruebas y Selenium
- Introducción a TestNG
- Configuración de TestNG con Selenium
- Creación de Casos de Prueba TestNG
- Pruebas Basadas en Datos con TestNG
Módulo 7: Conceptos Avanzados de Selenium
- Manejo de Llamadas AJAX
- Trabajando con Cookies
- Captura de Capturas de Pantalla
- Ejecución de JavaScript con Selenium
Módulo 8: Selenium Grid y Pruebas en Paralelo
- Introducción a Selenium Grid
- Configuración de Selenium Grid
- Ejecución de Pruebas en Paralelo
- Pruebas en Múltiples Navegadores
Módulo 9: Integración Continua y Selenium
- Introducción a la Integración Continua
- Integración de Selenium con Jenkins
- Automatización de la Ejecución de Pruebas
- Reportes y Registro