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

Что важно зарепортить в баге?

1.3 Junior🔥 271 комментариев
#DevOps и инфраструктура

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

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

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

Что важно зарепортить в баге?

Высокий качественный баг-репорт — это основа эффективной разработки. Плохой репорт тратит время разработчиков впустую.

Структура качественного баг-репорта

1. Название (Summary)

Правило: Конкретное, описывающее суть проблемы, 5-10 слов.

❌ ПЛОХО:
"Сломалось"
"Баг в login"
"Ошибка при нажатии кнопки"

✓ ХОРОШО:
"Ошибка 500 при входе с email содержащей + символ"
"Дублирование заказа при двойном клике на Оформить"
"Мобильное меню не закрывается при выборе пункта"

Почему это важно? Разработчик видит 100+ багов в неделю. Название определяет, на что они смотрят в первую очередь.

2. Описание (Description)

Пишем поэтапно, что видим:

### Что произошло
При попытке зарегистрировать аккаунт с email содержащей 
плюс-адресацию (например, user+tag@gmail.com), приложение 
возвращает ошибку 500.

### Как это воспроизвести
1. Открыть страницу регистрации
2. Ввести email: test+dev@example.com
3. Ввести пароль: Pass123!
4. Нажать "Зарегистрироваться"
5. Получаем ошибку

### Ожидаемое поведение
Приложение должно принять email с плюсом и зарегистрировать 
пользователя успешно (согласно RFC 5322).

### Фактическое поведение
Получаем статус 500 с сообщением: "Internal Server Error"

3. Логи и Stacktrace

Это САМОЕ ВАЖНОЕ! Без логов разработчик потратит час на гадание.

### Backend Logs

2024-03-23 12:34:56.789 ERROR [auth.views] Exception in register_user(): ValueError: invalid email format

Traceback (most recent call last):

File "auth/views.py", line 42, in register_user

    email = validate_email(request.data["email"])

File "auth/validators.py", line 15, in validate_email

    if "+" in email:
      raise ValueError(f"Invalid email: {email}")

ValueError: invalid email: test+dev@example.com


### Frontend Console Errors

GET /api/v1/auth/register 500 Internal Server Error Response: {"error": "Invalid email format"} XHR Error Code: UNPROCESSABLE_ENTITY


Это позволяет сразу найти проблему в коде: `validators.py` линия 15.

#### 4. Окружение (Environment)

Browser / Client

  • Browser: Chrome 123.0.0.1
  • OS: Windows 11
  • Resolution: 1920x1080

Server

  • Python version: 3.11.2
  • Django version: 4.2
  • Database: PostgreSQL 15

API Response Headers

HTTP/1.1 500 Internal Server Error Content-Type: application/json X-Request-ID: abc-123-def-456


Желательно также:
- Версия приложения/API
- Дата и время в UTC
- X-Request-ID (для трейсинга логов)

#### 5. Скриншоты / Видео

Скриншот 1: Форма регистрации

[Изображение с заполненным email тестом+dev@example.com]

Скриншот 2: Ошибка

[Изображение с сообщением об ошибке]

Видео воспроизведения (опционально)

[Лучше чем 10 скриншотов]


#### 6. Степень воспроизводимости

Reproducibility

  • Воспроизводим ли баг? ✓ Да, каждый раз ⚠ Иногда (в 50% случаев) ✗ Редко (затруднена воспроизводимость)

Frequency

"Баг происходит в 100% случаев, когда используется + в email"


#### 7. Приоритет (Priority) и Серьезность (Severity)

Severity

  • Critical: Приложение упало, невозможно пользоваться
  • High: Основной функционал сломан
  • Medium: Второстепенный функционал неработает
  • Low: Визуальный дефект, minor issue

Priority

  • P0 (Critical): Нужно исправить сегодня (production down)
  • P1 (High): Исправить в текущий спринт
  • P2 (Medium): Исправить в следующий спринт
  • P3 (Low): Someday maybe

Этот баг:

Severity: HIGH (не можешь зарегистрироваться) Priority: P1 (влияет на конверсию)


#### 8. Дополнительная информация

Related Issues

Относится к: #123 (баг с + в username)

Possible Root Cause

Предположительная причина: validator.py использует простую regex без поддержки RFC 5322.

Potential Solution

Использовать email-validator библиотеку:

from email_validator import validate_email

email = validate_email("test+dev@example.com")
print(email.normalized)  # test+dev@example.com

### Пример идеального баг-репорта

```markdown
## Баг: Ошибка 500 при регистрации email с плюсом

**Статус:** Open
**Приоритет:** P1 High
**Серьезность:** HIGH

### Описание
Приложение отклоняет email адреса с символом "+" (плюс-адресация).
Это стандартная функция почтовых сервисов (RFC 5322),
которая позволяет создавать ярлыки: user+tag@gmail.com

### Шаги воспроизведения
1. Перейти на https://app.example.com/register
2. Заполнить форму:
   - Email: test+dev@gmail.com
   - Password: Test123!@
3. Нажать "Sign Up"
4. Увидеть ошибку 500

### Ожидаемое поведение
Приложение должно:
1. Принять email с плюсом
2. Отправить verification письмо
3. Зарегистрировать пользователя

### Фактическое поведение
Получаем ошибку 500 с сообщением:

{ "error": "Invalid email format", "code": "INVALID_EMAIL" }


### Логи

2024-03-23T12:34:56.789Z ERROR [auth.validators] Invalid email format: test+dev@gmail.com at validate_email (auth/validators.py:15) at register_user (auth/views.py:42) at app.post (/api/v1/auth/register)


### Окружение
- Chrome 123.0.0.1 on macOS 14.3
- API v1.2.3
- Database: PostgreSQL 15.2
- Timestamp: 2024-03-23T12:30:00Z UTC
- Request ID: req_123abc456def789

### Скриншоты
- [Форма регистрации](screenshot1.png)
- [Ошибка 500](screenshot2.png)

### Воспроизводимость
- Воспроизводим: Всегда (100%)
- Появился в версии: v1.2.0
- Работал в версии: v1.1.5

### Root Cause
Файл auth/validators.py линия 15:
```python
if "+" in email:
    raise ValueError(f"Invalid email: {email}")

Этот check отклоняет все email с плюсом, что нарушает RFC 5322.

Предложенное исправление

Использовать проверенную библиотеку:

from email_validator import validate_email, EmailNotValidError

def validate_email_address(email_str: str) -> str:
    try:
        email_obj = validate_email(email_str, check_deliverability=False)
        return email_obj.normalized
    except EmailNotValidError as e:
        raise ValueError(f"Invalid email: {str(e)}")

### Что НЕ нужно писать в баг-репорте

❌ "Ничего не работает" — слишком абстрактно ❌ "Это уродство" — субъективно, не помогает ❌ "Исправьте это СРОЧНО" — повышенный тон ❌ Стена текста без форматирования — трудно читать ❌ Скриншоты без контекста — что на них смотреть? ❌ Гадание вместо логов — потеря времени


### Чеклист перед отправкой баг-репорта

- [ ] Название конкретное и описательное
- [ ] Шаги воспроизведения ясные и простые
- [ ] Включены логи и stacktrace
- [ ] Указано окружение (версии, браузер, ОС)
- [ ] Скриншоты/видео прилагаются
- [ ] Указана степень воспроизводимости
- [ ] Приоритет и серьезность определены
- [ ] Нет эмоций и субъективности
- [ ] Проверено, что это действительно баг (не feature)
- [ ] Баг ещё не открыт (не дублирование)

### Золотое правило

**Разработчик должен понять баг за 2 минуты из твоего репорта.**

Если для разработчика нужно час потратить на воспроизведение —
это плохой репорт.

**Твоя задача:** Спасти время разработчику, рассказав всё
то, что нужно для быстрого исправления.