Полный набор тест-кейсов, чек-листов и инструкций для ручного тестирования платформы. Следуй чек-листу, отмечай пройденное, фиксируй баги.
Три шага от подготовки до баг-репорта
Все страницы платформы для тестирования
Отмечай пройденные проверки — это твой прогресс
Детальные сценарии с шагами и ожидаемым результатом
| ID | Область | Сценарий | Шаги | Ожидаемый результат | Приоритет | Статус |
|---|---|---|---|---|---|---|
| AUTH-01 | Аутентификация | Регистрация клиента |
1. /login.html → «Зарегистрироваться»
2. Имя: Тестовый Клиент
3. Email: testclient@example.com
4. Пароль: test123456
5. Роль: Клиент → «Зарегистрироваться»
|
201 Created, JWT токен, редирект на дашборд клиента | P0 | ⬜ Не проверен |
| AUTH-02 | Аутентификация | Регистрация терапевта |
1. /login.html → «Зарегистрироваться»
2. Имя: Доктор Тестов
3. Email: testtherapist@example.com
4. Пароль: test123456
5. Роль: Терапевт → «Зарегистрироваться»
|
201 Created, JWT токен, редирект на дашборд терапевта, роль therapist в БД | P0 | ⬜ Не проверен |
| AUTH-03 | Аутентификация | Дубликат email |
1. Зарегистрировать test@dup.com
2. Повторно зарегистрировать test@dup.com
|
409 Conflict: «Этот email уже зарегистрирован» | P1 | ⬜ Не проверен |
| AUTH-04 | Аутентификация | Пустые поля при регистрации |
1. /login.html → регистрация
2. Оставить все поля пустыми → отправить
|
400 Bad Request: «Email и пароль обязательны» | P1 | ⬜ Не проверен |
| AUTH-05 | Аутентификация | Слабый пароль (<6 символов) |
1. Регистрация с паролем «123»
|
400: «Пароль должен быть не менее 6 символов» | P2 | ⬜ Не проверен |
| AUTH-06 | Аутентификация | Вход с корректными данными |
1. /login.html
2. Email: зарегистрированного пользователя
3. Пароль: правильный → «Войти»
|
200 OK, JWT токен, редирект на дашборд роли | P0 | ⬜ Не проверен |
| AUTH-07 | Аутентификация | Неверный пароль |
1. Вход: правильный email + неверный пароль
|
400: «Неверный email или пароль» | P1 | ⬜ Не проверен |
| AUTH-08 | Аутентификация | GET /api/auth/me с валидным токеном |
1. Войти, получить токен
2. GET /api/auth/me (Bearer token)
|
200 OK: id, email, role, name, created_at | P1 | ⬜ Не проверен |
| AUTH-09 | Аутентификация | PATCH /api/auth/me — обновление профиля |
1. Войти как терапевт
2. PATCH /api/auth/me { "name": "Новое Имя" }
|
200 OK, имя обновлено в БД | P2 | ⬜ Не проверен |
| AUTH-10 | Аутентификация | Доступ без токена |
1. Очистить localStorage токен
2. GET /api/auth/me без Authorization
|
401 Unauthorized | P0 | ⬜ Не проверен |
| CLI-01 | Клиенты | Терапевт добавляет клиента вручную |
1. Войти как терапевт
2. POST /api/clients { name, email }
3. Проверить список клиентов
|
201 Created, клиент появляется в GET /api/clients | P0 | ⬜ Не проверен |
| CLI-02 | Клиенты | Терапевт отправляет приглашение |
1. POST /api/clients/invite { email }
2. Проверить email (или лог) на invite-токен
|
201 Created, invite-токен сгенерирован, запись в invites | P0 | ⬜ Не проверен |
| CLI-03 | Клиенты | Регистрация по invite-токену |
1. Скопировать invite-токен из лога
2. /login.html?invite=TOKEN → регистрация клиента
|
Клиент создан и привязан к терапевту, приглашение помечено used | P0 | ⬜ Не проверен |
| CLI-04 | Клиенты | Повторное использование invite-токена |
1. Использовать invite-токен
2. Повторно открыть /login.html?invite=SAME_TOKEN
|
Ошибка: токен уже использован | P1 | ⬜ Не проверен |
| CLI-05 | Клиенты | Чужой терапевт → чужой клиент |
1. Терапевт A создал клиента X
2. Терапевт B: GET /api/clients/X_ID
|
403 Forbidden или 404 Not Found | P0 | ⬜ Не проверен |
| CLI-06 | Клиенты | Изменение статуса клиента |
1. Терапевт: PATCH /api/clients/:id/status { status: "archived" }
|
200 OK, статус обновлён в БД | P2 | ⬜ Не проверен |
| SES-01 | Сессии | Создание сессии терапевтом |
1. POST /api/sessions { client_id, date, duration, notes }
2. Проверить GET /api/sessions
|
201 Created, сессия отображается у клиента и терапевта | P0 | ⬜ Не проверен |
| SES-02 | Сессии | Редактирование сессии |
1. PATCH /api/sessions/:id { notes: "обновлённые заметки" }
|
200 OK, заметки обновлены | P1 | ⬜ Не проверен |
| SES-03 | Сессии | Клиент видит только свои сессии |
1. Клиент A: GET /api/sessions
2. Проверить, что видны только сессии клиента A
|
Только сессии текущего клиента в ответе | P1 | ⬜ Не проверен |
| PROG-01 | Прогресс | График прогресса клиента |
1. Создать несколько сессий с разным mood
2. GET /api/clients/:id/progress
|
Массив точек с mood и датами, график отрисовывается | P0 | ⬜ Не проверен |
| PROG-02 | Прогресс | Сводка (summary) клиента |
1. GET /api/clients/:id/summary
|
Данные: кол-во сессий, тренд mood, последняя активность | P1 | ⬜ Не проверен |
| JRN-01 | Дневник | Создание записи в дневнике |
1. POST /api/clients/:id/journal { entry, mood }
2. GET /api/clients/:id/journal
|
201 Created, запись в истории дневника | P0 | ⬜ Не проверен |
| JRN-02 | Дневник | Пустая запись в дневнике |
1. POST /api/clients/:id/journal { entry: "" }
|
400: валидационная ошибка | P2 | ⬜ Не проверен |
| ADM-01 | Админ | Статистика платформы |
1. Войти как admin
2. GET /api/admin/stats
|
200 OK: users, clients, therapists, sessions, активность | P1 | ⬜ Не проверен |
| ADM-02 | Админ | Список терапевтов (админ) |
1. GET /api/admin/therapists
|
200 OK: массив терапевтов с данными | P1 | ⬜ Не проверен |
| ADM-03 | Админ | Изменение статуса терапевта |
1. PATCH /api/admin/therapists/:id { status: "suspended" }
|
200 OK, статус обновлён | P1 | ⬜ Не проверен |
| ADM-04 | Админ | Impersonation (зайти под пользователем) |
1. POST /api/admin/impersonate/:userId
2. Проверить что сессия переключилась
|
200 OK, токен админа заменён на токен пользователя, можно остановить | P0 | ⬜ Не проверен |
| ADM-05 | Админ | Stop impersonation |
1. После impersonation: POST /api/admin/stop-impersonation
|
200 OK, возврат к оригинальному admin-токену | P1 | ⬜ Не проверен |
| TAR-01 | Тарифы | Публичный список тарифов |
1. GET /api/tariffs
|
200 OK: массив активных тарифов с ценами и лимитами | P1 | ⬜ Не проверен |
| TAR-02 | Тарифы | CRUD тарифов (админ) |
1. POST /api/admin/tariffs { новый тариф }
2. PATCH /api/admin/tariffs/:id { изменения }
|
Создание и редактирование работают, отображаются в /api/tariffs | P1 | ⬜ Не проверен |
| WAIT-01 | Waitlist | Подписка на лист ожидания |
1. POST /api/waitlist { email, name, role }
2. Проверить админский /api/waitlist
|
201 Created, запись в waitlist, админ видит | P1 | ⬜ Не проверен |
| WAIT-02 | Waitlist | Дубликат в waitlist |
1. Дважды POST /api/waitlist с одним email
|
409 или обновление существующей записи | P2 | ⬜ Не проверен |
| TIC-01 | Обращения | Создание обращения |
1. POST /api/tickets { subject, message }
2. GET /api/tickets (свои обращения)
|
201 Created, тикет виден пользователю и админу | P2 | ⬜ Не проверен |
| TIC-02 | Обращения | Админ меняет статус тикета |
1. PATCH /api/admin/tickets/:id { status: "resolved" }
|
200 OK, статус обновлён | P2 | ⬜ Не проверен |
| SEC-01 | Безопасность | XSS в имени при регистрации |
1. Регистрация: name = "<script>alert(1)</script>"
2. Проверить отображение имени в дашборде
|
Скрипт НЕ выполняется, имя экранировано | P0 | ⬜ Не проверен |
| SEC-02 | Безопасность | SQL-инъекция в параметрах |
1. GET /api/clients?id=1' OR '1'='1
|
Запрос безопасно обработан (параметризованный), ошибки нет | P0 | ⬜ Не проверен |
| SEC-03 | Безопасность | Пароль в API-ответах |
1. GET /api/auth/me
2. Проверить поля ответа
|
Поле password отсутствует в ответе | P0 | ⬜ Не проверен |
| SEC-04 | Безопасность | Клиент → админские ручки |
1. Войти как client
2. GET /api/admin/stats
|
403 Forbidden «Недостаточно прав» | P0 | ⬜ Не проверен |
| UI-01 | UI/UX | Адаптивность: мобильные (320-767px) |
1. DevTools → iPhone SE эмуляция
2. Пройти все страницы
|
Всё читаемо, ничего не вылезает, кнопки рабочие | P1 | ⬜ Не проверен |
| UI-02 | UI/UX | Состояния загрузки |
1. Замедлить сеть в DevTools (Slow 3G)
2. Выполнить действия на всех дашбордах
|
Показаны индикаторы загрузки, нет «зависания» интерфейса | P1 | ⬜ Не проверен |
| UI-03 | UI/UX | Ошибка сети (Offline) |
1. DevTools Network → Offline
2. Попытаться выполнить любое действие
|
Понятное сообщение об ошибке, кнопка «Повторить» | P2 | ⬜ Не проверен |
| UI-04 | UI/UX | Пустые состояния |
1. Новый клиент → дашборд без сессий
2. Новый терапевт → дашборд без клиентов
|
Заглушки «У вас пока нет...» с подсказкой что делать | P2 | ⬜ Не проверен |
| PERF-01 | Производительность | Lighthouse: главная страница |
1. Запустить Lighthouse (Desktop)
|
Performance ≥ 70, Accessibility ≥ 80, Best Practices ≥ 85, SEO ≥ 85 | P1 | ⬜ Не проверен |
| PERF-02 | Производительность | Lighthouse: дашборд клиента |
1. Lighthouse на /dashboard/client.html
|
Performance ≥ 60, Accessibility ≥ 80 | P2 | ⬜ Не проверен |
| PERF-03 | Производительность | Время ответа API |
1. DevTools Network → посмотреть Timing
2. Проверить /api/auth/me, /api/clients, /api/sessions
|
Среднее ≤ 500 мс, максимум ≤ 2 сек | P1 | ⬜ Не проверен |
Скопируй этот шаблон для каждого найденного бага
## Баг-репорт [ID тест-кейса] | [Краткое описание] **Severity:** P0 / P1 / P2 / P3 **Окружение:** Браузер / ОС / Устройство **Дата:** [дата] ### Шаги воспроизведения 1. 2. 3. ### Expected (Ожидаемое поведение) [что должно было произойти] ### Actual (Фактическое поведение) [что произошло на самом деле] ### Дополнительно - Скриншот/видео: [ссылка] - Консоль/ошибки: [логи] - Network: [статус ответа API] ### Статус ⬜ Новый | ✅ Исправлен | 🔄 В работе | ❌ Отклонён