Какой у вас опыт работы с фреймворком TestNG?

«Какой у вас опыт работы с фреймворком TestNG?» — вопрос из категории Автоматизация тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Использовал TestNG как основной фреймворк для автоматизации тестов на Java.

Ключевые используемые возможности:

  • Аннотации: Для управления жизненным циклом тестов (@Test, @BeforeMethod, @AfterMethod, @BeforeSuite).
  • Параметризация тестов: С помощью @DataProvider для запуска одного теста с разными наборами данных.
  • Группировка тестов: Объединение тестов в группы (groups = {"smoke", "regression"}) для selective запуска.
  • Зависимости тестов: Использование dependsOnMethods для определения порядка выполнения.
  • Параллельный запуск: Настройка параллельного выполнения тестов в testng.xml для ускорения прогона.

Пример теста с DataProvider:

@DataProvider(name = "authData")
public Object[][] getAuthData() {
    return new Object[][] {
        { "validUser", "correctPassword", true },
        { "validUser", "wrongPassword", false }
    };
}

@Test(dataProvider = "authData")
public void testLogin(String username, String password, boolean expectedSuccess) {
    boolean actualResult = loginService.authenticate(username, password);
    Assert.assertEquals(actualResult, expectedSuccess, 
        "Unexpected login result for user: " + username);
}

Интеграция и расширение:

  • Интеграция с Maven/Gradle для запуска из командной строки и CI/CD (Jenkins, GitLab CI).
  • Использование TestNG Listeners (ITestListener, IReporter) для кастомной логики: создания скриншотов при падении, расширенного логирования, генерации отчетов.
  • Комбинирование с Selenium WebDriver для UI-тестов и RestAssured для API-тестов.