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 elDataProvider
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
- Creeu un
DataProvider
que subministri dades de registre, incloent nom d'usuari, contrasenya i correu electrònic. - Desenvolupeu un mètode de prova que utilitzi aquestes dades per simular el procés de registre.
- 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
- 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