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

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

Ответ

Выбор фреймворка зависит от типа тестов и технологического стека проекта.

1. Для UI-тестов (E2E):

  • Selenium WebDriver + pytest (Python): Классическое решение для кросс-браузерного тестирования.

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    def test_login_success():
        driver = webdriver.Chrome()
        driver.get("https://app.example.com/login")
        driver.find_element(By.ID, "username").send_keys("standard_user")
        driver.find_element(By.ID, "password").send_keys("secret_sauce")
        driver.find_element(By.ID, "login-button").click()
        assert driver.current_url == "https://app.example.com/inventory.html"
        driver.quit()
  • Playwright (Node.js/Python/Java/.NET): Современный инструмент с автоматическим ожиданием элементов и поддержкой нескольких браузеров.

2. Для API-тестов:

  • pytest + requests (Python): Гибкое и простое решение.

    import requests
    
    def test_create_user():
        url = "https://api.example.com/users"
        payload = {"name": "John", "job": "Engineer"}
        response = requests.post(url, json=payload)
    
        assert response.status_code == 201
        assert response.json()["name"] == payload["name"]
        assert "id" in response.json()  # Проверяем, что ID создан
  • REST Assured (Java): Доменно-специфичный язык (DSL) для тестирования REST API в Java-проектах.

3. Для модульных (Unit) тестов:

  • unittest/pytest (Python), JUnit/TestNG (Java), Jest/Vitest (JavaScript/TypeScript).

Критерии выбора: язык команды, требования к скорости выполнения, необходимость тестирования на разных браузерах (для UI) и интеграция с CI/CD.