🛑 Данный туториал отображается на GitHub 🔴 не корректно! Это лишь исходник.
Правильная версия https://www.epic1h.com/perfect_bug_reports

Туториал: исследуем баги и пишем профессиональные баг-репорты

Подойдет тем, что хочет научиться исследовать ошибки в ПО и писать профессиональные баг-репорты.

👍 Что сделаем

🙋‍️ Перед началом

Создайте текстовый файл env.txt на рабочем столе, заполните и сохраните его со своими данными:

env - сокращение от environment - окружение

Откуда это взять ❓
  • Устройство — посмотрите этикетки на вашем системном блоке или ноутбуке
  • ОС — посмотрите видео
  • Экран — посмотрите короткое видео
  • Браузер — посмотрите короткое видео
  • Параметры сети — зайдите на сайт https://whatismyipaddress.com/

😍 Живая обратная связь

Каждый вторник я провожу бесплатные онлайн стендапы в Zoom.

Если у тебя есть вопрос или проблема, подключайся:

@[Anton Breslavsky|https://t.me/breslavsky_anton|assets/anton.jpg]

Что бы следить за анонсами новых туториалов подписывайся на телеграмм канал


🔢 Шаги

1. Оформляем баг-репорт

Что такое qwerty 🤢?

❗ После нажатия на кнопку Войти пользователю выдается сообщение Критическая ошибка сервера.

Поправьте в репорте:


2. Воспроизводим и исследуем баг


Состояние до бага

Выполните предварительные условия:


Выполни шаги для воспроизведения бага:

Консоль

Не забывайте оформлять Markdown

```text
Текст тут
```
Что получилось
```text
фронтенд загружен
запрос на бекенд GET /api/users/summary
ответ сервера: {count: 3}
Uncaught TypeError: final is not a function at XMLHttpRequest.request.onreadystatechange
```

Cookies

Используйте Markdown таблицы для оформления.

Что получилось
```markdown
| **name** | **value**           |
|----------|---------------------|
| rnd      | 0.22187308399860428 |
```

Запросы к API

```text
{Request Method} {Request URL}
{Status Code} ↓ 
{Response}
```
Что получилось
```text
GET https://qa.ecpic1h.com/api/users/summary
200 ↓ 
{"count": 5}
```

Состояние базы данных

SELECT id, username, password, firstName FROM users WHERE username = 'marry'
Что получилось
Пользователь с логином `marry` присутствует в базе данных.

```markdown
| **id** | **username** | **password** | **firstName** |
|--------|--------------|--------------|---------------|
| 3      | marry        | qwerty       | NULL          |
```
SELECT * FROM sessions WHERE user = 2

Исследуем состояние после обнаружения бага

  1. На форме Входа заполнить поля:
    1. Логин: marry
    2. Пароль: qwerty
  2. Нажать на кнопку Войти

Консоль

Что получилось
```text
запрос на бекенд POST /api/login {username: 'marry', password: 'qwerty'}
POST https://ibank.epic1h.com/api/login 500 (Internal Server Error)
```

Cookies

Что получилось

Без изменений.


Запросы к API

Что получилось
### После нажатия на кнопку **Войти**
```
POST /api/login
{"login": "marry", "password": "qwerty"}
500 ↓
Не удалось создать сессию
```

Состояние базы данных

Что получилось
Создана сессия для пользователя `marry`

`SELECT * FROM sessions WHERE user = 2`

| **id**    | **user** | **active** |
|-----------|----------|------------|
| eeSJFLKxt | 3        | 1          |

Лог сервера

Что получилось
```text
2022-05-01T12:18:46.792Z connected to database
2022-05-01T12:18:46.791Z server has been started
...
2022-05-01T12:18:49.049Z checking password qwerty === qwerty
2022-05-01T12:18:49.049Z finding username marry
2022-05-01T12:18:49.050Z TypeError: Cannot read property 'toUpperCase' of null
```

🙏 Фидбек пожалуйста

Полезный материал?

* 🤩 Очень полезный материал
* 😃 В целом полезный
* 😐 Возможно что-то пригодится
* 😒 Нет ничего полезного
* 😬 Абсолютно бесполезно


**Спасибо за ответ!**

Все ли было понятно?

* 🤩 Все понятно на 100%
* 😃 В целом все понятно
* 😐 Что-то понятно, что-то нет
* 😒 Понял только малую часть
* 😬 Ничего не понял


**Спасибо за ответ!**

Как тебе такой формат туториала?

* 🤩 Очень удобно
* 😃 Мне понравилось
* 😐 Нормально
* 😒 Не удобно
* 😬 Ужасно


**Спасибо за ответ!**

Артефакты

  1. Баг и баг репорт
  2. Правила написания предварительных шагов в тест-кейсах