Составить баг-репорт
Условие
Вы обнаружили следующую ошибку в приложении:
Поле username должно быть обязательным для заполнения, но форма позволяет отправить данные с пустым username.
Составьте полноценный баг-репорт, который включает:
- Заголовок
- Окружение (Environment)
- Предусловия
- Шаги воспроизведения
- Ожидаемый результат
- Фактический результат
- Приоритет и серьёзность (Priority/Severity)
- Дополнительные материалы (если применимо)
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Баг-репорт: Поле Username позволяет отправить пустое значение
1. Заголовок (Title)
[BUG] Form submission allowed with empty username field despite mandatory requirement
Ор на русском:
[БАГ] Форма принимает пустое значение поля username, несмотря на требование обязательного заполнения
2. Информация об окружении (Environment)
| Параметр | Значение |
|---|---|
| Операционная система | Windows 10 / macOS 13.4 / Ubuntu 22.04 |
| Браузер | Google Chrome 120.0.6099.129 |
| Версия приложения | 2.1.5 |
| URL страницы | https://app.example.com/register |
| Дата обнаружения | 2026-03-23 |
| Время обнаружения | 14:35 UTC |
| Язык интерфейса | English (en-US) |
| Разрешение экрана | 1920x1080 |
3. Предусловия (Pre-conditions)
- Пользователь не авторизован (находится в статусе гостя)
- Страница регистрации доступна и загружена полностью
- Форма видна без ошибок загрузки (no 404, no 500)
- JavaScript включен в браузере
- Других форм на странице нет или они свернуты
- Интернет соединение стабильно
- Сервер доступен и отвечает нормально
- Поле username явно помечено как обязательное (например, красной звёздочкой *)
4. Шаги воспроизведения (Steps to Reproduce)
| № | Шаг | Действие |
|---|---|---|
| 1 | Открыть страницу регистрации | Перейти на https://app.example.com/register |
| 2 | Проверить форму загружена | Дождаться полной загрузки (Network: все ресурсы загружены) |
| 3 | Оставить поле username пустым | Не вводить никакой текст в поле username |
| 4 | Заполнить остальные обязательные поля | Email: user@example.com, Password: SecurePass123! |
| 5 | Убедиться, что поле пустое | Нажать Tab, выйти из поля username, проверить что оно пусто |
| 6 | Нажать кнопку Submit | Кликнуть на кнопку "Register", "Sign Up" или "Submit" |
| 7 | Наблюдать поведение | Ожидать ошибку валидации |
Видеозапись: [Ссылка на скриншот/видео из bug tracking system]
5. Ожидаемый результат (Expected Result)
Вариант А: Клиентская валидация (рекомендуется)
Форма НЕ отправляется, и пользователь видит:
-
Сообщение об ошибке прямо под полем username:
- "Username is required" (или на языке интерфейса)
- Сообщение видимо и понятно
-
Визуальные индикаторы:
- Поле username подсвечено красным бордером
- Иконка ошибки (⚠️) рядом с полем
- Кнопка Submit остается в активном состоянии (пользователь может исправить и попробовать снова)
-
Поведение:
- Запрос к серверу НЕ отправляется
- Пользователь остается на форме
- Фокус переходит на поле username (для исправления)
Вариант Б: Серверная валидация (если клиентской нет)
-
Запрос отправляется, но сервер отвечает:
HTTP 400 Bad Request {"error": "username field is required"} -
Пользователь видит:
- Сообщение об ошибке на странице
- Форма сохраняет введенные данные (email, пароль)
- Поле username остается пустым для заполнения
Вариант В: Минимальный стандарт
Критически важно:
- Пользователь НЕ может создать аккаунт с пустым username
- Система не позволяет пустому значению быть сохраненным в БД
6. Фактический результат (Actual Result)
Что происходит на самом деле:
-
Форма отправляется несмотря на пустое поле
- Нет сообщения об ошибке
- Нет визуальной индикации проблемы
- Запрос отправляется на сервер (видно в Network tab DevTools)
-
Возможные последствия (в зависимости от реализации):
Сценарий A: Аккаунт создается с пустым username
- Статус: HTTP 200 OK
- Аккаунт создан в БД с username = NULL или пустой string
- Пользователь может войти и его профиль имеет пустое имя
- Это нарушает целостность данных
Сценарий B: Сервер принимает, но молча игнорирует
- Статус: HTTP 200 OK
- Ответ: {"success": true, "user_id": 12345}
- В БД username заполняется значением по умолчанию (user_12345 или email)
- Непредсказуемое поведение для пользователя
Сценарий C: Сервер возвращает ошибку, но без уведомления пользователя
- Статус: HTTP 400 Bad Request
- Но пользователь не видит ошибку (JavaScript не обрабатывает или скрывает)
- Пользователь может подумать, что аккаунт создан
- Потом при попытке входа обнаруживает, что профиля нет
-
Скриншот поведения:
[Форма регистрации] Username: [ ] ← пусто Email: [user@example.com] Password: [••••••••••] [Sign Up] ← кнопка остается активной После клика → форма исчезает, перенаправление на dashboard Результат: Пользователь создан с username = NULL
7. Приоритет и серьезность (Priority & Severity)
| Критерий | Значение | Обоснование |
|---|---|---|
| Severity (Серьезность) | HIGH | Нарушается целостность данных, пользователи могут создавать некорректные профили |
| Priority (Приоритет) | P1 (CRITICAL) | Это блокирующая проблема для регистрации, влияет на основной функционал |
| Impact (Воздействие) | High | Каждый новый пользователь может зарегистрироваться неправильно |
| Likelihood (Вероятность) | High | Легко воспроизводится при каждой попытке регистрации |
| Blocker (Блокирует ли релиз) | YES | Эта ошибка должна быть исправлена ДО выпуска версии |
Матрица Severity x Priority:
Severity: HIGH + Priority: P1 = MUST FIX IMMEDIATELY
8. Дополнительная информация (Additional Information)
A. Логи и технические детали
Browser Console (DevTools → Console):
No JavaScript errors detected
Form submission successful
Payload sent: {email: "user@example.com", password: "...", username: ""}
Network Tab (DevTools → Network):
Request URL: POST https://api.example.com/api/v1/register
Request Headers:
Content-Type: application/json
Request Body:
{"email": "user@example.com", "password": "SecurePass123!", "username": ""}
Response Status: 200 OK
Response Body:
{"success": true, "user_id": 98765, "message": "Registration successful"}
Database (если есть доступ):
SELECT * FROM users WHERE user_id = 98765;
-- username: NULL или ''
-- email: user@example.com
-- created_at: 2026-03-23 14:35:00
B. Связанные проблемы
- Поле email тоже не валидируется (отдельный баг)
- Поле password принимает пустое значение (отдельный баг)
- Нет вообще клиентской валидации на форме (design issue)
C. Рекомендации по исправлению
Вариант 1 (рекомендуется): Клиентская валидация на HTML5
<input
type="text"
name="username"
required
minlength="3"
maxlength="30"
pattern="^[a-zA-Z0-9_-]+$"
placeholder="Enter username (3-30 characters)"
/>
Вариант 2: JavaScript валидация перед отправкой
function validateForm(event) {
const username = document.getElementById('username').value.trim();
if (!username) {
event.preventDefault();
showError('Username is required');
return false;
}
}
Вариант 3: Серверная валидация (обязательна в любом случае)
if not request.json.get('username') or not request.json['username'].strip():
return {'error': 'Username is required'}, 400
D. Материалы для воспроизведения
- Скриншот формы: [вложение: registration_form_empty_username.png]
- Скриншот Network запроса: [вложение: network_request.png]
- Скриншот ошибки в БД: [вложение: database_record_null_username.png]
- Видео воспроизведения: [ссылка на видео]
9. Тестовые данные
| Поле | Значение | Примечание |
|---|---|---|
| Username | [пусто] | Ключевой момент теста |
| user@example.com | Валидный email | |
| Password | SecurePass123! | Валидный пароль (8+ символов, заглавная, цифра, спецсимвол) |
| Confirm Password | SecurePass123! | Совпадает с password |
10. Истории заинтересованных сторон
Разработчик:
- Нужно добавить валидацию на клиенте и/или сервере
- Проверить все обязательные поля формы на наличие этой проблемы
- Добавить unit тесты для валидации
QA Engineer:
- Проверить исправление на dev/staging окружении
- Убедиться, что валидация работает для всех полей
- Проверить граничные случаи (только пробелы, специальные символы)
Product Manager:
- Это влияет на качество данных пользователей
- Может быть необходимо очистить БД от некорректных записей
Чек-лист для закрытия бага
- Исправление сделано на dev ветке
- Unit тесты написаны и пройдены
- Code review одобрен (минимум 2 reviewer'а)
- Исправление протестировано на staging
- Нет регрессии других полей формы
- Документация обновлена
- Исправление merged в main
- Развернуто в production
- Проведена финальная верификация на продакшене
- QA отметил баг как CLOSED
Статус: OPEN
Дата создания: 2026-03-23
Дата последнего обновления: 2026-03-23
Назначен на: [Name of Developer]
Тикет ID: BUG-2847