# 📋 Инструкция по тестированию Health Check'а серверов ## 🎯 Что тестируем Новую функциональность автоматической проверки здоровья серверов в диалоге настроек. ## 🔧 Подготовка к тестированию ### 1. Сборка приложения ```bash cd /home/trevor/StudioProjects/WellShe ./gradlew assembleDebug ``` ### 2. Установка на устройство/эмулятор ```bash adb install -r app/build/outputs/apk/debug/app-debug.apk ``` ### 3. Включение детального логирования ```bash adb logcat -s ServerHealthRepository:D ServerSettingsViewModel:D HealthApi:D ``` ## 🧪 Тестовые сценарии ### Сценарий 1: Основная функциональность 1. **Запустите приложение** 2. **Откройте диалог настроек** (нажмите ⚙️) 3. **Наблюдайте автоматическую проверку серверов** **Ожидаемый результат:** - Появляется диалог с кнопкой обновления (🔄) - Рядом с каждым сервером показывается индикатор загрузки - Через несколько секунд индикаторы меняются на цветные статусы - Отображается время отклика и статус ### Сценарий 2: Различные статусы серверов 1. **Убедитесь что сервер `http://10.0.2.2:8000` запущен** 2. **Откройте диалог настроек** 3. **Проверьте индикаторы:** **Ожидаемые результаты:** - 🟢 Зеленый для `http://10.0.2.2:8000` (если работает быстро) - ⚫ Серый для недоступных серверов - Время отклика в миллисекундах ### Сценарий 3: Ручное обновление 1. **Откройте диалог настроек** 2. **Дождитесь завершения проверки** 3. **Нажмите кнопку обновления** (🔄) **Ожидаемый результат:** - Кнопка становится неактивной - Появляются индикаторы загрузки - Статусы обновляются ### Сценарий 4: Выбор сервера по статусу 1. **Откройте диалог настроек** 2. **Найдите сервер с зеленым индикатором** 🟢 3. **Выберите его** 4. **Сохраните настройки** **Ожидаемый результат:** - Сервер выделяется при выборе - Toast показывает изменение сервера - Последующие запросы идут на новый сервер ## 🔍 Проверка логов ### Ключевые логи для поиска: ```bash # Инициализация проверки ServerSettingsViewModel: ServerSettingsViewModel initialized ServerHealthRepository: Checking health for 4 servers # Проверка отдельного сервера ServerHealthRepository: Checking health for server: http://10.0.2.2:8000 ServerHealthRepository: Health check for http://10.0.2.2:8000 completed in 15ms ServerHealthRepository: Server http://10.0.2.2:8000 is healthy, ping: 15ms # Завершение проверки ServerHealthRepository: Health check completed for all servers ServerSettingsViewModel: Health check completed. Results: [...] ``` ## ⚠️ Возможные проблемы ### Проблема: Все серверы показывают "Недоступен" **Причина:** Сетевые ограничения или неправильная конфигурация **Решение:** 1. Проверить подключение к интернету 2. Убедиться что сервер запущен на `http://10.0.2.2:8000` 3. Проверить настройки эмулятора ### Проблема: Долгая проверка (>10 секунд) **Причина:** Медленная сеть или высокие таймауты **Решение:** 1. Проверить скорость соединения 2. Уменьшить таймауты в `ServerHealthRepository` ### Проблема: Крашь при открытии диалога **Причина:** Ошибки в коде или зависимостях **Решение:** 1. Проверить логи с помощью `adb logcat` 2. Убедиться что все зависимости добавлены ## ✅ Критерии успеха Тест считается пройденным если: 1. ✅ Диалог открывается без ошибок 2. ✅ Автоматически запускается проверка серверов 3. ✅ Отображаются цветные индикаторы статуса 4. ✅ Показывается время отклика 5. ✅ Кнопка обновления работает 6. ✅ Можно выбрать сервер по статусу 7. ✅ Настройки сохраняются корректно 8. ✅ В логах видны детали проверки ## 📊 Примеры ожидаемых результатов ### Быстрый локальный сервер: ``` 🟢 http://10.0.2.2:8000 8ms • Отлично ``` ### Медленный сервер: ``` 🔴 http://slow-server.com:8000 650ms • Очень медленно ``` ### Недоступный сервер: ``` ⚫ http://offline-server.com:8000 Connection failed ``` ### Проверяется: ``` ⏳ http://checking-server.com:8000 Проверка... ``` ## 🚀 Дополнительные тесты ### Стресс-тест 1. Открывайте и закрывайте диалог несколько раз подряд 2. Нажимайте кнопку обновления многократно 3. Проверяйте что нет утечек памяти ### Тест сети 1. Отключите интернет и откройте диалог 2. Включите интернет и нажмите обновление 3. Проверьте корректную обработку ошибок ## 📝 Отчет о результатах После тестирования заполните: - [ ] Основная функциональность работает - [ ] Индикаторы отображаются корректно - [ ] Время отклика измеряется точно - [ ] Ручное обновление работает - [ ] Логирование детальное и понятное - [ ] Нет критических ошибок - [ ] UI отзывчивый и интуитивный **Замечания:** ___________________ **Предложения по улучшению:** ___________________