Grupos de prueba: incluir y excluir (ejemplo)

TestNG es un marco de pruebas que cubre diferentes tipos de diseños de pruebas, como pruebas unitarias, funcionales, de extremo a extremo, de interfaz de usuario y de integración.

Puede ejecutar uno o varios paquetes (aquí paquete significa encapsular un grupo de clases en un formato de director adecuado) creando XML y ejecutándolo a través de maven.

Grupos TestNG con ejemplo

Usamos grupos en Prueba cuando,

  • No queremos definir métodos de prueba por separado en diferentes clases (dependiendo de la funcionalidad) y
  • Al mismo tiempo, quiero ignorar (no ejecutar) algunos casos de prueba como si no existieran en el código.
  • Entonces para llevar a cabo esto tenemos que Agruparlos. Esto se hace mediante el uso de los mecanismos de "incluir" y "excluir" admitidos en testNG.

En el siguiente ejemplo, mostramos la sintaxis de cómo usar grupos en el archivo XML.

@Test (groups = { "bonding", "strong_ties" })

Aquí utilizamos 2 nombres de grupo, es decir, "vínculos" y "lazos_fuertes" (estos son los nombres lógicos que pueden modificarse según sus deseos).

<groups> La etiqueta define el inicio de grupos en XML.

Personalice su XML para elegir el grupo mencionado de las clases de prueba. A continuación se menciona la sintaxis de cómo declarar grupos en un archivo XML, p.

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Entonces, supongamos que hay 10 métodos de prueba en una clase.

fuera de ellos,

  • 6 métodos están etiquetados en el grupo "vinculación" y
  • 4 están en el grupo "strong_ties"

En el futuro, configuraremos la ruta maven/Java y usaremos el Eclipse IDE para demostrar el uso de grupos que utilizan archivos XML en Java proyecto maven basado.

Crear XML para TestNG con etiquetas

  • El archivo XML (lenguaje de marcado extensible) en el marco Maven contiene la información de una o más pruebas y está definido por el etiqueta .
  • La información de prueba en XML está representada por etiqueta y puede contener una o más clases TestNG.
  • Una clase Java que contiene @Prueba La anotación anterior sobre los métodos de prueba se define como métodos TestNG.

Se utilizan varias etiquetas en una secuencia para crear un xml testNG que funcione como , y .

  • La primera es la etiqueta , que contiene un nombre lógico que define la información completa que testNG reporta para generar el informe de ejecución.
  • El segundo es , tenga en cuenta que es un nombre lógico que contiene la información del informe de ejecución de la prueba, como aprobar, fallar, omitir casos de prueba y otra información como el tiempo total de ejecución e información del grupo.
  • El tercero es <nombre de clase =”com.group.guru99.TC_Class1” />, com.group.guru99 es el paquete utilizado y el nombre de la clase de prueba es TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?>	
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	
 	<suite name="Suite">	
		<test name="Guru 99 Smoke Test Demo">	
			<groups>	
				<run>	
   					 <include name="strong_ties" />	
        		</run>	
       		</groups>	
			<classes>	
					<class name="com.group.guru99.TC_Class1" />	
           	</classes>	
		</test>	
  </suite>	

Usaremos este XML para el próximo video que se muestra en las secciones siguientes.

"excluir" o "incluir" en XML de prueba

Supongamos que está encontrando el uso del mecanismo de grupo com.plex luego testNG XML facilita la funcionalidad para excluir/incluir una prueba.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

Nota: Podemos incluir/excluir varios casos de prueba una vez a la vez, lo que también funciona con Grupos.

Ejecute TestNG Group, incluya y excluya código (demostración en video)

Explicación del Código Java y XML con el agrupar, excluir e incluir la etiqueta en XML.

Escenario de prueba: Inicie el sitio bancario de demostración de Guru99, verifique algunas cosas en la página de inicio de sesión después de eso, ingrese las credenciales y vuelva a verificar algunas cosas nuevas en la aplicación cuando inicie sesión.

Ejecute TestNG Group, incluya, excluya código

Nota: Cada paso que codifique debe declararse en métodos separados, pero cuando se ejecute, ejecutará métodos de prueba dependiendo de las entradas en el archivo XML.

  • Método 1: Inicialice el navegador e inicie la URL (tc01LaunchURL())
  • Método 2: Verificar el encabezado de la página de inicio de sesión (tc02VerifyLaunchPage())
  • Método 3: Ingrese el nombre de usuario y la contraseña en el formulario de inicio de sesión (tc03EnterCredentials())
  • Método 4: Verifique la presencia del ID del administrador en el panel de usuario (tc04VerifyLoggedInPage())
  • Método 5: Verifique algunos enlaces más en el Panel de usuario (tc05VerifyHyperlinks())

Código para nuestro escenario:

package com.group.guru99;	

import java.util.concurrent.TimeUnit;	

import org.openqa.selenium.By;	
import org.openqa.selenium.WebDriver;	
import org.openqa.selenium.firefox.FirefoxDriver;	
import org.testng.Assert;	
import org.testng.annotations.Test;	

public class TC_Class1 {	
    public static final WebDriver webDriver = new FirefoxDriver();;	

    String launchPageHeading = "//h3[text()='Guru99 Bank']";	
    final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']",	
            signIn_element = "//input[@name='btnLogin']";	
    final String userName_value = "mngr28642", password_value = "ydAnate";	
    final String managerID = "//td[contains(text(),'Manger Id')]";	
    final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']";	

    /**	
     * This test case will initialize the webDriver	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc01LaunchURL() {	
        webDriver.manage().window().maximize();	
        webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);	
        webDriver.get("http://www.demo.guru99.com/V4/");	
    }	

    /**	
     * Will check the presence of Heading on Login Page	
     */	
    @Test(groups = { "bonding" })	
    public void tc02VerifyLaunchPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),	
                "Home Page heading is not displayed");	
        System.out.println("Home Page heading is displayed");	
    }	

    /**	
     * This test case will enter User name, password and will then click on	
     * signIn button	
     */	
    @Test(groups = { "bonding", "strong_ties" })	
    public void tc03EnterCredentials() {	
        webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value);	
        webDriver.findElement(By.xpath(password_element)).sendKeys(password_value);	
        webDriver.findElement(By.xpath(signIn_element)).click();	
    }	

    /**	
     * This test case will verify manger's ID presence on DashBoard	
     */	
    @Test(groups = { "strong_ties" })	
    public void tc04VerifyLoggedInPage() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),	
                "Manager ID label is not displayed");	
        System.out.println("Manger Id label is displayed");	
    }	

    /**	
     * This test case will check the presence of presence of New customer link	
     * And FundTransfer link in Left pannel	
     */	
    @Test(groups = { "bonding" })	
    public void tc05VerifyHyperlinks() {	
        Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),	
                "New customer hyperlink is not displayed");	
        System.out.println("New customer hyperlink is displayed");	

        Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),	
                "Fund Transfer hyperlink is not displayed");	
        System.out.println("Fund Transfer hyperlink is displayed");	
    }	

}	

Tenga en cuenta: las credenciales solo son válidas durante 20 días, por lo que si intenta ejecutar el código en su máquina local, es posible que se produzca un error de credenciales no válidas.

Explicación del código:

Como se mencionó anteriormente, hemos creado 5 casos de prueba para realizar cada acción en métodos independientes.

Para cada método, hemos asociado un parámetro de grupo con algún valor.

Básicamente, estos son los nombres de los grupos diferenciadores, es decir, “lazos fuertes” y “vínculos”.

  • El primer y tercer método están etiquetados como "bonding", "strong_ties", lo que significa que si XML se actualiza en cualquiera de los grupos, esto Caso de prueba se ejecutará.
  • El segundo método solo está etiquetado como grupo de "vinculación", significa que si XML se actualiza con el grupo de vinculación. Sólo en ese caso se ejecutará este caso de prueba.
  • El cuarto caso de prueba está etiquetado como grupo strong_ties, lo que significa que este caso de prueba solo se ejecutará si XML se actualiza con el nombre del grupo strong_ties.
  • El último, pero no menos importante, quinto caso de prueba se adjunta al grupo de vinculación, lo que significa que este caso de prueba solo se ejecutará si XML se actualiza con el nombre del grupo de vinculación.

En general, tenemos 4 escenarios;

Escenario 1: Queremos ejecutar todos los casos de prueba independientemente del nombre del grupo. En este caso, eliminaremos la etiqueta de grupo de la ejecución de XML.

Escenario 2: Queremos ejecutar algunas pruebas que estén relacionadas solo con cualquiera de los grupos, es decir, vínculos fuertes o vínculos. Consulte:

  • En este vídeo, el parámetro de grupo se comenta desde la ejecución de XML. Por lo tanto, verá que se ejecutaron todos los casos de prueba.
  • A continuación del vídeo, ahora que hemos incluido el nombre del grupo en XML, puede ver que solo se están ejecutando casos de prueba específicos de ese grupo.

Escenario 3: Estamos utilizando el mecanismo de exclusión para excluir el caso de prueba. Por favor consulte el vídeo

  • Verá que hemos utilizado excluir algunos casos de prueba (tc02) escribiendo su nombre en XML en ejecución. En el resultado final, los casos de prueba mencionados no se ejecutaron.

Escenario 4: Por último, estamos utilizando el mecanismo de prueba de inclusión para incluir los casos de prueba (tc01LaunchURL, tc03EnterCredentials y tc05VerifyHyperlinks). Por favor consulte el vídeo

En este video, verá que los casos de prueba que se mencionan en XML solo se ejecutan durante la ejecución de la prueba.

Descargue el código del código del ejemplo anterior.

Descargue el código anterior

Conclusión

Aquí hemos aprendido una forma relativamente nueva de ejecutar casos de prueba utilizando XML en el proyecto Maven.

Comenzamos brindando una breve introducción a testNG y continuamos con la especificación técnica completa de Grupos, exclusión e inclusión.