Добавить в корзинуПозвонить
Найти в Дзене

Как начать автоматизацию тестирования API на Java с нуля

Автоматизация тестирования API — это проверка работы backend-сервисов без UI. Вот пошаговый гайд для старта на Java. text src/
├── main/
└── test/
├── java/
│ └── api/
│ ├── tests/
│ ├── utils/
│ └── models/
└── resources/ xml <dependencies>
<!-- RestAssured -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.3.0</version>
<scope>test</scope>
</dependency>
<!-- JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>
<!-- Jackson для работы с JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
</dependencies> java im
Оглавление

Автоматизация тестирования API — это проверка работы backend-сервисов без UI. Вот пошаговый гайд для старта на Java.

🔹 1. Выбор инструментов

Базовый стек:

Дополнительно:

  • JSON-парсеры: Jackson, Gson
  • Моки серверов: WireMock (для эмуляции API)
  • Контейнеризация: TestContainers (для тестов с БД)

🔹 2. Настройка проекта

Структура проекта (Maven)

text

src/
├── main/
└── test/
├── java/
│ └── api/
│ ├── tests/
│ ├── utils/
│ └── models/
└── resources/

Добавьте зависимости в pom.xml:

xml

<dependencies>
<!-- RestAssured -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>5.3.0</version>
<scope>test</scope>
</dependency>

<!-- JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>

<!-- Jackson для работы с JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
</dependencies>

🔹 3. Пишем первый тест

Пример: GET-запрос

java

import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static org.hamcrest.Matchers.*;

public class ApiTest {

@Test
public void testGetUser() {
RestAssured.given()
.baseUri("https://jsonplaceholder.typicode.com")
.when()
.get("/users/1")
.then()
.statusCode(200)
.body("name", equalTo("Leanne Graham"));
}
}

Пример: POST-запрос с JSON

java

@Test
public void testCreatePost() {
String jsonBody = """
{
"title": "foo",
"body": "bar",
"userId": 1
}
""";

RestAssured.given()
.baseUri("https://jsonplaceholder.typicode.com")
.contentType("application/json")
.body(jsonBody)
.when()
.post("/posts")
.then()
.statusCode(201)
.body("id", notNullValue());
}

🔹 4. Организация тестов

1. Выделение конфигурации

java

public class ApiTestBase {
@BeforeEach
public void setup() {
RestAssured.baseURI = "https://yoururl.com";
}
}

2. Работа с POJO (моделями)

java

public class User {
private int id;
private String name;
// геттеры и сеттеры
}

// Использование в тесте:
User user = RestAssured.given()
.get("/users/1")
.as(User.class);

3. Паттерн Page Object Model (для API)

java

public class UserApi {
public static Response getUser(int id) {
return RestAssured.given().get("/users/" + id);
}

public static Response createUser(User user) {
return RestAssured.given()
.contentType("application/json")
.body(user)
.post("/users");
}
}

🔹 5. Дополнительные практики

Параметризованные тесты (JUnit 5)

java

@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
public void testUsers(int userId) {
UserApi.getUser(userId).then().statusCode(200);
}

Мокирование API (WireMock)

java

@Test
public void testMockApi() {
stubFor(get("/mock/user")
.willReturn(okJson("{ \"name\": \"Mock User\" }")));

RestAssured.get("http://localhost:8080/mock/user")
.then().body("name", equalTo("Mock User"));
}

Генерация отчетов (Allure)

xml

<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-rest-assured</artifactId>
<version>2.23.0</version>
</dependency>

🔹 6. CI/CD интеграция

  • GitHub Actions / Jenkins — для запуска тестов автоматически.
  • Docker + TestContainers — для изолированного тестирования.

🔹 Итог

  1. Выберите инструменты (RestAssured + JUnit).
  2. Настройте проект (Maven/Gradle).
  3. Пишите тесты (GET/POST, валидация ответов).
  4. Оптимизируйте (Page Object, параметризация).
  5. Добавьте отчеты и CI.

🚀 Дальше:

  • Тестирование GraphQL (используйте GraphQL Java Client).
  • Нагрузочное тестирование (JMeter + Gatling).
  • Контрактное тестирование (Pact).

Главное — начать с простых тестов и постепенно усложнять!

-------------------------------------------------------------------------------------------

Если есть, чем дополнить или у вас есть предложения, пишите в комментариях...

Мы занимаемся тестированием и автоматизацией рутинных бизнес процессов, автоматизацией продвижения с помощью ИИ.

Кроме готовы взять ваш проект на аутсорсинг автоматизации тестирования, а так же занимаемся обученим автоматизации тестирования в процессе работы, для закрепления полученных знаний.