На чём пишешь автотесты?

«На чём пишешь автотесты?» — вопрос из категории Фреймворки тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мой стек для написания автотестов зависит от типа тестирования и технологии приложения.

1. Юнит-тесты:

  • Java: JUnit 5, Mockito для мокинга, AssertJ для удобных assertions.
  • JavaScript/TypeScript: Jest, иногда Mocha + Chai.

2. API-тесты:

  • Основной инструмент: REST Assured для Java или Supertest для JS. Они интегрируются с тем же JUnit/Jest.
    @Test
    public void createUserReturns201() {
        given()
            .contentType(ContentType.JSON)
            .body("{"name": "John"}")
        .when()
            .post("/api/users")
        .then()
            .statusCode(201)
            .body("name", equalTo("John"));
    }
  • Для SOAP — SoapUI или Zeep для Python.

3. E2E-тесты для веба:

  • Selenium WebDriver + Java + TestNG: Для больших проектов. Собираю в связке с Selenide для более лаконичного синтаксиса.
  • Cypress/Playwright: Для современных JS-проектов. Playwright нравится за скорость и кросс-браузерность.

4. Мобильные тесты:

  • Android: Espresso для нативных тестов (пишу на Kotlin).
  • Кросс-платформенные: Appium с тем же Selenium-подобным API.

5. Интеграция и управление: Все это упаковываю в Maven/Gradle проекты, запускаю из Jenkins или GitLab CI. Для отчетов использую Allure, который дает красивые дашборды с шагами, скриншотами и историей запусков.