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

Какие знаешь виды багов?

2.0 Middle🔥 252 комментариев
#Работа с дефектами#Теория тестирования

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

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

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

Классификация багов в тестировании программного обеспечения

Работая QA Engineer более 10 лет, я сталкивался с огромным разнообразием дефектов. Их классификация помогает систематизировать работу, правильно составлять отчёты и эффективно коммуницировать с разработчиками. Вот основные виды багов, сгруппированные по ключевым признакам:

1. По степени критичности (Severity)

Критичность отражает влияние бага на систему и пользователя.

  • Critical (Блокирующий): Полный крах системы, потеря данных, невозможность выполнить ключевую функцию. Пример: приложение падает при запуске.
  • High (Высокий): Ключевая функциональность работает некорректно, но есть обходной путь. Пример: нельзя оформить заказ, но корзина работает.
  • Medium (Средний): Проблема в некритичной функциональности или визуальное несоответствие, не мешающее использованию. Пример: неверный цвет кнопки в определённом состоянии.
  • Low (Низкий): Незначительные косметические недочёты, опечатки в тексте, не влияющие на логику.

2. По приоритету исправления (Priority)

Приоритет определяет очерёдность исправления и может не совпадать с критичностью.

  • High (Высокий): Должен быть исправлен как можно скорее, часто совпадает с критическими багами.
  • Medium (Средний): Исправляется в рамках текущего спринта или итерации.
  • Low (Низкий): Может быть отложен на потом или исправлен при наличии ресурсов.

3. По сфере проявления (Типу)

  • Функциональные баги: Функция работает не в соответствии с требованиями (FR) или ожиданиями пользователя.
    // Пример: Функция сложения возвращает неверный результат.
    public int add(int a, int b) {
        return a - b; // Баг! Должно быть a + b
    }
    
  • Логические баги: Ошибка в бизнес-логике. Пример: скидка применяется дважды к итоговой сумме.
  • Юзабилити-баги: Интерфейс неудобен или неинтуитивен для пользователя. Пример: важная кнопка скрыта или имеет неочевидное назначение.
  • Визуальные/UI баги: Несоответствие макетам: смещение элементов, неверные шрифты, цвета, размеры.
  • Баги производительности (Performance): Долгая загрузка страниц, высокое потребление памяти/CPU, "зависания" интерфейса.
  • Баги совместимости (Compatibility): Проблемы на определённых устройствах, браузерах, версиях ОС или разрешениях экрана.
  • Баги безопасности (Security): Уязвимости, позволяющие получить несанкционированный доступ, SQL-инъекции, XSS-атаки.
    -- Пример уязвимости SQL, позволяющей обойти аутентификацию
    -- Ввод пользователя: ' OR '1'='1
    SELECT * FROM users WHERE login = '' OR '1'='1' AND password = '...';
    
  • Регрессионные баги: Функциональность, которая работала корректно в предыдущих версиях, перестала работать после внесения изменений.
  • Репродуцибельные и нерепродуцибельные баги:
    *   **Репродуцибельный (Reproducible)**: Чётко воспроизводится по заданным шагам.
    *   **Нерепродуцибельный (Heisenbug)**: Воспроизводится нерегулярно, зависит от стечения обстоятельств (состояние системы, время, нагрузка). Часто связаны с многопоточностью, кэшем или условиями гонки.
```javascript
// Упрощённый пример условия гонки (Race Condition)
let balance = 100;
async function withdraw(amount) {
    if (balance >= amount) {
        await someAsyncOperation(); // В этот момент баланс может измениться другим запросом
        balance -= amount; // Возможен уход в минус, если не контролировать
    }
}
```

4. По этапу обнаружения

  • Баг на этапе разработки (Dev): Найден тестировщиком в новой функциональности.
  • Баг на продакшене (Production): Обнаружен реальными пользователями после релиза. Часто имеют максимальный приоритет из-за влияния на бизнес и репутацию.

Важное замечание: Эффективный QA Engineer не только находит и классифицирует баги, но и умеет грамотно их документировать. Хороший баг-репорт всегда содержит четкие шаги для воспроизведения (Steps to Reproduce), фактический и ожидаемый результат, среду выполнения (environment), а также визуальные доказательства (скриншоты, логи, видео). Понимание этих видов и их особенностей позволяет строить более точные тест-кейсы, эффективнее распределять усилия команды и в конечном итоге значительно повышать качество выпускаемого продукта.

Какие знаешь виды багов? | PrepBro