Это веб-приложение разработано для управления данными о вакансиях. Оно состоит из двух микросервисов: main
и service
.
- Описание проекта
- Настройка окружения
- Запуск приложения
- Миграции базы данных
- Работа с приложением
- Тестирование
Проект разделен на два микросервиса:
- Main: отвечает за отображение главной страницы, обновление данных о вакансиях и работу с пользовательским интерфейсом.
- Service: предоставляет API для работы с данными о вакансиях и связанной функциональностью.
Оба микросервиса используют Flask в качестве веб-фреймворка и SQLAlchemy для работы с базой данных PostgreSQL.
Для запуска проекта вам понадобится Docker и docker-compose.
-
Установите Docker и docker-compose.
-
Склонируйте репозиторий проекта:
git clone <repository_url> cd <project_directory>
-
Создайте файл .env в корне проекта и добавьте в него следующие переменные окружения:
DATABASE_URL=postgresql://postgres:password@db:5432/Vacancies
Для запуска проекта выполните следующие команды:
docker-compose up --build
Эта команда соберет и запустит контейнеры для сервисов main, service и db. После успешного запуска, вы можете открыть веб-приложение по адресу http://localhost:5000/.
Для управления миграциями базы данных используйте инструмент Flask-Migrate.
docker-compose exec main flask db init
docker-compose exec service flask db init
docker-compose exec main flask db migrate
docker-compose exec service flask db migrate
docker-compose exec main flask db upgrade
docker-compose exec service flask db upgrade
Эти команды инициализируют, создают и применяют миграции базы данных для сервисов main и service.
После успешной сборки перейдите по адресу http://localhost:5000/ Для начала работы с приложением нажмите на кнопку "Обновить данные", после чего 1000+ записей с вакансиями из hh.ru подгрузятся в таблицу на странице и в бд. Как только progress bar на главной странице заполнится, можно будет кликнуть на "Работа с данными" в навигационной панели и перейти к сортировке и фильтрации.
Изначально все данные подгрузятся из бд и будут отсортированы по названию города. Затем в полях сверху можно будет выбрать как фильтровать и как сортировать (возможен множественный выбор).
Для обеспечения корректной работы фильтрации и сортировки данных о вакансиях веб-приложение было тщательно протестировано на локальной разработочной среде. Ниже приведены основные аспекты тестирования и используемые методики:
- Сценарии тестирования: Были разработаны тестовые сценарии для проверки фильтрации данных о вакансиях по различным критериям, таким как название вакансии, работодатель, местоположение и тип занятости.
- Проверка корректности данных: Проверялось, что при применении фильтров выводятся только соответствующие результаты, и не происходит потери данных или искажений.
- Варианты сортировки: Проводилось тестирование сортировки данных о вакансиях по различным полям, таким как название вакансии, работодатель, местоположение и другие.
- Проверка порядка данных: Убедились, что данные корректно сортируются в выбранном пользователем порядке, с учетом возможных спецификаций сортировки (например, по алфавиту, по возрастанию/убыванию и т.д.).
- Загрузка страницы: Оценивалась скорость загрузки страницы с отфильтрованными и отсортированными данными при различных объемах данных.
- Отзывчивость интерфейса: Проверялось время ответа приложения при одновременной работе с несколькими пользователями и при загрузке большого объема данных.
- Тестирование через браузер: Использовались автоматизированные и ручные тесты через браузер для проверки работы интерфейса приложения, включая взаимодействие с элементами пользовательского интерфейса и корректность отображения данных.
- API тестирование: Производилась проверка API для убедительности в правильности работы HTTP запросов и корректности ответов сервера.
Локальное тестирование фильтрации и сортировки веб-приложения показало высокую степень надежности и соответствия функционала требованиям. Тестирование включало не только проверку функциональности, но и оценку производительности, что обеспечило стабильную и эффективную работу приложения на этапе разработки.