Top 50 TestNG Preguntas y respuestas de la entrevista (2026)

 arriba TestNG Preguntas y respuestas de la entrevista

Preparándose para un TestNG ¿Entrevista? Es hora de considerar las preguntas que muestran tus fortalezas. Una entrevista sólida... TestNG La base de la entrevista revela profundidad, confianza y preparación valoradas por los equipos de contratación.

Las oportunidades en este campo abarcan el crecimiento de la automatización, la evolución de los marcos de trabajo y las aplicaciones prácticas de pruebas que requieren experiencia técnica y profesional. Trabajar en este campo exige experiencia en el dominio, habilidades de análisis y un conjunto flexible de habilidades que ayuda a los profesionales principiantes, de nivel medio y superior a resolver las preguntas y respuestas más comunes en los niveles técnico, básico y avanzado.
Leer más ...

👉 Descarga gratuita de PDF: TestNG Preguntas y respuestas de la entrevista

arriba TestNG Preguntas y respuestas de la entrevista

1) ¿Qué es TestNG ¿Y por qué se utiliza en pruebas de automatización?

TestNG (Test Next Generation) es un marco de pruebas inspirado en JUnit y NUnit, pero mejorado con funciones avanzadas como agrupación, secuenciación, parametrización y gestión de dependencias. Se utiliza principalmente en pruebas de automatización para optimizar la ejecución de pruebas, mejorar la organización de las pruebas y generar informes HTML y XML detallados.

Beneficios clave de TestNG incluir lo siguiente:

  • soportes ejecución de pruebas paralelas, reduciendo el tiempo total de ejecución.
  • Proporciona anotaciones que controlan el flujo de prueba de manera efectiva.
  • Ofertas pruebas basadas en datos a través de la @DataProvider anotación.
  • genera informes personalizables para una mejor depuración.

Por ejemplo, TestNG le permite ejecutar grupos de pruebas de humo, regresión e integración de forma independiente sin modificar el código de prueba, lo que ofrece flexibilidad y escalabilidad en grandes suites de automatización.


2) Explica el TestNG Ciclo de vida con anotaciones y su orden de ejecución.

El TestNG El ciclo de vida define cómo se inicializan, ejecutan y finalizan las pruebas. Se controla mediante anotaciones que estructuran y aclaran el flujo de pruebas.

Anotación Descripción Orden de ejecución
@BeforeSuite Se ejecuta antes de todas las pruebas de la suite. 1
@BeforeTest Se ejecuta antes <test> etiqueta en XML 2
@BeforeClass Se ejecuta antes del primer método de la clase actual 3
@BeforeMethod Se ejecuta antes de cada método de prueba. 4
@Test Contiene lógica de prueba real 5
@AfterMethod Se ejecuta después de cada método de prueba 6
@AfterClass Se ejecuta después de todos los métodos de la clase. 7
@AfterTest Corre tras <test> etiqueta en XML 8
@AfterSuite Se ejecuta después de todas las pruebas en la suite. 9

Este orden estructurado garantiza una configuración y un desmontaje de pruebas predecibles, algo crucial para mantener la independencia de las pruebas.


3) como es TestNG diferente de JUnit?

Si bien ambos marcos se utilizan para pruebas unitarias, TestNG Proporciona una configuración más robusta y capacidades de ejecución paralela.

Característica JUnit TestNG
Ejecución paralela Soporte limitado Garantía de transporte
Anotaciones Menos (@Before, @After) Más rico (@BeforeSuite, @DataProvider)
Manejo de dependencia No disponible Disponible usando dependsOnMethods
Agrupamiento No se admite Compatible con el uso groups
Parametrización A través de corredores externos Integrado mediante XML o @DataProvider

En resumen, TestNG es preferido para pruebas de automatización a nivel empresarial y la integración con herramientas como Selenium, mientras que JUnit Es ideal para pruebas unitarias más simples.


4) ¿Cuáles son TestNG Anotaciones y ¿para qué sirven?

Anotaciones en TestNG definirlo la estructura y el comportamiento de los métodos de pruebaEliminan la necesidad de una configuración XML compleja al proporcionar control de prueba declarativo directamente en el código.

Las anotaciones comúnmente utilizadas incluyen:

  • @BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod
  • @Test
  • @AfterMethod, @AfterClass, @AfterTest, @AfterSuite

Ejemplo:

@BeforeMethod
public void setup() {
    System.out.println("Initializing browser...");
}

@Test
public void verifyLogin() {
    System.out.println("Executing login test...");
}

Esto ayuda a los desarrolladores a organizar la ejecución de pruebas de forma lógica, garantizando que la configuración, la ejecución de pruebas y el desmontaje se produzcan en un orden definido.


5) Explica el concepto de agrupación en TestNG.

Agrupación en TestNG permite la categorización lógica de las pruebas en conjuntos más pequeños y manejables, como “Humo”, “Regresión” o “Cordura”.

Ejemplo:

@Test(groups = {"Smoke"})
public void loginTest() { ... }
@Test(groups = {"Regression"})
public void paymentTest() { ... }

Puede configurar su suite XML para ejecutar grupos específicos:

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

Beneficios:

  • Facilita la ejecución selectiva de casos de prueba.
  • Mejora la flexibilidad en las canalizaciones de CI/CD.
  • Ahorra tiempo de ejecución durante compilaciones incrementales.

6) ¿Cómo se puede lograr la parametrización en TestNG?

La parametrización permite realizar pruebas basadas en datos, lo que permite ejecutar pruebas con múltiples conjuntos de datos de entrada. TestNG Admite dos métodos principales:

  1. El uso de @Parameters anotación con XML:
  2. <parameter name="browser" value="chrome"/>
    @Test
    @Parameters("browser")
    public void launchBrowser(String browser) { ... }
    
  3. El uso de @DataProvider:
  4. @DataProvider(name="loginData")
    public Object[][] getData() {
      return new Object[][] {{"user1","pass1"}, {"user2","pass2"}};
    }
    
    @Test(dataProvider="loginData")
    public void loginTest(String user, String pass) { ... }
    

Esta flexibilidad facilita el mantenimiento y la ejecución de grandes conjuntos de pruebas en diferentes entornos o configuraciones.


7) ¿Qué son las dependencias en TestNG ¿Y cómo se gestionan?

Dependencias en TestNG controlar el orden de ejecución de la prueba en función de otros resultados de prueba utilizando el dependsOnMethods or dependsOnGroups los atributos.

Ejemplo:

@Test
public void loginTest() { ... }

@Test(dependsOnMethods = {"loginTest"})
public void verifyDashboard() { ... }

Si el método dependiente falla, la prueba posterior se omite automáticamente.

Este mecanismo evita la ejecución de pruebas no válidas y ayuda a mantener integridad de la prueba lógicaEs especialmente útil para flujos funcionales de varios pasos, como iniciar sesión → realizar acción → verificar resultado.


8) ¿Cuáles son las diferentes formas de ejecutar? TestNG pruebas?

TestNG Las pruebas se pueden ejecutar de varias formas flexibles según la configuración de la prueba:

  1. Desde IDE (Eclipse/IntelliJ): Haga clic derecho en la clase o XML fileRun asTestNG Test.
  2. Desde la línea de comandos: java -cp "path\testng.jar;bin" org.testng.TestNG testng.xml
  3. Uso de herramientas de compilación:
    • Experto: Configurar surefire-plugin in pom.xml.
    • Gradle: Use testng Dependencia y configuración de tareas.
  4. A través de pipelines de CI/CD: Integrado con Jenkins o GitHub Actions para ejecución automatizada.

Esta variedad garantiza la compatibilidad entre entornos de desarrollo, prueba y producción.


9) ¿Cuáles son TestNG ¿Los oyentes y por qué son importantes?

Oyentes en TestNG Proporcionar ganchos para personalizar el comportamiento de la prueba al monitorear eventos de ejecución de pruebas como inicio, éxito, falla u omisión.

Oyentes comunes:

  • ITestListener:Realiza un seguimiento de eventos a nivel de método de prueba.
  • ISuiteListener:Observa eventos a nivel de suite.
  • IReporter:Genera informes personalizados.

Ejemplo:

public class CustomListener implements ITestListener {
  public void onTestFailure(ITestResult result) {
    System.out.println("Test Failed: " + result.getName());
  }
}

Los oyentes se utilizan a menudo para tomar capturas de pantalla en caso de fallo, generando registros personalizados o Integración con herramientas de informes como Allure o ExtentReports.


10) ¿Cuáles son las ventajas y desventajas de utilizar TestNG?

Aspecto Ventajas Desventajas
Flexibilidad Admite agrupación, dependencia y ejecución paralela. Configuración XML compleja para suites grandes
Informes Proporciona informes detallados en HTML y XML Personalización limitada sin oyentes
Integración: Funciona a la perfección con Selenium y herramientas CI/CD Curva de aprendizaje ligeramente más alta
Parametrización Soporte integrado para pruebas basadas en datos Requiere mantenimiento para grandes conjuntos de datos

En general, TestNG es un marco robusto y flexible adecuado para entornos de pruebas de automatización modernos a pesar de su mínima sobrecarga de configuración.


11) ¿Cómo se pueden priorizar los casos de prueba en TestNG?

TestNG proporciona priority Atributo en el @Test Anotación para definir el orden en que deben ejecutarse los métodos de prueba. Las pruebas con valores de prioridad más bajos se ejecutan primero.

Ejemplo:

@Test(priority = 1)
public void loginTest() { ... }

@Test(priority = 2)
public void dashboardTest() { ... }

Si no se especifica ninguna prioridad, el valor predeterminado es 0, y los métodos se ejecutan alfabéticamente.

Mejora la práctica: Utilice los valores de prioridad con moderación. Su uso excesivo puede hacer que el orden de las pruebas sea rígido. Para flujos complejos, la gestión de dependencias (dependsOnMethods) es más fácil de mantener que la priorización estricta.


12) Explique el concepto y el uso de la ejecución paralela en TestNG.

Ejecución paralela en TestNG permite que múltiples pruebas, clases o métodos se ejecuten simultáneamente, lo que reduce significativamente el tiempo general de ejecución.

Puede habilitar esta función en el testng.xml archivo:

<suite name="ParallelSuite" parallel="tests" thread-count="3">
  <test name="Test1">...</test>
  <test name="Test2">...</test>
</suite>

Modos paralelos compatibles:

  • tests
  • classes
  • methods
  • instances

Ventajas:

  • Ciclo de retroalimentación más rápido.
  • Utilización eficiente de procesadores multinúcleo.
  • Escalabilidad para grandes suites de automatización.

Sin embargo, asegúrese seguridad de roscas al utilizar recursos compartidos como WebDriver o conexiones de bases de datos.


13) ¿Qué son los proveedores de datos? TestNG¿En qué se diferencian de los parámetros?

@DataProvider permite pruebas basadas en datos proporcionando métodos de prueba con múltiples conjuntos de datos.

Ejemplo:

@DataProvider(name="credentials")
public Object[][] data() {
    return new Object[][] {{"user1", "pass1"}, {"user2", "pass2"}};
}

@Test(dataProvider="credentials")
public void login(String username, String password) { ... }

Diferencia entre @Parameters y @DataProvider:

Característica @Parameters @DataProvider
Fuente de datos Archivo XML Java Método
Tipo de datos Conjunto de datos único Múltiples conjuntos de datos
Flexibilidad Less Alta
Caso de uso Variables de entorno Pruebas repetidas basadas en datos

Por lo tanto, @DataProvider Se prefiere cuando se ejecuta una sola prueba con múltiples conjuntos de datos, como verificar el inicio de sesión con múltiples credenciales.


14) ¿Cómo puedes deshabilitar u omitir una prueba en TestNG?

Puedes desactivar una prueba en TestNG utilizando los enabled atributo o omitiéndolo programáticamente.

1. Usando enabled = false:

@Test(enabled = false)
public void skipTest() {
    System.out.println("This test will not run.");
}

2. Saltar durante el tiempo de ejecución utilizando SkipException:

@Test
public void conditionalSkip() {
    throw new SkipException("Skipping this test due to condition.");
}

La desactivación es útil para desactivando temporalmente pruebas inestables o incompletas sin eliminarlas. Omitirlas es valioso para condiciones de tiempo de ejecución, como omitir pruebas para navegadores no compatibles.


15) ¿Cuál es la función del archivo testng.xml y cuáles son sus componentes principales?

El testng.xml El archivo es la columna vertebral de la configuración de TestNG. Define conjuntos de pruebas, grupos de pruebas, parámetros y configuración de ejecución paralela.

Ejemplo de estructura:

<suite name="AutomationSuite">
  <parameter name="browser" value="chrome"/>
  <test name="RegressionTests">
    <classes>
      <class name="com.test.LoginTest"/>
      <class name="com.test.PaymentTest"/>
    </classes>
  </test>
</suite>

Componentes mayores:

  • <suite> – Define toda la suite.
  • <test> – Representa un bloque de prueba.
  • <classes> – Enumera las clases de prueba.
  • <methods> – Filtra métodos de prueba específicos.
  • <parameter> – Proporciona parámetros globales o de nivel de prueba.

El archivo XML proporciona control centralizado sobre ejecución sin cambiar el código.


16) ¿Cómo se pueden generar informes en TestNG?

TestNG genera automáticamente dos tipos de informes:

  1. Informe HTML (test-output/index.html) – Resume las pruebas aprobadas, reprobadas y omitidas.
  2. Informe XML – Se utiliza para la integración con herramientas CI/CD.

Para informes avanzados, TestNG se integra con:

  • Informes de extensión – Ofrece paneles gráficos y registros detallados.
  • Informes de Allure – Proporciona análisis visuales con pasos de prueba, capturas de pantalla y registros.

Ejemplo de integración:

ExtentReports extent = new ExtentReports();
ExtentTest test = extent.createTest("Login Test");
test.pass("Test Passed Successfully");
extent.flush();

Estos informes son esenciales para rastrear tendencias e identificar áreas débiles en la cobertura de pruebas.


17) ¿En qué se encuentran las fábricas? TestNG¿Y cómo funcionan?

Fábricas en TestNG se utilizan para crear instancias dinámicas de clases de prueba. Permiten la instanciación parametrizada de clases antes de ejecutar pruebas.

Ejemplo:

public class FactoryExample {
  private String browser;

  public FactoryExample(String browser) {
    this.browser = browser;
  }

  @Factory
  public static Object[] factoryMethod() {
    return new Object[] { new FactoryExample("Chrome"), new FactoryExample("Firefox") };
  }

  @Test
  public void testBrowser() {
    System.out.println("Running test on: " + browser);
  }
}

Ventajas:

  • Activa creación de objetos parametrizados.
  • Ideal para prueba de navegador cruzado y ejecución multientorno.
    Las fábricas complementan a los DataProviders cuando se necesitan diferentes configuraciones de objetos en lugar de solo variaciones de datos a nivel de método.

18) ¿Cómo se pueden utilizar las afirmaciones en TestNG?

Las afirmaciones se utilizan para validar los resultados esperados frente a los reales dentro de los métodos de prueba.

Tipos de afirmaciones:

  1. Afirmaciones duras (clase Assert):
    Detiene la ejecución de la prueba inmediatamente en caso de falla.
  2. Assert.assertEquals(actual, expected);
    Assert.assertTrue(condition);
    
  3. Afirmaciones suaves (clase SoftAssert):
    Continúa la ejecución incluso después de una falla, informando todos los problemas al final.
  4. SoftAssert soft = new SoftAssert();
        soft.assertEquals(actual, expected);
        soft.assertAll();
    
  5. Cuándo usar:
    • Utilice afirmaciones contundentes para validación crítica como inicio de sesión exitoso
    • Utilice afirmaciones suaves para múltiples verificaciones dentro de un único método de prueba.

19) Explique la diferencia entre @BeforeMethod y @BeforeClass en TestNG.

Aspecto @BeforeMethod @BeforeClass
Ejecución Ron antes de cada uno método de prueba Ron una vez antes cualquier método en la clase
<b></b><b></b> Por método de prueba Por clase de prueba
Uso común Inicializar el navegador antes de cada prueba Cargar la configuración o la configuración del navegador una vez

Ejemplo:

@BeforeClass
public void setupClass() {
    System.out.println("Executed once per class");
}

@BeforeMethod
public void setupMethod() {
    System.out.println("Executed before each method");
}

Use @BeforeMethod cuando cada prueba necesita un entorno limpio y @BeforeClass para tareas de inicialización pesadas que se pueden reutilizar.


20) ¿Cómo TestNG ¿Admite la inyección de dependencia y cuáles son sus casos de uso?

TestNG apoya inyección de dependencia mediante la inyección integrada de objetos de contexto y configuración como ITestContext, XmlTest o Method.

Ejemplo:

@Test
public void testContextExample(ITestContext context) {
    System.out.println("Suite Name: " + context.getSuite().getName());
}

Casos de uso:

  • Obtención dinámica de parámetros de prueba.
  • Acceder a información de configuración, como nombres de suites o configuraciones de ejecución paralela.
  • Mejorar la flexibilidad de las pruebas sin codificar dependencias.

La inyección de dependencia permite a los desarrolladores escribir pruebas modulares y conscientes del contexto que se adaptan dinámicamente a los cambios del entorno.


21) ¿Cuál es la diferencia entre @Factory y @DataProvider en TestNG?

Ambos @Factory y @DataProvider ayudan con la parametrización, pero operan en niveles diferentes en la arquitectura de prueba.

Característica @Factory @DataProvider
<b></b><b></b> Nivel de clase Nivel de método
Proposito Crea múltiples instancias de una clase con diferentes datos Suministra datos a un único método de prueba
Ejecución Ejecuta la clase completa para cada instancia Ejecuta un método varias veces
Caso de uso ideal Pruebas entre navegadores o entornos Pruebas funcionales basadas en datos

Ejemplo:

  • Fábrica: Ejecuta toda la clase por tipo de navegador.
  • Proveedor de datos: Ejecuta un método de prueba con múltiples conjuntos de datos.

Use @Factory cuando la instanciación del objeto en sí varía, y @DataProvider para la variación de entrada funcional dentro de la misma instancia de objeto.


22) ¿Cómo se pueden reintentar automáticamente los casos de prueba fallidos en TestNG?

TestNG proporciona un mecanismo para volver a ejecutar los casos de prueba fallidos utilizando los IRetryAnalyzer de la interfaz del.

Ejemplo de implementación:

public class RetryAnalyzer implements IRetryAnalyzer {
  int count = 0;
  int maxTry = 2;

  public boolean retry(ITestResult result) {
    if (count < maxTry) {
      count++;
      return true;
    }
    return false;
  }
}

Uso:

@Test(retryAnalyzer = RetryAnalyzer.class)
public void testLogin() {
   Assert.fail("Intentional Failure");
}

Beneficios:

  • Reduce la inestabilidad en las tuberías de CI.
  • Maneja problemas transitorios de red o entorno.

Mejora la práctica: Combine la lógica de reintento con el registro y las capturas de pantalla adecuados para depurar fallas intermitentes.


23) ¿Cuál es el uso de ITestContext en TestNG?

ITestContext proporciona Información contextual sobre la ejecución de la prueba, incluido el nombre de la suite, el nombre de la prueba, el directorio de salida y los parámetros.

Ejemplo:

@Test
public void contextExample(ITestContext context) {
    System.out.println("Suite: " + context.getSuite().getName());
}

Métodos clave:

  • getSuite() – Recupera información a nivel de suite.
  • getName() – Devuelve el nombre de la prueba.
  • setAttribute() / getAttribute() – Compartir datos entre pruebas.

Permite intercambio de datos entre métodos de prueba o clases y facilita la generación de informes y registros dinámicos.


24) ¿Cómo se puede crear dependencia entre grupos de pruebas en TestNG?

Puede definir dependencias entre grupos utilizando el dependsOnGroups Atributo en el @Test anotación.

Ejemplo:

@Test(groups = "Login")
public void login() { ... }

@Test(dependsOnGroups = "Login")
public void verifyProfile() { ... }

Esto asegura que el verifyProfile El grupo se ejecuta solo si todas las pruebas en el Login Pase de grupo realizado con éxito.

Es particularmente útil en pruebas de integración, donde los módulos dependen de la ejecución exitosa de otros (por ejemplo, flujo de inicio de sesión → perfil → cierre de sesión).


25) ¿Cómo se pueden ignorar ciertos métodos de prueba en un TestNG ¿Archivo XML?

Puede explícitamente métodos de exclusión dentro de una clase en el archivo de suite XML utilizando <exclude> las etiquetas.

Ejemplo:

<class name="com.test.LoginTests">
  <methods>
    <exclude name="verifyLogout"/>
  </methods>
</class>

Esto permite a los evaluadores deshabilitar métodos específicos temporalmente sin modificar el Java Código fuente: útil en suites grandes donde se necesita inclusión o exclusión dinámica según los ciclos de lanzamiento o las prioridades de sprint.


26) ¿Cómo puedo TestNG integrarse con Selenium ¿Conductor web?

TestNG y Selenium forman una combinación poderosa para la automatización de la interfaz de usuario.

Una configuración de integración típica implica organizar pruebas mediante anotaciones, administrar la configuración y el desmontaje y ejecutar pruebas a través de herramientas XML o CI.

Ejemplo:

@BeforeMethod
public void setup() {
    driver = new ChromeDriver();
}

@Test
public void verifyTitle() {
    driver.get("https://example.com");
    Assert.assertEquals(driver.getTitle(), "Example Domain");
}

@AfterMethod
public void teardown() {
    driver.quit();
}

Beneficios de integración:

  • Activa pruebas de navegadores paralelos.
  • Simplifica Agrupación de pruebas y generación de informes.
  • Funciona a la perfección con pipelines de CI / CD como Jenkins o GitHub Actions.

27) ¿Cuáles son algunas de las mejores prácticas al utilizar? TestNG ¿en grandes marcos de automatización?

Mejores Prácticas:

  1. Use DescriptNombre ive: Las pruebas de nombres se basan en el comportamiento, no en la implementación.
  2. Agrupación de apalancamiento: Crear grupos de pruebas lógicos (humo, regresión).
  3. Evite codificar de forma rígida: Utilice parámetros o archivos de propiedades para los datos de prueba.
  4. Minimizar dependencias: Mantenga los casos de prueba independientes siempre que sea posible.
  5. Centralizar la configuración: Use testng.xml para la configuración de la suite.
  6. Integrar informes: Utilice oyentes o herramientas de terceros como ExtentReports.
  7. Utilice la lógica de reintento con precaución: Evite enmascarar defectos genuinos.

Siguiendo estas garantías escalabilidad, mantenibilidad y legibilidad en la automatización a nivel empresarial.


28) ¿Cuál es la diferencia entre @BeforeTest y @BeforeSuite en TestNG?

Característica @BeforeTest @BeforeSuite
<b></b><b></b> Corre antes de cada uno <test> etiqueta en XML Se ejecuta una vez antes de toda la suite.
Frecuencia Varias veces (si son varias) <test> bloques) Sólo una vez por suite
Uso común Inicializar la configuración de nivel de prueba Configurar recursos globales

Ejemplo:

@BeforeSuite
public void setupSuite() {
    System.out.println("Global setup for suite.");
}

@BeforeTest
public void setupTest() {
    System.out.println("Setup for each <test> tag.");
}

Use @BeforeSuite para preguntas de configuraciones globales (por ejemplo, conexión a base de datos) y @BeforeTest para preguntas de inicializaciones específicas de la prueba.


29) puede TestNG ¿Se puede usar para pruebas de API? ¿Cómo?

Sí. TestNG se puede utilizar eficazmente para Pruebas de API mediante la integración con bibliotecas de cliente HTTP como Está seguro or Cliente Http.

Ejemplo:

@Test
public void verifyApiResponse() {
    Response response = RestAssured.get("https://api.example.com/users");
    Assert.assertEquals(response.getStatusCode(), 200);
}

Ventajas:

  • Activa validación basada en afirmaciones de respuestas.
  • soportes parametrización y pruebas basadas en datos para múltiples puntos finales.
  • genera informes estructurados para validaciones de API REST.

Combinando TestNG y RestAssured, los evaluadores pueden mantener un marco de automatización unificado para las pruebas de UI y API.


30) ¿Cómo se pasan parámetros desde la línea de comandos en TestNG?

Puede anular los parámetros XML en tiempo de ejecución pasando propiedades del sistema mediante el comando -D bandera.

Ejemplo de comando:

mvn test -Dbrowser=chrome -Denv=staging

Ejemplo de código:

@Parameters("browser")
@Test
public void launch(@Optional("firefox") String browser) {
    System.out.println("Running on: " + browser);
}

Esto permite selección de entorno dinámico en pipelines CI/CD sin cambiar archivos de configuración, lo que mejora la flexibilidad de las pruebas.


31) ¿Cómo se puede controlar el orden de ejecución de las pruebas en TestNG ¿Sin utilizar prioridades?

En lugar de usar priority, TestNG permite el control a través de dependencias y Ordenación de métodos XML.

Métodos:

  1. El uso de dependsOnMethods:
  2. @Test
    public void login() { ... }
    
    @Test(dependsOnMethods = "login")
    public void verifyDashboard() { ... }
    
  3. Usando la secuencia de métodos XML:
  4. <classes>
      <class name="com.test.LoginTests">
        <methods>
          <include name="login"/>
          <include name="verifyDashboard"/>
        </methods>
      </class>
    </classes>
    

Mejora la práctica: Prefiera dependencias lógicas para flujos complejos en lugar de prioridades estáticas, lo que garantiza conjuntos de pruebas robustos y fáciles de mantener.


32) ¿Cómo se pueden ejecutar métodos de prueba específicos desde la línea de comandos en TestNG?

TestNG permite ejecución de pruebas a nivel de método directamente desde la línea de comandos utilizando XML o configuraciones Maven Surefire.

Opción 1: Usar archivo XML

<class name="com.test.LoginTests">
  <methods>
    <include name="verifyLogin"/>
  </methods>
</class>

Opción 2: Comando Maven

mvn test -Dtest=com.test.LoginTests#verifyLogin

Este enfoque permite ejecución selectiva, útil para depurar métodos individuales o validar funcionalidades críticas durante compilaciones rápidas.


33) ¿Cómo se parametrizan las pruebas utilizando un archivo Excel externo en TestNG?

La parametrización basada en Excel es común en marcos basados ​​en datos donde los datos de prueba cambian con frecuencia.

Pasos de implementación:

  1. Use PDI de Apache or JExcel para leer datos de Excel.
  2. Introducirlo en un @DataProvider método.

Ejemplo:

@DataProvider(name = "excelData")
public Object[][] readExcel() throws Exception {
    FileInputStream fis = new FileInputStream("data.xlsx");
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    XSSFSheet sheet = wb.getSheetAt(0);
    Object[][] data = new Object[sheet.getLastRowNum()][2];
    for (int i = 0; i < sheet.getLastRowNum(); i++) {
        data[i][0] = sheet.getRow(i + 1).getCell(0).getStringCellValue();
        data[i][1] = sheet.getRow(i + 1).getCell(1).getStringCellValue();
    }
    return data;
}

Esto permite ejecutar el mismo método de prueba con múltiples conjuntos de datos del mundo real desde Excel, lo que aumenta la flexibilidad y la cobertura.


34) ¿Cómo puedes correr? TestNG ¿Pruebas en Jenkins o pipelines CI/CD?

TestNG se integra perfectamente con Jenkins, CI de GitLab o Acciones de GitHub a través de Maven o Gradle construcciones

Pasos en Jenkins:

  1. Instalar Complemento de integración de Maven.
  2. Créar un Trabajo de estilo libre o pipeline.
  3. Añada mvn clean test como un paso de construcción.
  4. Después de la creación, configure los informes HTML:
    • Directorio de informes: test-output
    • Archivo de índice: index.html

Beneficios:

  • Permite pruebas de regresión automatizadas.
  • Proporciona ejecuciones de pruebas programadas y seguimiento de tendencias.
  • Garantiza la ejecución consistente de pruebas en todos los entornos.

35) ¿Cuál es el propósito de @Parameters y en qué se diferencia de @Optional?

Ambas anotaciones tratan sobre parametrización pero tienen propósitos distintos.

Característica @Parameters @Optional
Proposito Pasa parámetros del archivo XML Proporciona un valor predeterminado si falta el parámetro
Declaración Utilizado con XML <parameter> Utilizado dentro del método de prueba
Comportamiento Lanza un error si falta el valor Utiliza valor de respaldo

Ejemplo:

@Test
@Parameters("browser")
public void runTest(@Optional("chrome") String browser) {
    System.out.println("Running on: " + browser);
}

El uso de @Optional asegura prueba de estabilidad cuando las configuraciones XML están incompletas.


36) ¿Cómo se manejan las dependencias de pruebas entre diferentes clases en TestNG?

Para crear dependencias entre clases, TestNG permite utilizar el dependsOnGroups atributo.

Ejemplo:

@Test(groups = "Login")
public void loginTest() { ... }

@Test(groups = "Dashboard", dependsOnGroups = "Login")
public void dashboardTest() { ... }

Este enfoque ayuda a gestionar dependencias multimódulo donde cada clase representa un módulo (Inicio de sesión, Panel de control, Pago, etc.).

Asegura que los módulos dependientes se ejecuten sólo si las pruebas de prerrequisitos tienen éxito, manteniendo la integridad de la prueba.


37) ¿Qué son los fallos de configuración en TestNG¿Y cómo se pueden manejar?

Se producen errores de configuración cuando se utilizan métodos de instalación o desmontaje anotados con @Before* or @After* fallar.

Pueden causar pruebas dependientes para omitir, incluso si esas pruebas son correctas.

Causas comunes:

  • Inicialización incorrecta de WebDriver.
  • Problemas de configuración de la base de datos o del entorno.
  • Configuración incorrecta de parámetros.

Soluciones:

  • Use trata de atraparlo bloques en los métodos de configuración.
  • Aplicar alwaysRun = true para garantizar que la limpieza se realice a pesar de los fallos.

Ejemplo:

@BeforeMethod(alwaysRun = true)
public void setup() {
    // Setup logic
}

Esto garantiza que sus métodos de desmontaje sigan ejecutándose, manteniendo la estabilidad del entorno de prueba.


38) ¿Cuál es el uso de los atributos invocationCount y threadPoolSize en TestNG?

Estos atributos permiten ejecución de pruebas repetidas y paralelas del mismo método.

Ejemplo:

@Test(invocationCount = 5, threadPoolSize = 2)
public void loadTest() {
    System.out.println("Running load test...");
}
Atributo Descripción
invocationCount Número de veces que se ejecuta un método
threadPoolSize Número de subprocesos simultáneos

Caso de uso: Pruebas de rendimiento, verificación de estabilidad o reproducción de comportamiento inestable en múltiples ejecuciones.


39) ¿Cómo se ejecutan solo casos de prueba fallidos en TestNG?

Después de una carrera en suite, TestNG genera un archivo llamado testng-failed.xml en el cuadro test-output directorio.

Puedes volver a ejecutar únicamente las pruebas fallidas ejecutando:

java -cp testng.jar org.testng.TestNG test-output/testng-failed.xml

Ventajas:

  • Ahorra tiempo al omitir pruebas exitosas.
  • Facilita la depuración en suites grandes.
  • Se utiliza comúnmente en canalizaciones de CI para realizar nuevas pruebas rápidas.

También puedes integrar esto con Jenkins usando un script posterior a la compilación para repeticiones.


40) ¿Cuáles son algunas limitaciones de TestNG ¿Y cómo se pueden mitigar?

A pesar de su robustez, TestNG Tiene algunas limitaciones.

Limitación Estrategia de mitigación
Complejidad de configuración XML Utilice configuraciones y constructores basados ​​en anotaciones
Información nativa limitada Integrar ExtentReports o Allure
Sin control de reintento incorporado Implementar IRetryAnalyzer
Preocupaciones sobre la seguridad de los subprocesos en ejecuciones paralelas Utilice instancias de WebDriver locales del subproceso
Curva de aprendizaje para principiantes Mantener estructuras de proyectos basadas en plantillas

Con un diseño de marco adecuado y las mejores prácticas, estas limitaciones se pueden minimizar, garantizando soluciones de automatización estables y mantenibles.


41) ¿Cómo se utilizan los oyentes para registrar y capturar capturas de pantalla en Selenium-TestNG?

Oyentes en TestNG ayudar a supervisar la ejecución de pruebas y realizar acciones como registrar, tomar capturas de pantalla o informar resultados de forma dinámica.

Ejemplo de implementación:

public class ScreenshotListener implements ITestListener {
  @Override
  public void onTestFailure(ITestResult result) {
      WebDriver driver = ((BaseTest) result.getInstance()).getDriver();
      File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(src, new File("screenshots/" + result.getName() + ".png"));
  }
}

Uso:

@Listeners(ScreenshotListener.class)
public class LoginTests extends BaseTest { ... }

Beneficios:

  • Captura fallas automáticamente.
  • Mejora la depuración a través de evidencia visual.
  • Reduce el esfuerzo manual en el mantenimiento de registros.

Esta técnica es crucial en los procesos de automatización de CI/CD, especialmente cuando se diagnostican compilaciones fallidas de forma remota.


42) ¿Cuál es la diferencia entre IReporter y ITestListener en TestNG?

Característica IReporter ITestListener
Proposito Genera informes personalizados posteriores a la ejecución de la prueba. Realiza un seguimiento y reacciona a los eventos de prueba en tiempo de ejecución.
Invocación Después de completar todas las pruebas Durante el ciclo de vida de la prueba (inicio, éxito, fracaso)
Salida Informes HTML/XML/JSON Archivos de registro, capturas de pantalla, paneles en vivo
Uso común Integración de ExtentReports y Allure Registro, gestión de fallos, mecanismos de reintento

Ejemplo:

  • Use IReporter para construir informes completos después de completar la prueba.
  • Use ITestListener para preguntas de registro en tiempo real o capturas de pantalla.

También pueden ser combinado para construir sistemas de análisis de automatización de extremo a extremo.


43) ¿Cómo se realizan pruebas entre navegadores utilizando TestNG ¿Configuración XML?

Las pruebas entre navegadores garantizan que la misma funcionalidad funcione en diferentes navegadores.

Configuración de ejemplo:

<suite name="CrossBrowserSuite" parallel="tests">
  <test name="ChromeTest">
    <parameter name="browser" value="chrome"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
  <test name="FirefoxTest">
    <parameter name="browser" value="firefox"/>
    <classes><class name="com.test.LoginTest"/></classes>
  </test>
</suite>

Java Código:

@Parameters("browser")
@BeforeClass
public void setup(String browser) {
    if(browser.equalsIgnoreCase("chrome"))
        driver = new ChromeDriver();
    else if(browser.equalsIgnoreCase("firefox"))
        driver = new FirefoxDriver();
}

Este enfoque permite ejecución paralela en múltiples navegadores, acelerando la cobertura de pruebas en todas las plataformas.


44) ¿Cómo se integra? TestNG con Docker o Selenium Rejilla?

TestNG se integra perfectamente con Dockerizado Selenium Cuadrícula para permitir pruebas paralelas distribuidas.

Pasos:

  1. Configurar flujos de trabajo de Selenium Cuadrícula en Docker usando el oficial Selenium imagen:
    docker run -d -p 4444:4444 --name selenium-grid selenium/standalone-chrome
  2. Actualizar TestNG configuración:
  3. DesiredCapabilities caps = new DesiredCapabilities();
    caps.setBrowserName("chrome");
    driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), caps);
    
  4. Ejecute su suite a través de Jenkins o la canalización CI.

Beneficios:

  • Activa pruebas paralelas escalables.
  • Reduce la sobrecarga de configuración del entorno.
  • Proporciona ejecución de pruebas consistente a través de contenedores distribuidos.

45) ¿Cuál es la diferencia entre la ejecución paralela en los niveles de suite, prueba y método en TestNG?

Nivel Atributo paralelo Comportamiento de ejecución
Suite parallel="suites" Ejecuta múltiples suites simultáneamente
Prueba parallel="tests" Ron <test> bloques simultáneamente
Clase parallel="classes" Ejecuta clases de prueba en paralelo
Método parallel="methods" Ejecuta métodos de prueba individuales en paralelo

Ejemplo:

<suite name="ParallelTests" parallel="methods" thread-count="3">
  <test name="SampleTest">
    <classes><class name="com.test.ParallelExample"/></classes>
  </test>
</suite>

Mejora la práctica:Use parallel="classes" para la estabilidad en Selenium pruebas para evitar conflictos de controladores compartidos.


46) ¿Cómo se pueden compartir datos entre pruebas sin utilizar variables globales? TestNG?

TestNG proporciona ITestContext y inyección de dependencia para compartir datos dinámicamente.

Ejemplo:

@Test
public void storeData(ITestContext context) {
    context.setAttribute("token", "abc123");
}

@Test(dependsOnMethods = "storeData")
public void useData(ITestContext context) {
    String token = (String) context.getAttribute("token");
    System.out.println("Using token: " + token);
}

Esto evita las variables estáticas, mantiene la seguridad del hilo y garantiza aislamiento de datos entre pruebas.


47) ¿Cómo se capturan y registran las pruebas omitidas en TestNG?

Puedes capturar pruebas omitidas usando onTestSkipped() en el cuadro ITestListener de la interfaz del.

Ejemplo:

@Override
public void onTestSkipped(ITestResult result) {
    System.out.println("Skipped Test: " + result.getName());
}

Razones para saltarse:

  • Fallo de prueba dependiente.
  • Salto condicional mediante SkipException.
  • Indisponibilidad del entorno.

Mejora la práctica:
Registre los motivos de omisión y los seguimientos de pila para la trazabilidad en informes o paneles de CI.


48) Explique cómo parametrizar las pruebas de API REST utilizando TestNG y quédese tranquilo.

TestNG, @DataProvider Se integra elegantemente con Está seguro para la parametrización de API.

Ejemplo:

@DataProvider(name = "apiData")
public Object[][] apiData() {
  return new Object[][] {
    {"https://api.example.com/users/1"},
    {"https://api.example.com/users/2"}
  };
}

@Test(dataProvider = "apiData")
public void testApi(String url) {
  Response response = RestAssured.get(url);
  Assert.assertEquals(response.getStatusCode(), 200);
}

Ventajas:

  • Ejecuta la misma llamada API para múltiples puntos finales o cargas útiles.
  • Simplifica las pruebas de regresión para API con conjuntos de entrada variables.
  • Se integra perfectamente con herramientas e informes de CI.

49) ¿Cómo se crean anotaciones personalizadas en TestNG ¿Para patrones de prueba reutilizables?

Las anotaciones personalizadas pueden estandarizar configuraciones o validaciones de pruebas repetitivas.

Ejemplo:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SmokeTest {
  String description() default "Smoke Test";
}

Uso:

@SmokeTest(description="Validating Login Functionality")
@Test
public void loginTest() { ... }

Combinados con la reflexión, puedes leer dinámicamente estas anotaciones para agrupar pruebas o impulsar la ejecución condicional.

Esta técnica es ampliamente utilizada en metaprogramación del marco para construir pruebas autodocumentadas.


50) ¿Cómo puedes combinar? Cucumber y TestNG ¿Para marcos de pruebas híbridos?

TestNG puede actuar como corredor de pruebas para preguntas de Cucumber Escenarios BDD que ofrecen potentes funciones de generación de informes y paralelización.

Ejemplo de corredor:

@CucumberOptions(
  features = "src/test/resources/features",
  glue = "stepDefinitions",
  plugin = {"pretty", "html:target/cucumber-report.html"}
)
public class RunCucumberTest extends AbstractTestNGCucumberTests { }

Ventajas:

  • Aprovecha TestNG, anotaciones, oyentes e informes.
  • soportes ejecución de funciones paralelas.
  • Se integra con Allure y Informes de extensión fácilmente.

Este enfoque híbrido fusiona Legibilidad de BDD con TestNG flexibilidad, ideal para marcos de nivel empresarial.


🔍 Arriba TestNG Preguntas de entrevista con situaciones reales y respuestas estratégicas

A continuación se presentan 10 ejemplos realistas y relevantes para el dominio. TestNG Preguntas de entrevista junto con expectativas claras y ejemplos de respuestas contundentes.

1) ¿Puedes explicar las principales ventajas de utilizar? TestNG en comparación con JUnit?

Se espera del candidato: Demostrar comprensión de TestNGCaracterísticas mejoradas de y por qué a menudo se prefiere para la automatización empresarial.

Respuesta de ejemplo: "TestNG Ofrece varias ventajas, como una configuración de pruebas flexible, compatibilidad con la ejecución paralela, métodos de prueba dependientes, pruebas basadas en datos con DataProviders e informes integrados. Estas capacidades hacen... TestNG “más potente para marcos de automatización complejos que requieren escalabilidad”.


2) ¿Cómo lo usas? TestNG ¿Anotaciones para controlar el flujo de ejecución de pruebas?

Se espera del candidato: Conocimiento del propósito y orden de las anotaciones.

Respuesta de ejemplo: "TestNG Ofrece anotaciones como @BeforeSuite, @BeforeClass, @BeforeMethod, @Test y sus correspondientes anotaciones de desmontaje. Estas permiten organizar de forma estructurada la configuración y la limpieza de las pruebas. Por ejemplo, @BeforeMethod se ejecuta antes de cada método de prueba, lo cual resulta útil para inicializar el estado del navegador.


3) Describa un proyecto de automatización desafiante donde TestNG jugó un papel clave.

Se espera del candidato: Experiencia real en proyectos y capacidad para articular la resolución de problemas.

Respuesta de ejemplo: “En mi puesto anterior, trabajé en un proyecto que requería pruebas de regresión exhaustivas en múltiples entornos. TestNGLas funciones de agrupación y ejecución paralela permitieron al equipo ejecutar suites críticas simultáneamente, reduciendo significativamente el tiempo de ejecución y manteniendo la confiabilidad”.


4) ¿Cómo TestNG ¿Los grupos ayudan a organizar y ejecutar pruebas de manera eficiente?

Se espera del candidato: Comprensión de la agrupación, incluidos los mecanismos de inclusión/exclusión.

Respuesta de ejemplo: “Grupos en TestNG Permite la categorización de casos de prueba como humo, regresión e integración. Con testng.xml, puedo ejecutar grupos selectivamente, excluir pruebas inestables y administrar diferentes conjuntos de pruebas sin modificar el código.


5) Describe una situación en la que tuviste que depurar un error. TestNG Pruebas. ¿Cuál fue su enfoque?

Se espera del candidato: Pensamiento crítico y habilidades de resolución de problemas.

Respuesta de ejemplo: “En un puesto anterior, me encontré con un conjunto de fallas TestNG Pruebas que parecían pasar localmente, pero fallaron en CI. Habilité el registro detallado, revisé el orden de ejecución y descubrí que un recurso compartido no se restablecía entre pruebas. Luego, implementé los pasos de desmontaje adecuados con @AfterMethod para garantizar el aislamiento de las pruebas.


6) ¿Cómo se implementan las pruebas basadas en datos utilizando? TestNG?

Se espera del candidato: Comprensión de los proveedores de datos y casos de uso.

Respuesta de ejemplo: Creo un método @DataProvider que devuelve datos en matrices de objetos y luego lo vinculo a un método @Test mediante el atributo dataProvider. Esto permite múltiples iteraciones de la misma prueba con diferentes conjuntos de entrada, lo cual resulta útil para validar envíos de formularios o variaciones en la carga útil de la API.


7) ¿Cómo se gestionan las dependencias de las pruebas en TestNG?

Se espera del candidato: Uso adecuado de dependsOnMethods o dependsOnGroups.

Respuesta de ejemplo: "TestNG Permite las dependencias de prueba mediante los atributos dependsOnMethods y dependsOnGroups. Utilizo dependencias cuando una prueba debe ejecutarse solo después de que otra se complete correctamente, como verificar un pedido solo después de crearlo.


8) Describe cómo has utilizado TestNG con herramientas de integración continua.

Se espera del candidato: Experiencia en automatización de tuberías en el mundo real.

Respuesta de ejemplo: “En mi trabajo anterior, integré TestNG con Jenkins configurando la compilación de Maven para generar TestNG Informes HTML y XML. Jenkins archivó los informes y mostró los resultados después de cada ciclo de compilación. Esta integración ayudó al equipo a rastrear errores rápidamente y a mantener la estabilidad de la versión.


9) Cuénteme sobre una ocasión en la que tuvo que trabajar con plazos ajustados mientras gestionaba múltiples tareas de automatización.

Se espera del candidato: Gestión del tiempo y capacidad de priorizar.

Respuesta de ejemplo: “En mi último puesto, necesitaba actualizar los datos existentes TestNG conjuntos de pruebas, a la vez que creaba otros nuevos para una próxima versión. Prioricé las tareas según su impacto en el negocio, automaticé primero las áreas de mayor riesgo y utilicé TestNG Agrupación para aislar las secciones completadas para una revisión temprana. Esto garantizó una entrega puntual sin comprometer la calidad.


10) ¿Cómo diseñarías un sistema escalable? TestNG ¿Marco para una aplicación grande?

Se espera del candidato: ArchiComprensión de la arquitectura, patrones y mejores prácticas.

Respuesta de ejemplo: “Diseñaría un marco modular utilizando el modelo de objetos de página, integraría TestNG Para la gestión de la ejecución, usaría DataProviders para escenarios basados ​​en datos. También configuraría la ejecución paralela, centralizaría las utilidades y externalizaría la configuración para que el marco se mantenga escalable y fácil de mantener a medida que la aplicación crece.

Resumir este post con: