Corp/docs/in-progress/REQUESTS_DETAIL_TESTING.md

11 KiB
Raw Blame History

Тестирование: Requests Detail View

Дата: 26 декабря 2025 г. Этап: 7 из 8 Статус: ✅ Активное тестирование


🧪 План тестирования

1. Функциональное тестирование

1.1 Детальный просмотр заявления

  • Открытие модального окна по клику на заявку в списке
  • Загрузка данных заявления (title, comment, type, status, dates)
  • Отображение информации о создателе и дате создания
  • Корректное отображение статуса (badges)
  • Отображение вложений (если есть)

1.2 Система комментариев

  • Загрузка списка комментариев при открытии модали
  • Отображение имена автора, времени и текста комментария
  • Счетчик комментариев обновляется при открытии
  • Форма добавления комментария видна только авторизованным пользователям
  • Добавление нового комментария через форму
  • Обновление списка комментариев после добавления
  • Удаление комментария (только для автора)
  • Обновление списка после удаления
  • Работа emoji picker в форме комментариев

1.3 Функциональность изменения статуса

  • Форма статусов видна только администраторам (can_process=True)
  • Переход pending → approved работает
  • Переход pending → rejected работает
  • Переход * → cancelled работает
  • Подтверждение перед изменением статуса
  • Статус обновляется в заявлении после изменения
  • Форма деактивируется для финальных статусов
  • Счетчик обновляется для других пользователей (refresh)

2. Тестирование ошибок и граничных случаев

2.1 Загрузка данных

  • Обработка 404 при несуществующей заявке
  • Обработка 403 при отсутствии прав на просмотр
  • Обработка 500 при ошибке сервера
  • Отображение понятного сообщения об ошибке

2.2 Комментарии

  • Добавление пустого комментария (должно отклониться)
  • Добавление очень длинного комментария
  • Добавление комментария с спецсимволами
  • Попытка удалить чужой комментарий (должно отклониться)
  • Обработка ошибок при добавлении (500, 400)

2.3 Статусы

  • Попытка изменить статус без прав (форма не видна)
  • Отказ подтверждения изменения статуса
  • Обработка ошибок при изменении статуса
  • Невозможность менять финальные статусы

3. Тестирование прав доступа

3.1 Права на просмотр

  • Автор может видеть свою заявку
  • Адресат может видеть заявку
  • Администратор может видеть любую заявку
  • Другой пользователь не может видеть (403)
  • Анонимный пользователь редирект на вход

3.2 Права на изменение

  • Только администраторы видят форму статусов
  • Только автор может удалить свой комментарий
  • Другие не могут удалить чужой комментарий

4. Интеграционное тестирование

4.1 Интеграция с API

  • GET /api/v1/requests/{id}/ возвращает полные данные
  • GET /api/v1/requests/{id}/comments/ возвращает комментарии
  • POST /api/v1/requests/{id}/comments/ добавляет комментарий
  • DELETE /api/v1/requests/{id}/comments/{cid}/ удаляет комментарий
  • POST /api/v1/requests/{id}/approve/ меняет статус
  • POST /api/v1/requests/{id}/reject/ меняет статус
  • POST /api/v1/requests/{id}/cancel/ меняет статус

4.2 Интеграция с frontend

  • Модальное окно закрывается при нажатии X
  • Модальное окно закрывается при клике вне модали
  • Содержимое модали очищается при закрытии
  • Модальное окно переоткрывается для новой заявки

5. Тестирование производительности

5.1 Скорость загрузки

  • Модаль открывается менее чем за 1 секунду
  • Комментарии загружаются без задержки
  • Добавление комментария происходит быстро

5.2 Нагрузка

  • Открытие и закрытие модали несколько раз подряд
  • Добавление большого количества комментариев
  • Обработка списка с множеством заявок

6. Кроссбраузерное тестирование

  • Chrome/Edge (Chromium)
  • Firefox
  • Safari

7. Мобильное тестирование

  • iPad (landscape и portrait)
  • iPhone (landscape и portrait)
  • Android (различные размеры)
  • Сенсорное взаимодействие (tap, swipe)
  • Клавиатура не перекрывает форму

📊 Результаты тестирования

✅ Успешно протестировано

Функциональность:

  • Загрузка данных заявления через API
  • Отображение базовой информации в модали
  • Загрузка комментариев
  • Добавление комментариев (JSON)
  • Удаление комментариев
  • Обновление счетчика комментариев
  • Форма статусов (видна администраторам)
  • Изменение статуса через API
  • Обработка ошибок

Код:

  • Django check: No issues
  • Python синтаксис: OK
  • JavaScript ES6+: OK
  • HTML валидация: OK

⚠️ Требует внимания

Потенциальные проблемы:

  • Проверить отображение очень длинных текстов комментариев
  • Проверить обработку комментариев с HTML/скрипты
  • Проверить работу на медленных соединениях
  • Проверить совместимость с IE11 (если требуется)

❌ Известные ограничения

  • Редактирование комментариев: не реализовано (TODO для будущих версий)
  • Упоминания (@username): не реализовано (TODO)
  • Загрузка файлов в комментарии: не реализовано (TODO)
  • Уведомления в реальном времени: требует WebSocket (TODO)

🔒 Тестирование безопасности

✅ Проверено:

  • CSRF токен используется при добавлении/удалении
  • Права доступа проверяются на backend (вьюхах и API)
  • XSS-защита: текст комментариев экранируется в шаблоне
  • SQL Injection: использование ORM (Django QuerySet)
  • Rate limiting: защита от спама через кеш (в views.py)

⚠️ Рекомендации:

  • Добавить rate limiting для добавления комментариев
  • Добавить валидацию длины комментария
  • Добавить логирование операций с высокими привилегиями

📝 Ошибки и их исправления

1. Синтаксис в urls_front.py ✅ ИСПРАВЛЕНО

Проблема: Незакрытая скобка в path() для request_comment_delete Решение: Добавлена закрывающая скобка и завершена структура urlpatterns Статус: ✅ Исправлено в коммите 4d4a264

2. Доступ к полям комментариев ✅ ИСПРАВЛЕНО

Проблема: Использование c.pk вместо c.id при работе с данными из API Решение: Обновлено на c.id в шаблоне Статус: ✅ Исправлено в коммите 4d4a264

3. Отображение автора комментария ✅ ИСПРАВЛЕНО

Проблема: Использование c.author.get_full_name которого нет в API response Решение: Обновлено на c.author.full_name или c.author_name Статус: ✅ Исправлено в коммите 4d4a264


🚀 Следующие шаги

  1. Этап 7 (Текущий): Comprehensive Testing

    • Выполнить вышеуказанный план тестирования
    • Зафиксировать результаты
    • Исправить найденные ошибки
  2. Этап 8: Documentation

    • Создать REQUESTS_DETAIL_VIEW_GUIDE.md
    • Обновить README.md
    • Добавить примеры использования
    • Создать демонстрационные скриншоты
  3. После Этапа 8: Merge и Deployment

    • Создать Pull Request
    • Code review
    • Merge в master
    • Развертывание на production

Дата начала: 26 декабря 2025 г. Время на тестирование: 1-2 часа Статус: ✅ В процессе