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

  1. 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.
  2. 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.
  3. 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 tipo Object[][].

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 el dataProvider 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.

  1. Define un DataProvider que proporcione diferentes pares de números y sus resultados esperados.
  2. 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

Módulo 2: Comenzando con Selenium

Módulo 3: Localización de Elementos Web

Módulo 4: Interacción con Elementos Web

Módulo 5: Sincronización en Selenium

Módulo 6: Marcos de Pruebas y Selenium

Módulo 7: Conceptos Avanzados de Selenium

Módulo 8: Selenium Grid y Pruebas en Paralelo

Módulo 9: Integración Continua y Selenium

Módulo 10: Mejores Prácticas y Solución de Problemas

© Copyright 2024. Todos los derechos reservados