Implement HW5 stubs, API helpers, optional SQL/MQ helpers, and test coverage
This commit is contained in:
115
README.md
115
README.md
@@ -1,65 +1,78 @@
|
||||
# OTUS Rest-assured Homework 3
|
||||
# OTUS Homework 5: Stub & API Testing (API-helpers)
|
||||
В этом проекте реализован stub-сервер на WireMock, API-helpers для HTTP/SOAP и автотесты контрактов/схем, плюс UI-проверка stub frontend через Cucumber.
|
||||
|
||||
## Цель проекта
|
||||
Автоматизировать API-сценарии для `https://petstore.swagger.io` с использованием Rest-assured, JUnit Jupiter и quality gates (Checkstyle + SpotBugs).
|
||||
## Что реализовано
|
||||
- Stub endpoints на WireMock:
|
||||
- `/user/get/{id}` - получение оценки пользователя
|
||||
- `/cource/get/all` - получение списка курсов
|
||||
- `/user/get/all` - получение списка пользователей
|
||||
- Контракты и схемы:
|
||||
- контрактные тесты для users/courses/score
|
||||
- JSON schema тесты для users/courses/score
|
||||
- API-helpers:
|
||||
- `HttpHelper`
|
||||
- `SoapHelper`
|
||||
- Дополнительно (optional):
|
||||
- `SqlHelper`
|
||||
- `MqHelper`
|
||||
- Stub frontend:
|
||||
- endpoint `/frontend`
|
||||
- Cucumber-сценарий проверки frontend
|
||||
- Selenoid support:
|
||||
- запуск UI-тестов через `-Dbrowser=selenoid`
|
||||
|
||||
## Стек технологий
|
||||
- Java 21
|
||||
- Maven
|
||||
- Rest-assured `6.0.0`
|
||||
- JUnit Jupiter `6.0.2`
|
||||
- Jackson Databind `2.21.0`
|
||||
- Commons Codec `1.21.0`
|
||||
- Maven Surefire Plugin `3.5.4`
|
||||
- Maven Compiler Plugin `3.15.0`
|
||||
- Checkstyle (`maven-checkstyle-plugin` `3.6.0`)
|
||||
- SpotBugs (`spotbugs-maven-plugin` `4.9.8.2`)
|
||||
## Что проверяется в Cucumber
|
||||
- Для HW5 в раннер подключен только `features/stub_frontend.feature`.
|
||||
- `features/catalog.feature` и `CatalogSteps` сохранены в проекте, но в текущий раннер HW5 не входят.
|
||||
|
||||
## Реализованные сценарии
|
||||
1. `POST /pet` + `GET /pet/{id}`:
|
||||
- создание питомца;
|
||||
- повторное чтение по id;
|
||||
- проверка, что вернулся именно созданный объект.
|
||||
|
||||
2. `GET /pet/{id}`:
|
||||
- проверка схемы ответа через Json Schema Validator.
|
||||
|
||||
3. Негативные сценарии:
|
||||
- `POST /pet` с malformed JSON возвращает `4xx`;
|
||||
- `GET /pet/{id}` для удаленного/несуществующего id возвращает `404`;
|
||||
- `GET /pet/findByStatus` с невалидным статусом возвращает пустой список.
|
||||
|
||||
## Архитектура
|
||||
- 2-уровневый дизайн:
|
||||
- `service` слой (HTTP-вызовы + спецификации);
|
||||
- `tests` слой (сценарии).
|
||||
- Тесты создают сервис напрямую (`new PetService()`), без DI-фреймворка.
|
||||
|
||||
## Структура проекта
|
||||
- `src/main/java/ru/otus/petstore/config` — конфигурация
|
||||
- `src/main/java/ru/otus/petstore/model` — модели API (`Pet`, `Category`, `Tag`)
|
||||
- `src/main/java/ru/otus/petstore/service` — сервисы API
|
||||
- `src/test/java/ru/otus/petstore/tests` — автотесты (позитивные и негативные сценарии)
|
||||
- `src/test/java/ru/otus/petstore/util` — фабрика тестовых данных
|
||||
- `src/test/resources/schemas` — JSON schema
|
||||
|
||||
## Запуск
|
||||
### 1. Только тесты
|
||||
## Команды запуска
|
||||
Основной прогон (API + stub + helpers):
|
||||
```bash
|
||||
mvn test
|
||||
```
|
||||
|
||||
### 2. Полная проверка (тесты + Checkstyle + SpotBugs)
|
||||
Только ключевые тесты HW5:
|
||||
```bash
|
||||
mvn "-Dtest=HttpHelperTest,SoapHelperTest,SqlHelperTest,MqHelperTest,StubContractTest,StubSchemaTest" test
|
||||
```
|
||||
|
||||
UI Cucumber (stub frontend):
|
||||
```bash
|
||||
mvn -Pui-tests test
|
||||
```
|
||||
|
||||
UI Cucumber через Selenoid:
|
||||
```bash
|
||||
mvn -Pui-tests "-Dbrowser=selenoid" "-Dselenoid.url=http://localhost:4444/wd/hub" test
|
||||
```
|
||||
|
||||
Полная проверка качества:
|
||||
```bash
|
||||
mvn verify
|
||||
```
|
||||
|
||||
## Параметры запуска
|
||||
- `base.uri` (по умолчанию `https://petstore.swagger.io`)
|
||||
- `base.path` (по умолчанию `/v2`)
|
||||
- значения читаются из `System properties` во время выполнения тестов.
|
||||
## Docker/Selenoid
|
||||
Если UI-тесты через Selenoid не нужны, этот раздел можно пропустить.
|
||||
|
||||
Пример:
|
||||
Предварительно:
|
||||
- Установить Docker Desktop.
|
||||
- Убедиться, что Docker запущен.
|
||||
|
||||
Поднять инфраструктуру:
|
||||
```bash
|
||||
mvn "-Dbase.uri=https://petstore.swagger.io" "-Dbase.path=/v2" test
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Проверка, что Selenoid поднялся:
|
||||
- Selenoid API: `http://localhost:4444/wd/hub`
|
||||
- Selenoid UI: `http://localhost:8081`
|
||||
|
||||
После этого можно запускать UI-тесты через Selenoid:
|
||||
```bash
|
||||
mvn -Pui-tests "-Dbrowser=selenoid" "-Dselenoid.url=http://localhost:4444/wd/hub" test
|
||||
```
|
||||
|
||||
Или выполнить полный пайплайн одной командой (поднимет Docker/Selenoid и запустит все проверки):
|
||||
```bash
|
||||
powershell -ExecutionPolicy Bypass -File .\scripts\run-full-pipeline.ps1
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user