En aquest tema, explorarem com implementar proves basades en dades utilitzant TestNG. Les proves basades en dades són una tècnica que permet executar el mateix cas de prova amb diferents conjunts de dades, millorant així la cobertura de proves i l'eficiència.

Què són les Proves Basades en Dades?

Les proves basades en dades impliquen:

  • Separació de dades i lògica de prova: Les dades de prova es mantenen separades del codi de prova, permetent una fàcil actualització i manteniment.
  • Execució repetida: El mateix cas de prova s'executa múltiples vegades amb diferents conjunts de dades.
  • Millora de la cobertura de proves: Permet provar múltiples escenaris amb un sol cas de prova.

Beneficis de les Proves Basades en Dades

  • Eficiència: Redueix la duplicació de codi i facilita l'actualització de dades de prova.
  • Flexibilitat: Permet afegir nous conjunts de dades sense modificar el codi de prova.
  • Escalabilitat: Facilita l'execució de proves amb grans volums de dades.

Configuració de Proves Basades en Dades amb TestNG

Pas 1: Preparar les Dades de Prova

Les dades de prova es poden emmagatzemar en diversos formats, com ara:

  • Fitxers Excel
  • Fitxers CSV
  • Bases de dades
  • Fitxers XML o JSON

Pas 2: Utilitzar l'Anotació @DataProvider de TestNG

TestNG proporciona l'anotació @DataProvider per subministrar dades a les proves. Aquí teniu un exemple bàsic:

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataDrivenTest {

    @DataProvider(name = "loginData")
    public Object[][] dataProviderMethod() {
        return new Object[][] {
            {"user1", "password1"},
            {"user2", "password2"},
            {"user3", "password3"}
        };
    }

    @Test(dataProvider = "loginData")
    public void testLogin(String username, String password) {
        System.out.println("Testing login with: " + username + " / " + password);
        // Aquí aniria el codi per provar el login
    }
}

Explicació del Codi

  • @DataProvider: Defineix un mètode que retorna un array bidimensional d'objectes. Cada fila representa un conjunt de dades per a una execució de prova.
  • @Test(dataProvider = "loginData"): Associa el mètode de prova amb el DataProvider especificat. Cada conjunt de dades es passa com a paràmetres al mètode de prova.

Pas 3: Executar les Proves

Quan executeu el test, TestNG executarà el mètode de prova per a cada conjunt de dades proporcionat pel DataProvider.

Exercici Pràctic

Objectiu: Crear un cas de prova basat en dades que validi la funcionalitat de registre d'un usuari amb diferents conjunts de dades.

Instruccions

  1. Creeu un DataProvider que subministri dades de registre, incloent nom d'usuari, contrasenya i correu electrònic.
  2. Desenvolupeu un mètode de prova que utilitzi aquestes dades per simular el procés de registre.
  3. Executeu el test i verifiqueu que es realitza correctament per a cada conjunt de dades.

Solució

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class RegistrationTest {

    @DataProvider(name = "registrationData")
    public Object[][] registrationDataProvider() {
        return new Object[][] {
            {"user1", "pass1", "[email protected]"},
            {"user2", "pass2", "[email protected]"},
            {"user3", "pass3", "[email protected]"}
        };
    }

    @Test(dataProvider = "registrationData")
    public void testRegistration(String username, String password, String email) {
        System.out.println("Registering with: " + username + ", " + password + ", " + email);
        // Aquí aniria el codi per provar el registre
    }
}

Errors Comuns i Consells

  • Error en el nombre de paràmetres: Assegureu-vos que el nombre de paràmetres en el mètode de prova coincideixi amb el nombre de columnes en el DataProvider.
  • Gestió de dades complexes: Si les dades són complexes, considereu utilitzar objectes o estructures de dades més avançades.

Conclusió

Les proves basades en dades amb TestNG són una tècnica poderosa per millorar l'eficiència i la cobertura de les proves. Mitjançant l'ús de @DataProvider, podeu executar fàcilment el mateix cas de prova amb múltiples conjunts de dades, assegurant-vos que la vostra aplicació es comporta correctament en diversos escenaris. En el següent mòdul, explorarem conceptes avançats de Selenium per millorar encara més les vostres habilitats d'automatització de proves.

Automatització de Proves amb Selenium

Mòdul 1: Introducció a l'Automatització de Proves

Mòdul 2: Començant amb Selenium

Mòdul 3: Localització d'Elements Web

Mòdul 4: Interacció amb Elements Web

Mòdul 5: Sincronització en Selenium

Mòdul 6: Marc de Proves i Selenium

Mòdul 7: Conceptes Avançats de Selenium

Mòdul 8: Selenium Grid i Proves en Paral·lel

Mòdul 9: Integració Contínua i Selenium

Mòdul 10: Millors Pràctiques i Resolució de Problemes

© Copyright 2024. Tots els drets reservats