← Назад к вопросам

Составить баг-репорт

1.7 Middle🔥 241 комментариев
#Теория тестирования

Условие

Вы обнаружили следующую ошибку в приложении:

Поле username должно быть обязательным для заполнения, но форма позволяет отправить данные с пустым username.

Составьте полноценный баг-репорт, который включает:

  • Заголовок
  • Окружение (Environment)
  • Предусловия
  • Шаги воспроизведения
  • Ожидаемый результат
  • Фактический результат
  • Приоритет и серьёзность (Priority/Severity)
  • Дополнительные материалы (если применимо)

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Баг-репорт: Поле 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)

  1. Пользователь не авторизован (находится в статусе гостя)
  2. Страница регистрации доступна и загружена полностью
  3. Форма видна без ошибок загрузки (no 404, no 500)
  4. JavaScript включен в браузере
  5. Других форм на странице нет или они свернуты
  6. Интернет соединение стабильно
  7. Сервер доступен и отвечает нормально
  8. Поле 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)

Вариант А: Клиентская валидация (рекомендуется)

Форма НЕ отправляется, и пользователь видит:

  1. Сообщение об ошибке прямо под полем username:

    • "Username is required" (или на языке интерфейса)
    • Сообщение видимо и понятно
  2. Визуальные индикаторы:

    • Поле username подсвечено красным бордером
    • Иконка ошибки (⚠️) рядом с полем
    • Кнопка Submit остается в активном состоянии (пользователь может исправить и попробовать снова)
  3. Поведение:

    • Запрос к серверу НЕ отправляется
    • Пользователь остается на форме
    • Фокус переходит на поле username (для исправления)

Вариант Б: Серверная валидация (если клиентской нет)

  1. Запрос отправляется, но сервер отвечает:

    HTTP 400 Bad Request
    {"error": "username field is required"}
    
  2. Пользователь видит:

    • Сообщение об ошибке на странице
    • Форма сохраняет введенные данные (email, пароль)
    • Поле username остается пустым для заполнения

Вариант В: Минимальный стандарт

Критически важно:

  • Пользователь НЕ может создать аккаунт с пустым username
  • Система не позволяет пустому значению быть сохраненным в БД

6. Фактический результат (Actual Result)

Что происходит на самом деле:

  1. Форма отправляется несмотря на пустое поле

    • Нет сообщения об ошибке
    • Нет визуальной индикации проблемы
    • Запрос отправляется на сервер (видно в Network tab DevTools)
  2. Возможные последствия (в зависимости от реализации):

    Сценарий 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 не обрабатывает или скрывает)
    • Пользователь может подумать, что аккаунт создан
    • Потом при попытке входа обнаруживает, что профиля нет
  3. Скриншот поведения:

    [Форма регистрации]
    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[пусто]Ключевой момент теста
Emailuser@example.comВалидный email
PasswordSecurePass123!Валидный пароль (8+ символов, заглавная, цифра, спецсимвол)
Confirm PasswordSecurePass123!Совпадает с 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

Составить баг-репорт | PrepBro