11 KiB
Тестирование: 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
🚀 Следующие шаги
-
Этап 7 (Текущий): Comprehensive Testing
- Выполнить вышеуказанный план тестирования
- Зафиксировать результаты
- Исправить найденные ошибки
-
Этап 8: Documentation
- Создать REQUESTS_DETAIL_VIEW_GUIDE.md
- Обновить README.md
- Добавить примеры использования
- Создать демонстрационные скриншоты
-
После Этапа 8: Merge и Deployment
- Создать Pull Request
- Code review
- Merge в master
- Развертывание на production
Дата начала: 26 декабря 2025 г. Время на тестирование: 1-2 часа Статус: ✅ В процессе