Какие бывают баги: Полное руководство по классификации ошибок в ПО
Введение
Каждый тестировщик рано или поздно сталкивается с багами. Их классификация важна не только для быстрого исправления, но и для эффективного взаимодействия между разработчиками, менеджерами и QA-инженерами. В этой статье мы разберем основные виды багов, их причины и реальные примеры из практики, а также примеры из известных книг по тестированию.
Классификация багов по характеру ошибки
1 Функциональные баги
Ошибка в работе системы, когда программа не выполняет ожидаемые действия. Такие баги затрагивают бизнес-логику и критически важные процессы.
Примеры:
1. Кнопка «Сохранить» не сохраняет данные (📖 Савин Р. – "Тестирование Dot Com"【1】).
2. В интернет-магазине не удается оформить заказ при заполненных полях (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
3. Фильтры товаров работают некорректно (📖 Мохан Г. – "Фулстек-тестирование"【3】).
4. Пользователь вводит пароль, но система не пускает, хотя данные верные (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
5. При оформлении заявки система сохраняет пустые данные (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
2 UI-баги (визуальные)
Ошибки интерфейса, влияющие на внешний вид и удобство работы с системой. Они могут мешать пользователям понимать, как использовать продукт.
Примеры:
1. Кнопка выходит за границы экрана (📖 Барнум К. – "Основы юзабилити-тестирования"【6】).
2. Цвет текста слишком светлый, что делает его нечитаемым (📖 Винтерингем М. – "Тестирование веб-API"【7】).
3. В мобильной версии элементы накладываются друг на друга (📖 Мохан Г. – "Фулстек-тестирование"【3】).
4. Неправильное отображение шрифтов в локализованной версии (📖 Захаров В.【5】).
5. Кнопка «Назад» ведет на неверную страницу (📖 Савин Р.【1】).
3 Ошибки производительности
Проблемы, влияющие на скорость работы системы, использование памяти или загрузку данных. Такие баги ухудшают пользовательский опыт и могут привести к отказу пользователей от продукта.
Примеры:
1. Загрузка страницы занимает более 10 секунд (📖 Хориков В. – "Принципы юнит-тестирования"【8】).
2. Поиск данных в базе выполняется слишком долго (📖 Мохан Г.【3】).
3. Приложение подвисает при переключении между вкладками (📖 Уиттакер Дж.【2】).
4. После загрузки большого количества данных страница зависает (📖 Захаров В.【5】).
5. Оптимизация запросов снизила нагрузку на сервер на 40% (📖 Кейнер К.【4】).
4 Ошибки безопасности
Баги, которые угрожают защите данных и системе в целом. Они могут привести к взлому, утечке информации или компрометации пользователей.
Примеры:
1. Пароли хранятся в открытом виде (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
2. Уязвимость SQL-инъекции в форме поиска (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
3. Доступ к закрытым данным через изменение параметров в URL (📖 Савин Р. – "Тестирование Dot Com"【1】).
4. Отсутствие шифрования при передаче данных (📖 Мохан Г. – "Фулстек-тестирование"【3】).
5. Возможность обхода аутентификации через подмену cookie (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
5 Ошибки совместимости
Ошибки, возникающие при работе на разных устройствах, операционных системах и браузерах. Они создают проблемы для пользователей с разными техническими условиями.
Примеры:
1. В Safari некоторые кнопки не работают (📖 Винтерингем М. – "Тестирование веб-API"【7】).
2. Приложение корректно работает в Windows, но вылетает в macOS (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. В мобильном браузере изображения загружаются некорректно (📖 Барнум К. – "Основы юзабилити-тестирования"【6】).
4. На разных версиях Android UI выглядит по-разному (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
5. Некорректная работа API в Firefox (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
6 Ошибки локализации
Ошибки, связанные с некорректным переводом, неправильным форматом данных и несоответствием языковых стандартов.
Примеры:
1. В немецкой версии сайта дата отображается в американском формате (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
2. В китайской версии приложения цены отображаются в долларах вместо юаней (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. Часть интерфейса не переведена и остается на английском языке (📖 Барнум К. – "Основы юзабилити-тестирования"【6】).
4. Неверное склонение слов в русской версии приложения (📖 Савин Р. – "Тестирование Dot Com"【1】).
5. Разные символы валюты в англоязычной и локализованной версии (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
7 Ошибки юзабилити
Ошибки, которые ухудшают удобство использования системы и мешают пользователям эффективно выполнять свои задачи. Примеры:
1. Пользователь не может найти кнопку выхода из личного кабинета (📖 Барнум К. – "Основы юзабилити-тестирования"【6】).
2. Форма регистрации требует слишком много данных, что отпугивает пользователей (📖 Савин Р. – "Тестирование Dot Com"【1】).
3. В интернет-магазине после добавления товара в корзину не появляется уведомление (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
4. В мобильном банке авторизация занимает 6 шагов вместо 2 (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
5. В веб-приложении кнопки расположены слишком близко друг к другу, что затрудняет использование на сенсорных экранах (📖 Мохан Г. – "Фулстек-тестирование"【3】).
8 Логические ошибки
Ошибки, возникающие из-за некорректных алгоритмов или нарушения логики работы системы.
Примеры:
1. Система начисляет 5% скидки, но сумма заказа остается неизменной (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
2. В CRM-системе заявки автоматически закрываются без обработки (📖 Савин Р. – "Тестирование Dot Com"【1】).
3. В игре количество очков уменьшается вместо увеличения при успешных действиях (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
4. В банковском приложении неверно округляются суммы при конвертации валют (📖 Мохан Г. – "Фулстек-тестирование"【3】).
5. В системе управления складом после возврата товара общий баланс не изменяется (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
9 Ошибки конфигурации
Ошибки, вызванные некорректными настройками окружения, сервера или базы данных. Примеры:
1. После обновления конфигурации сервера сайт перестал открываться (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
2. В боевой среде используются тестовые ключи API, из-за чего платежи не проходят (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. Различие в настройках базы данных в dev и prod средах вызывает ошибки при миграции (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
4. Неверные права доступа блокируют доступ к административной панели (📖 Савин Р. – "Тестирование Dot Com"【1】).
5. В мобильном приложении push-уведомления не приходят из-за отключенного API-ключа (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
10 Ошибки интеграции
Ошибки, возникающие при взаимодействии между различными сервисами, модулями или API. Примеры:
1. Фронтенд отправляет данные в одном формате, а бэкенд ожидает другой (📖 Винтерингем М. – "Тестирование веб-API"【7】).
2. Платежный сервис не возвращает подтверждение транзакции, из-за чего пользователь не получает чек (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. При интеграции с CRM-системой заказы дублируются (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
4. В мобильном приложении отображается неправильный статус заказа из-за ошибки в API (📖 Савин Р. – "Тестирование Dot Com"【1】).
5. Отправка email-уведомлений работает нестабильно из-за разной кодировки данных (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
11 Ошибки документации
Ошибки, возникающие в спецификациях, инструкциях, тест-кейсах и пользовательской документации. Такие баги могут приводить к недопониманию, неправильному использованию системы или пропущенным тестам. Примеры:
1. В описании API указано поле user_id, но в реальности используется userID (📖 Винтерингем М. – "Тестирование веб-API"【7】).
2. В руководстве пользователя отсутствует инструкция по восстановлению пароля (📖 Савин Р. – "Тестирование Dot Com"【1】).
3. В тест-кейсе шаги не соответствуют текущей версии приложения (📖 Мохан Г. – "Фулстек-тестирование"【3】).
4. В описании продукта заявлена поддержка интеграции с Google Drive, но ее нет (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
5. В спецификации системы не прописаны граничные значения для полей ввода (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
12 Ошибки данных и базы данных
Ошибки, возникающие при некорректной обработке, хранении или передаче данных. Примеры:
1. В базе данных отсутствуют обязательные поля для новых записей (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
2. Дублирование записей в таблице пользователей из-за отсутствия уникального индекса (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. Запрос на обновление данных удаляет существующие значения (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
4. Ошибка при миграции базы данных приводит к потере данных (📖 Уиттакер Дж. – "Как тестируют в Google"【2】).
5. В отчетах аналитики некорректно отображается количество активных пользователей (📖 Савин Р. – "Тестирование Dot Com"【1】).
13 Ошибки объявления переменных и компиляции
Ошибки, связанные с некорректным объявлением, использованием переменных и их типами данных. Примеры:
1. Переменная totalPrice используется до ее инициализации, что вызывает сбой (📖 Хориков В. – "Принципы юнит-тестирования"【8】).
2. Несовместимые типы данных приводят к неожиданным результатам вычислений (📖 Мохан Г. – "Фулстек-тестирование"【3】).
3. Компилятор не распознает библиотеку из-за ошибки в путях зависимостей (📖 Кейнер К. – "Контекстно-ориентированное тестирование"【4】).
4. Использование необъявленной переменной discountValue вызывает исключение (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
5. Ошибка приведения типов приводит к неожиданному поведению приложения (📖 Савин Р. – "Тестирование Dot Com"【1】).
14 Типографические ошибки
Ошибки, связанные с опечатками, некорректным оформлением текста или неверными символами в коде. Примеры:
1. В интерфейсе кнопка подписана как "Сохранть" вместо "Сохранить" (📖 Барнум К. – "Основы юзабилити-тестирования"【6】).
2. В коде используется = вместо ==, что приводит к логической ошибке (📖 Хориков В. – "Принципы юнит-тестирования"【8】).
3. В документации указано login вместо log in, что вводит пользователей в заблуждение (📖 Савин Р. – "Тестирование Dot Com"【1】).
4. В письмах рассылки фамилия пользователя может отображаться с ошибкой из-за некорректной кодировки (📖 Захаров В. – "Тестирование программного обеспечения. Основы"【5】).
5. Пробел в конце строки вызывает ошибку в регулярных выражениях (📖 Мохан Г. – "Фулстек-тестирование"【3】).
Заключение
Мы рассмотрели все основные виды багов, их классификацию, ��римеры и ссылки на авторитетные источники. Баги бывают разными, и их грамотное описание помогает быстрее исправлять ошибки и повышать качество программного обеспечения.
Надеюсь, этот материал будет полезен как начинающим, так и опытным тестировщикам. Если у вас есть свои интересные кейсы или примеры, делитесь ими! 🚀
Список литературы
1. Савин Р. Тестирование Dot Com. — М.: Дело, 2007. — 312 с.
2. Уиттакер Дж., Арбон Дж., Каролло Д. Как тестируют в Google. — СПб.: Питер, 2014. — 320 с.
3. Мохан Г. Фулстек-тестирование. — Астана: Спринт Бук, 2024. — 416 с.
4. Кейнер К., Бах Дж., Петтикорд Б. Тестирование программного обеспечения: контекстно-ориентированный подход. — СПб.: Питер, 2025. — 352 с.
5. Захаров В. Тестирование программного обеспечения. Основы. — М.: Питер, 2024. — 400 с.
6. Барнум К. Основы юзабилити-тестирования. — М.: ДМК Пресс, 2021. — 408 с.
7. Винтерингем М. Тестирование веб-API. — СПб.: Питер, 2024. — 304 с.
8. Хориков В. Принципы юнит-тестирования. — СПб.: Питер, 2021. — 320 с.
✍ Подписывайтесь на наш канал QA❤4Life, чтобы быть в курсе последних IT-событий и не пропустить ещё больше полезных постов, статей, материалов, мемов, конкурсов и акций!