En aquest tema, aprendrem a crear casos de prova utilitzant TestNG, un dels marcs de proves més populars per a l'automatització de proves amb Selenium. TestNG proporciona una estructura robusta per organitzar i executar proves, i ofereix característiques avançades com l'execució paral·lela, la gestió de dependències i la generació d'informes.

Objectius d'Aprenentatge

  • Comprendre l'estructura bàsica d'un cas de prova TestNG.
  • Aprendre a utilitzar anotacions de TestNG per definir el cicle de vida de les proves.
  • Escriure i executar casos de prova senzills amb TestNG.
  • Organitzar proves en grups i gestionar dependències.

  1. Estructura Bàsica d'un Cas de Prova TestNG

Un cas de prova en TestNG es defineix com una classe Java que conté mètodes anotats amb @Test. Aquests mètodes representen les proves individuals que es volen executar.

Exemple de Cas de Prova Senzill

import org.testng.annotations.Test;

public class ExempleTest {

    @Test
    public void provaSenzilla() {
        System.out.println("Aquest és un cas de prova senzill.");
    }
}

Explicació

  • @Test: Aquesta anotació indica que el mètode provaSenzilla és un cas de prova que TestNG ha d'executar.
  • System.out.println: Utilitzat aquí per mostrar un missatge a la consola quan s'executa la prova.

  1. Anotacions de TestNG

TestNG proporciona diverses anotacions per controlar el cicle de vida de les proves. Algunes de les més comunes són:

  • @BeforeSuite: Executat abans de tots els casos de prova en la suite.
  • @AfterSuite: Executat després de tots els casos de prova en la suite.
  • @BeforeTest: Executat abans de qualsevol cas de prova dins d'un <test> en el fitxer de configuració TestNG.
  • @AfterTest: Executat després de qualsevol cas de prova dins d'un <test>.
  • @BeforeClass: Executat abans de qualsevol mètode de prova en la classe actual.
  • @AfterClass: Executat després de tots els mètodes de prova en la classe actual.
  • @BeforeMethod: Executat abans de cada mètode de prova.
  • @AfterMethod: Executat després de cada mètode de prova.

Exemple d'Ús d'Anotacions

import org.testng.annotations.*;

public class AnotacionsTest {

    @BeforeClass
    public void setup() {
        System.out.println("Configuració abans de la classe.");
    }

    @Test
    public void prova1() {
        System.out.println("Executant prova 1.");
    }

    @Test
    public void prova2() {
        System.out.println("Executant prova 2.");
    }

    @AfterClass
    public void teardown() {
        System.out.println("Neteja després de la classe.");
    }
}

Explicació

  • @BeforeClass i @AfterClass: S'utilitzen per configurar i netejar recursos abans i després de l'execució de tots els mètodes de prova en la classe.

  1. Executar Casos de Prova

Per executar els casos de prova, necessitem un fitxer de configuració TestNG (normalment un fitxer XML) que defineixi quines classes i mètodes s'han d'executar.

Exemple de Fitxer de Configuració TestNG

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite de Proves">
    <test name="Proves Senzilles">
        <classes>
            <class name="ExempleTest"/>
            <class name="AnotacionsTest"/>
        </classes>
    </test>
</suite>

Explicació

  • : Defineix una suite de proves.
  • : Defineix un conjunt de proves que es poden executar junts.
  • : Conté les classes que contenen els casos de prova.

  1. Organització de Proves en Grups

TestNG permet agrupar proves per facilitar la seva organització i execució.

Exemple d'Agrupació de Proves

import org.testng.annotations.Test;

public class GrupTest {

    @Test(groups = {"grup1"})
    public void provaGrup1() {
        System.out.println("Prova del grup 1.");
    }

    @Test(groups = {"grup2"})
    public void provaGrup2() {
        System.out.println("Prova del grup 2.");
    }
}

Explicació

  • groups: L'atribut groups de l'anotació @Test s'utilitza per assignar el mètode a un o més grups.

Executar Grups de Proves

Per executar només un grup específic de proves, es pot modificar el fitxer de configuració TestNG:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite de Proves">
    <test name="Proves per Grup">
        <groups>
            <run>
                <include name="grup1"/>
            </run>
        </groups>
        <classes>
            <class name="GrupTest"/>
        </classes>
    </test>
</suite>

Exercici Pràctic

Exercici: Crea una classe de prova amb dos mètodes de prova. Un mètode ha de pertànyer al grup "login" i l'altre al grup "checkout". Escriu un fitxer de configuració TestNG per executar només el grup "login".

Solució

import org.testng.annotations.Test;

public class EcommerceTest {

    @Test(groups = {"login"})
    public void provaLogin() {
        System.out.println("Prova de login.");
    }

    @Test(groups = {"checkout"})
    public void provaCheckout() {
        System.out.println("Prova de checkout.");
    }
}

Fitxer de Configuració TestNG:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite de Proves">
    <test name="Proves de Login">
        <groups>
            <run>
                <include name="login"/>
            </run>
        </groups>
        <classes>
            <class name="EcommerceTest"/>
        </classes>
    </test>
</suite>

Conclusió

En aquesta secció, hem après a crear i organitzar casos de prova utilitzant TestNG. Hem explorat l'ús d'anotacions per gestionar el cicle de vida de les proves i hem vist com agrupar proves per facilitar la seva execució. Aquestes habilitats són fonamentals per estructurar i gestionar eficientment les proves automatitzades en projectes reals. En el següent tema, explorarem com realitzar proves basades en dades amb TestNG.

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