THREADQA
    THREADQA
    Главная
    Курсы
    Java QA AutomationNEW
    Новый курс · уже можно купить
    Python QA Automation
    Pytest, Playwright, Docker
    iOS QA Automation
    XCTest, XCUITest, Fastlane
    Все курсы
    Сравнить Java / Python / iOS
    Практика
    Мок собеседование
    Тренировка перед реальным интервью
    XPath Practice Hub
    Тренажёр XPath-запросов
    Roadmap
    Путь QA-инженера
    Тренажёры
    SQL, Git, Docker, Linux, тест-дизайн
    QA игры
    8 мини-игр для тестировщика
    XPath Dinner
    Практика XPath в игровом формате
    Каталог инструментов
    Инструменты тестирования и сравнения
    Глоссарий ИИ-тестирования
    LLM, RAG, метрики, evals
    С чего начать
    Блог
    FAQ
    Для компаний
    1. Домой
    2. Инструменты тестирования
    3. REST Assured
    API-тестированиеСредний

    REST Assured
    что это и как начать

    REST Assured — Java-библиотека для тестирования REST API с BDD-синтаксисом given/when/then. Отправляет HTTP-запросы, проверяет статус, заголовки и тело ответа (JSON/XML через JsonPath и Hamcrest) и работает поверх JUnit 5 или TestNG. Это самый распространённый выбор для API-автотестов в Java-проектах.

    Автор: Олег Пендрак · Обновлено 19 сентября 2026 г.

    Когда выбирать REST Assured

    Подходит

    • Команда пишет автотесты на Java и использует JUnit 5 или TestNG.
    • Нужны читаемые проверки JSON без ручного разбора ответа.
    • Нужно переиспользовать общие заголовки, авторизацию и базовый URL через спецификации.
    • API-тесты должны идти в CI вместе с остальными Java-тестами и Allure-отчётом.

    Не подходит

    • Команда пишет на Python или TypeScript — используйте requests/HTTPX или Supertest.
    • Нужно быстро исследовать API руками — удобнее Postman или Hoppscotch.
    • Нужен нагрузочный тест — для этого k6, Gatling или JMeter.

    Установка

    Java
    <dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <version>5.5.0</version>
      <scope>test</scope>
    </dependency>

    Примеры тестов

    GET-запрос с проверкой ответа

    UsersApiTest.java
    1import static io.restassured.RestAssured.given;
    2import static org.hamcrest.Matchers.*;
    3
    4import org.junit.jupiter.api.Test;
    5
    6class UsersApiTest {
    7
    8    @Test
    9    void getUser_returnsProfile() {
    10        given()
    11            .baseUri("https://reqres.in/api")
    12        .when()
    13            .get("/users/2")
    14        .then()
    15            .statusCode(200)
    16            .body("data.id", equalTo(2))
    17            .body("data.email", containsString("@"));
    18    }
    19}

    Проверки в body() читают значения по пути JsonPath, Hamcrest-матчеры дают понятные сообщения об ошибках.

    POST с телом и десериализацией в объект

    CreateUserTest.java
    1import static io.restassured.RestAssured.given;
    2import static org.junit.jupiter.api.Assertions.assertEquals;
    3
    4import io.restassured.http.ContentType;
    5import java.util.Map;
    6import org.junit.jupiter.api.Test;
    7
    8class CreateUserTest {
    9
    10    record CreatedUser(String name, String job, String id) {}
    11
    12    @Test
    13    void createUser_returnsId() {
    14        CreatedUser user = given()
    15            .baseUri("https://reqres.in/api")
    16            .contentType(ContentType.JSON)
    17            .body(Map.of("name", "Anna", "job", "QA"))
    18        .when()
    19            .post("/users")
    20        .then()
    21            .statusCode(201)
    22            .extract().as(CreatedUser.class);
    23
    24        assertEquals("Anna", user.name());
    25    }
    26}

    extract().as() превращает ответ в объект, и дальше проверки идут обычными assert без JsonPath-строк.

    Общая спецификация запросов

    ApiSpecs.java
    1import io.restassured.builder.RequestSpecBuilder;
    2import io.restassured.http.ContentType;
    3import io.restassured.specification.RequestSpecification;
    4
    5public final class ApiSpecs {
    6
    7    public static RequestSpecification base() {
    8        return new RequestSpecBuilder()
    9            .setBaseUri("https://reqres.in/api")
    10            .setContentType(ContentType.JSON)
    11            .addHeader("x-api-key", System.getenv("API_KEY"))
    12            .build();
    13    }
    14}
    15
    16// в тесте: given().spec(ApiSpecs.base()).when().get("/users/2")...

    Спецификация убирает копипасту базового URL, заголовков и авторизации из каждого теста.

    Типичные ошибки

    Токены и URL прямо в тестах
    Выносите базовый URL и секреты в переменные окружения и RequestSpecification, иначе тесты нельзя запустить на другом стенде.
    Проверка только статус-кода
    Статус 200 не гарантирует правильное тело. Проверяйте ключевые поля и схему ответа (json-schema-validator).
    Зависимость тестов друг от друга
    Тест, который использует id из предыдущего, ломается при выборочном запуске. Создавайте данные внутри теста или в @BeforeEach.
    Нет логирования при падении
    Добавьте .log().ifValidationFails() — запрос и ответ выведутся только для упавших тестов, лог не засоряется.

    Вопросы на собеседовании по REST Assured

    • Что означают given, when и then в REST Assured?
    • Как проверить структуру JSON-ответа с помощью схемы?
    • Чем RequestSpecification отличается от ResponseSpecification?
    • Как передать авторизацию Bearer и не дублировать её в каждом тесте?

    Отработать ответы можно на мок-собеседовании.

    Частые вопросы

    REST Assured или Postman — что выбрать?

    Это разные задачи. Postman удобен для ручного исследования API и быстрых проверок. REST Assured нужен, когда API-тесты должны жить в коде рядом с остальными автотестами, проходить review и запускаться в CI.

    Работает ли REST Assured с Kotlin или Groovy?

    Да. Есть отдельные модули kotlin-extensions и groovy-support, но в большинстве проектов библиотеку используют именно из Java.

    Как проверять JSON-схему ответа?

    Подключите модуль json-schema-validator и вызовите .body(matchesJsonSchemaInClasspath("user-schema.json")). Так вы отловите изменение структуры, а не только отдельных полей.

    Можно ли использовать REST Assured для нагрузочного тестирования?

    Нет, он не рассчитан на нагрузку: нет управления пользователями и метрик. Для нагрузки берите k6, Gatling или JMeter.

    🔌

    REST Assured

    rest-assured.io

    Java-библиотека для тестирования REST API с BDD-стилем. Стандарт де-факто в Java QA-проектах.

    Java
    Официальный сайт

    На странице

    • Когда выбирать
    • Установка
    • Примеры тестов
    • Типичные ошибки
    • Собеседование
    • Частые вопросы

    Смотрите также

    • ☕JUnit 5
    • 🎭WireMock
    • 📈Allure Report
    • 📮Postman
    Начни бесплатно

    Изучай инструменты на практике

    Курсы ThreadQA по Selenium, REST Assured, Appium и другим инструментам — с реальными проектами и поддержкой ментора.

    Практика на реальных проектахПоддержка ментораСертификат по окончании
    Начать обучение бесплатно
    Смотреть курсы·Мок-собеседование
    ✓ Доступ навсегда✓ Оплата через СБП✓ Олег отвечает лично✓ Оплата частями от партнёров СБП
    Возврат — по условиям оферты
    THREADQAПлатформа QA Automation

    О платформе

    Обучаем автоматизации тестирования на Java, Python и iOS. Практические курсы, roadmap, тренажёры и персональные мок-интервью.

    Онлайн 24/7

    Курсы

    • Java QA AutomationNEW
    • Python QA Automation
    • iOS QA Automation
    • Про ThreadQA

    Услуги

    • Мок-собеседования

    Инструменты

    • Roadmap QA
    • Тренажёры
    • QA игры
    • Тренажёр XPath
    • XPath Diner
    • Каталог инструментов
    • Глоссарий ИИ-тестирования

    Контакты

    • Email
      info@threadqa.ru
    • Telegram
      @penolegrus
    Публичная офертаПолитика конфиденциальностиУсловия использования
    © 2026·ThreadQA LMS·Все права защищены