Научиться тестировать REST API с использованием Postman и Rest Assured, а также мокировать зависимости при тестировании сервисного слоя.
Проект представляет собой сервис аналитики пользовательской активности. Реализован на Javalin (легковесный HTTP-фреймворк).
UserAnalyticsController— REST-контроллер с эндпоинтами.UserAnalyticsService— сервис с бизнес-логикой (хранение пользователей, сессий, расчёт метрик).UserStatusService— сервис, зависящий отUserAnalyticsService(определение статуса пользователя).
| Метод | URL | Параметры (query) | Описание |
|---|---|---|---|
POST |
/register |
userId, userName |
Регистрация пользователя |
POST |
/recordSession |
userId, loginTime, logoutTime |
Запись сессии (время в формате ISO: 2025-01-15T10:00:00) |
GET |
/totalActivity |
userId |
Общее время активности в минутах |
GET |
/inactiveUsers |
days |
Список пользователей, неактивных более N дней |
GET |
/monthlyActivity |
userId, month |
Метрики активности за месяц (формат: 2025-01) |
Для ручного тестирования через Postman запустите класс org.itmo.testing.lab2.Main. Сервер стартует на http://localhost:7000.
- Создайте коллекцию запросов в Postman для всех 5 эндпоинтов.
- Проверьте позитивные сценарии (корректные данные → ожидаемый ответ).
- Проверьте обработку ошибок: отсутствие параметров, некорректный формат данных, несуществующий пользователь.
- Экспортируйте коллекцию в JSON-файл и положите в корень репозитория.
- Написать JUnit-тесты с использованием Rest Assured, проверяющие корректность работы API.
- Покрыть тестами все 5 эндпоинтов (позитивные и негативные сценарии).
- Добавить тесты на граничные случаи и обработку ошибок.
- Использовать Mockito для создания моков
UserAnalyticsService. - Протестировать метод
getUserStatus(userId), проверив корректность возвращаемого статуса для всех возможных веток (Inactive / Active / Highly active). - Протестировать метод
getUserLastSessionDate(userId), замокав вызовgetUserSessions()и проверив корректность работы. - Использовать метод
verify()для проверки корректности вызова замоканных методов.
- Обратите внимание на граничные значения в условиях (например, ровно 60 минут, ровно 120 минут).
- Проверяйте, что происходит при некорректных входных данных (пустые строки, отрицательные числа,
null). - Код сервисов может содержать ошибки — ваши тесты должны их обнаружить. Опишите найденные баги в отчёте.
- В примерах тестов (
UserAnalyticsIntegrationTest,UserStatusServiceTest) показан базовый подход — его нужно существенно расширить.
- Тесты Rest Assured проверяют все эндпоинты, включая негативные сценарии.
- Тесты обнаруживают ошибки в коде сервисов.
- В сервисном слое успешно мокируются зависимости, тесты проверяют бизнес-логику.
- Postman-коллекция экспортирована и лежит в репозитории.