Skip to content

AdvancedJavaLabs/software-testing-lab2-2026-tkhapchaev

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Review Assignment Due Date

Лабораторная работа №2: Тестирование REST API и сервисного слоя

Цель работы

Научиться тестировать REST API с использованием Postman и Rest Assured, а также мокировать зависимости при тестировании сервисного слоя.

Описание проекта

Проект представляет собой сервис аналитики пользовательской активности. Реализован на Javalin (легковесный HTTP-фреймворк).

Структура

  • UserAnalyticsController — REST-контроллер с эндпоинтами.
  • UserAnalyticsService — сервис с бизнес-логикой (хранение пользователей, сессий, расчёт метрик).
  • UserStatusService — сервис, зависящий от UserAnalyticsService (определение статуса пользователя).

API эндпоинты

Метод 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.

Задания

1. Тестирование контроллера с помощью Postman

  • Создайте коллекцию запросов в Postman для всех 5 эндпоинтов.
  • Проверьте позитивные сценарии (корректные данные → ожидаемый ответ).
  • Проверьте обработку ошибок: отсутствие параметров, некорректный формат данных, несуществующий пользователь.
  • Экспортируйте коллекцию в JSON-файл и положите в корень репозитория.

2. Тестирование контроллера с использованием Rest Assured

  • Написать JUnit-тесты с использованием Rest Assured, проверяющие корректность работы API.
  • Покрыть тестами все 5 эндпоинтов (позитивные и негативные сценарии).
  • Добавить тесты на граничные случаи и обработку ошибок.

3. Тестирование UserStatusService с моками

  • Использовать Mockito для создания моков UserAnalyticsService.
  • Протестировать метод getUserStatus(userId), проверив корректность возвращаемого статуса для всех возможных веток (Inactive / Active / Highly active).
  • Протестировать метод getUserLastSessionDate(userId), замокав вызов getUserSessions() и проверив корректность работы.
  • Использовать метод verify() для проверки корректности вызова замоканных методов.

Рекомендации

  • Обратите внимание на граничные значения в условиях (например, ровно 60 минут, ровно 120 минут).
  • Проверяйте, что происходит при некорректных входных данных (пустые строки, отрицательные числа, null).
  • Код сервисов может содержать ошибки — ваши тесты должны их обнаружить. Опишите найденные баги в отчёте.
  • В примерах тестов (UserAnalyticsIntegrationTest, UserStatusServiceTest) показан базовый подход — его нужно существенно расширить.

Ожидаемый результат

  • Тесты Rest Assured проверяют все эндпоинты, включая негативные сценарии.
  • Тесты обнаруживают ошибки в коде сервисов.
  • В сервисном слое успешно мокируются зависимости, тесты проверяют бизнес-логику.
  • Postman-коллекция экспортирована и лежит в репозитории.

About

software_testing_spring_2026-software-testing-lab2-2026-software-testing-lab2-2026 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%