Автоматизация тестирования API — это проверка работы backend-сервисов без UI. Вот пошаговый гайд для старта на Java.
🔹 1. Выбор инструментов
Базовый стек:
Дополнительно:
🔹 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 — для изолированного тестирования.
🔹 Итог
- Выберите инструменты (RestAssured + JUnit).
- Настройте проект (Maven/Gradle).
- Пишите тесты (GET/POST, валидация ответов).
- Оптимизируйте (Page Object, параметризация).
- Добавьте отчеты и CI.
🚀 Дальше:
- Нагрузочное тестирование (JMeter + Gatling).
- Контрактное тестирование (Pact).
Главное — начать с простых тестов и постепенно усложнять!
-------------------------------------------------------------------------------------------
Если есть, чем дополнить или у вас есть предложения, пишите в комментариях...
Мы занимаемся тестированием и автоматизацией рутинных бизнес процессов, автоматизацией продвижения с помощью ИИ.
Кроме готовы взять ваш проект на аутсорсинг автоматизации тестирования, а так же занимаемся обученим автоматизации тестирования в процессе работы, для закрепления полученных знаний.