С какими фреймворками для автоматизации тестирования вы работали?

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

Ответ

Работал с фреймворками для разных уровней тестирования.

UI-тестирование (E2E):

  • Selenium WebDriver: Для автоматизации действий в браузере. Писал стабильные селекторы (по data-testid, CSS). Использовал Page Object Model (POM) для поддержки кода.
  • Cypress: Для современных веб-приложений. Ценю встроенный отладчик, автоматические ожидания и простую настройку.

API-тестирование:

  • REST Assured (Java): Для комплексной проверки REST API (статус-коды, схема ответа, данные).
  • Requests + Pytest (Python): Для гибких скриптов и интеграционных тестов.
  • Postman/Newman: Для быстрого прототипирования запросов и запуска коллекций в CI.

Модульное и интеграционное тестирование:

  • Pytest (Python): Основной фреймворк. Использовал фикстуры, параметризацию, плагины (например, для отчетов).
  • JUnit/TestNG (Java): Для модульных тестов в Java-проектах.

Пример теста на Python (Pytest + Selenium WebDriver):

import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

@pytest.fixture(scope="function")
def browser():
    driver = webdriver.Chrome()
    driver.implicitly_wait(5)
    yield driver
    driver.quit()

def test_user_login(browser):
    """Проверка успешного входа в систему."""
    browser.get("https://app.example.com/login")

    # Ввод учетных данных
    browser.find_element(By.ID, "username").send_keys("test_user")
    browser.find_element(By.ID, "password").send_keys("secure_pass")
    browser.find_element(By.XPATH, "//button[@type='submit']").click()

    # Явное ожидание и проверка успешного входа
    welcome_message = WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".welcome-banner"))
    )
    assert "Welcome, test_user!" in welcome_message.text

Интеграция: Настраивал запуск этих тестов в CI/CD (Jenkins, GitLab CI, GitHub Actions) с формированием отчетов (Allure, pytest-html).