Баг проходит путь от «нашёл» до «закрыт», и на каждом шаге кто-то принимает решение. На собеседовании проверяют, знаешь ли ты этот путь, умеешь ли оценить серьёзность и как ведёшь себя в спорных ситуациях.
Жизненный цикл бага
Типичный счастливый путь:
New → Assigned → In progress → Fixed → Verified → Closed
- New: тестировщик завёл баг.
- Assigned: назначен исполнитель.
- In progress: разработчик исправляет.
- Fixed (Resolved): исправление в сборке.
- Verified: тестировщик проверил на новой сборке.
- Closed: закрыт.
Ответвления:
- Reopened: ретест показал, что баг воспроизводится. Возвращаем тот же баг, а не заводим новый, чтобы сохранить историю.
- Rejected (Not a bug): это не дефект, система работает по требованиям.
- Duplicate: такой баг уже есть.
- Cannot reproduce: разработчик не воспроизвёл.
- Deferred: исправление отложено на будущий релиз.
- Won't fix: дефект признан, но исправлять не будут осознанно.
Статусы в Jira, YouTrack и других трекерах настраиваются, названия могут отличаться, но логика одна.
Severity и priority
Это самый частый вопрос модуля.
- Severity (серьёзность): насколько дефект влияет на систему. Обычно предлагает тестировщик.
- Priority (приоритет): насколько срочно исправлять. Утверждает владелец продукта или менеджер, исходя из бизнеса.
Шкала серьёзности:
| Уровень | Пример |
|---|---|
| Blocker | Приложение не запускается, тестировать невозможно |
| Critical | Двойное списание денег, потеря данных, дыра в безопасности |
| Major | Фильтр не учитывает скидку, есть обходной путь |
| Minor | Подсказка обрезается на узком экране |
| Trivial | Опечатка в тексте политики |
Четыре сочетания, которые просят привести:
- Высокая и высокая: не работает оплата.
- Низкая серьёзность, высокий приоритет: опечатка в названии компании на главной перед рекламной кампанией.
- Высокая серьёзность, низкий приоритет: падение в отчёте, которым пользуются раз в год и который скоро удалят.
- Низкая и низкая: сдвинутый отступ на странице «Вакансии».
Важная деталь: серьёзность не зависит от доли пострадавших. Если у 3% пользователей не открывается оплата, для них функция недоступна целиком, серьёзность высокая. А вот приоритет считают с учётом масштаба и денег.
Спорные ситуации
«Не воспроизводится». Чаще всего разница в окружении: стенд, роль, данные, кеш, фича-флаг. Сравни, допиши в баг-репорт, покажи вживую.
«Так задумано». Если требования молчат, правых нет. Вопрос к владельцу продукта, а решение в требования, чтобы спор не повторился.
Похожий баг уже есть. Убедись, что причина та же, и дополни существующий баг. Если причина другая, заведи новый со ссылкой.
Критичный баг за час до релиза. Сообщи сразу, с оценкой масштаба и вариантами: отложить, выключить функцию флагом, выпустить с риском. Решает бизнес, но осознанно. Занижать серьёзность, чтобы не мешать релизу, нельзя.
Что считать дефектом
Дефект это отклонение фактического поведения от ожидаемого. Ожидания берутся не только из требований: здравый смысл, стандарты платформы, законы, поведение прошлой версии и аналогов. В баг-репорте честно пиши, на чём основано ожидание.
Частые ошибки
- Ставить приоритет самому и спорить о нём. Ты можешь предложить, решает продакт.
- Путать серьёзность с долей пострадавших.
- Заводить новый баг при неудачном ретесте вместо Reopened.
- Закрывать баг «не воспроизводится» без попытки найти разницу в окружении.
Что спросят на собесе
- Опиши жизненный цикл бага.
- Чем severity отличается от priority? Приведи примеры всех сочетаний.
- Кто ставит серьёзность, а кто приоритет?
- Что делать, если разработчик говорит «не баг» или «не воспроизводится»?
- Нашёл критичный баг перед релизом: твои действия?