Какие фреймворки и инструменты для автоматизации тестирования вы использовали?

Ответ

Использовал стек инструментов для разных уровней и типов тестирования:

Для UI-тестирования веб-приложений:

  • Selenium WebDriver — для автоматизации действий в браузере.
  • TestNG / JUnit — как фреймворки для организации тестов, утверждений (assertions) и управления запуском.

Пример теста на Selenium + TestNG (Java):

@Test
public void userCanLoginWithValidCredentials() {
    driver.get("https://app.example.com/login");
    driver.findElement(By.id("username")).sendKeys("standard_user");
    driver.findElement(By.id("password")).sendKeys("secret_sauce");
    driver.findElement(By.cssSelector("[type='submit']")).click();

    String currentUrl = driver.getCurrentUrl();
    Assert.assertTrue(currentUrl.contains("/inventory.html"),
        "После логина пользователь должен быть перенаправлен в инвентарь.");
}

Другие инструменты:

  • Cucumber (с Gherkin) — для Behavior-Driven Development (BDD).
  • REST Assured — для тестирования REST API.
  • Appium — для мобильной автоматизации.
  • Jenkins / GitHub Actions — для интеграции тестов в CI/CD пайплайн.

Ответ 18+ 🔞

Вот, смотри, как я этот зоопарк инструментов по полочкам разложил, чтобы всё не в одну кучу, а с толком, с расстановкой. Прямо как в гаражной мастерской: для двигателя — один ключ, для подвески — другой, а для электрики — третий, и чтоб не перепутать, а то хуй потом разберёшься.

Для того, чтобы браузером, как марионеткой, дёргать (это UI-тестирование):

  • Selenium WebDriver — это наш главный кукловод, который заставляет хром или фаерфокс делать всё, что нам надо: кликать, вводить, скроллить. Без него — нихуя.
  • TestNG или JUnit — это уже такие организаторы-надзиратели. Они говорят: «Этот тест запускай первым, а этот — вторым. А вот тут проверь, что в заголовке страницы написано именно «Инвентарь», а не «Хуинтарь», и если нет — орани во всё горло, что тест провален».

Вот, смотри, как это выглядит в коде, простой тест на логин. Читай и вникай:

@Test
public void userCanLoginWithValidCredentials() {
    driver.get("https://app.example.com/login");
    driver.findElement(By.id("username")).sendKeys("standard_user");
    driver.findElement(By.id("password")).sendKeys("secret_sauce");
    driver.findElement(By.cssSelector("[type='submit']")).click();

    String currentUrl = driver.getCurrentUrl();
    Assert.assertTrue(currentUrl.contains("/inventory.html"),
        "После логина пользователь должен быть перенаправлен в инвентарь.");
}

Видишь? Всё чётко: открыли страницу, нашли поля, вбили в них логин-пароль, ткнули в кнопку. А потом проверяем: «Чувак, а нас, блядь, туда перенаправило, куда надо?». Если да — красота. Если нет — пиши пропало, Assert громко матерится, и тест краснеет, как рак.

А это, сука, ещё не всё! Помимо этого основного набора, есть же куча других специнструментов, для своих специфических делишек:

  • Cucumber (вместе с его язычком Gherkin) — это для любителей поболтать. Пишут тесты почти человеческим языком: «Дано... Когда... Тогда...». Красиво, но иногда такое ощущение, что больше времени уходит на эту писанину, чем на реальную работу. Ёпта.
  • REST Assured — это когда нужно не по кнопкам тыкать, а по API долбить. Просто, элегантно, мощно. Хочешь — GET-запрос шлёшь, хочешь — POST с JSON-ом, размером с «Войну и мир».
  • Appium — это тот же Selenium, только для телефонов. Чтобы автоматизировать эти ваши мобильные приложения, где всё такое маленькое и пальцем не попадёшь.
  • Jenkins или GitHub Actions — это уже тяжелая артиллерия, CI/CD. Чтобы эти все тесты, которые мы написали, не пылились на полке, а сами запускались при каждом новом коммите в код. Принёс разработчик свою «фичу» — система её тут же обложила тестами со всех сторон. Упал хоть один — всё, пайплайн красный, никуда эта фича не ползёт. Красота, блядь!