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.
- 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.
- 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.
- 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.
- 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
- Què és l'Automatització de Proves?
- Beneficis de l'Automatització de Proves
- Visió General de Selenium
- Configuració del Teu Entorn
Mòdul 2: Començant amb Selenium
- Introducció a Selenium WebDriver
- Instal·lació de Selenium WebDriver
- Primer Script de Selenium
- Comprensió de la Interfície WebDriver
Mòdul 3: Localització d'Elements Web
- Introducció als Localitzadors
- Ús de Localitzadors ID i Nom
- XPath i Selectors CSS
- Estratègies Avançades de Localització
Mòdul 4: Interacció amb Elements Web
- Realització d'Accions sobre Elements Web
- Gestió de Desplegables i Caixes de Selecció
- Treballant amb Alertes i Pop-ups
- Gestió de Finestres del Navegador i Frames
Mòdul 5: Sincronització en Selenium
Mòdul 6: Marc de Proves i Selenium
- Introducció a TestNG
- Configuració de TestNG amb Selenium
- Creació de Casos de Prova TestNG
- Proves Basades en Dades amb TestNG
Mòdul 7: Conceptes Avançats de Selenium
- Gestió de Trucades AJAX
- Treballant amb Cookies
- Captura de Captures de Pantalla
- Execució de JavaScript amb Selenium
Mòdul 8: Selenium Grid i Proves en Paral·lel
- Introducció a Selenium Grid
- Configuració de Selenium Grid
- Execució de Proves en Paral·lel
- Proves Multinavegador
Mòdul 9: Integració Contínua i Selenium
- Introducció a la Integració Contínua
- Integració de Selenium amb Jenkins
- Automatització de l'Execució de Proves
- Informes i Registre