b733e4
Научим создавать свои игры, сайты и приложения
Начать учиться

Что такое баг

Что такое баг
2K

Качественные программы не появляются по щелчку пальцев — на разных этапах разработчики часто натыкаются на ошибки. Это неизбежно, даже у самых крутых программистов. Сегодня поговорим о багах: разберёмся, что это такое, как они возникают и как с ними бороться.

Что называют багом

Представьте, что вы решаете уравнение. Задача — найти x, и вы делаете всё, чтобы добиться этого: используете переменные, находите дискриминант, обращаетесь к теореме Виета. И вроде ответ найден, но когда вы подставляете значение x в уравнение, то понимаете, что ошиблись.

Примерно то же самое происходит с программистом, который запускает код, а тот не выдаёт нужный результат. Где-то закралась ошибка, и поэтому программа работает неверно. Совсем как то уравнение. Эту ошибку, которая не даёт коду работать, на сленге программистов называют багом.

Баг — это ошибка в коде, из-за которой возникает сбой программы.

При этом не всякую ошибку кода можно назвать багом. Если программа не работает совсем, это не тот случай. Обычно это слово используют для ошибок, при которых код запускается, но даёт неправильный результат. И если такое случается, специалист проверяет каждую строку, чтобы найти и исправить её. Такой процесс называют дебаггингом.

Давайте разберём пример бага и заодно сделаем его дебаггинг. Возьмём простой код на Python. Его задача — делить одно число на другое, но мы специально сделаем условия невыполнимыми, чтобы программа работала неверно. Для этого попросим её разделить 10 на 0. Вот этот код:

def divide_numbers(num1, num2):

result = num1 / num2

print("Ответ: " + result)

divide_numbers(10,0)

Такая программа не будет работать верно: появится ошибка (ZeroDivisionError). Чтобы исправить это, мы можем добавить в код проверку деления на ноль. С ней программа сначала удостоверится, что num2 не равен нулю, и только потом начнёт вычислять. Так мы избежим программной ошибки, и код будет работать верно.

А вот исправленная версия:

def divide_numbers(num1, num2):

if num2 !=0:

result = num1 / num2

print("Ответ: " + str(result))

else:

print("Нельзя делить на ноль")

divide_numbers(10,0)

Это интересно

Термин «баг» произошёл от английского bug. Этот термин переводится как «жук» и тянется корнями в 50-е годы. Тогда создательница первого в мире компилятора Грейс Хоппер обнаружила, что у компьютера Mark II закоротило контакты из-за севшей на них бабочки.

Где обитают баги

Баги встречаются в разных продуктах: на сайтах, в играх, в ПО. А ещё они могут возникнуть на любой стадии создания продукта — от первых этапов разработки до готовой программы, которая уже давно перешагнула релиз. И это нормально.

Давайте рассмотрим примеры багов в разных случаях и заодно выясним, откуда они берутся.

На веб-страницах

Вы точно хотя бы раз сталкивались с ошибками на сайтах. Например, с неработающими ссылками или со страницей в петле бесконечной загрузки. Такие баги бывают разными: одни лишают ресурс функции, другие могут вообще закрыть к нему доступ. При этом сами баги могут возникнуть на стороне как сервера, так и клиента.

Вот ещё несколько примеров таких багов:

  • не работают кнопки;

  • ссылки на сайте ведут не туда, куда должны;

  • опечатки в тексте;

  • смещается вёрстка на экранах разного формата;

  • неверно работают анимации и т. д.

В видеоиграх

Некоторые ошибки в играх — это лишь повод для мемов и шуток в гейм-сообществе. Многие из них выглядят забавно и не рушат удовольствие от процесса. Так, например, легендарным стал баг в Skyrim, при котором от удара великана Довакин регулярно пробовал себя в роли астронавта. Или ещё один из той же игры, который позволял надеть ведро на голову NPC, чтобы спокойно обокрасть их.

О других же багах игроки вспоминают с зубным скрежетом, потому что те делают проект неиграбельным. Так, игра Vampire: The Masquarade — Bloodlines на релизе была забагованной настолько, что играть в неё было нереально. И лишь годы спустя стараниями фанатов она заслужила свой титул шедевра RPG.

Можете быть уверены, вы наткнулись на ошибку в компьютерной игре, если заметили, что:

  • неверно отображаются текстуры;

  • игровые модели двигаются не так, как должны, или деформируются;

  • пропадает текст или аудио;

  • персонаж игрока проваливается сквозь текстуры или застревает в них;

  • пропадают или не завершаются квесты и т. д.

Когда разработчики находят ошибку, они исправляют её через патчи.

В программном обеспечении

И хотя разработчики тестируют программы на баги до релиза, они появляются и после. Специалисты могут найти их сами или через сообщения об ошибках от пользователей. Для последнего варианта даже существует особая система — bug bounty. Так называют вознаграждение, которое разработчики выплачивают пользователю, если тот найдёт критичный баг. Позже такие ошибки исправляют в новых версиях.

Вот несколько признаков, что вы столкнулись с такой ошибкой в приложении:

  • оно зависает или вылетает;

  • неверно работают некоторые функции;

  • приложение не открывается;

  • ПО некорректно работает в конкретной операционной системе и т. д.

5K

Что такое GitHubЧитать →

Получи больше пользы от Skysmart:

Виды багов

У багов есть несколько классификаций по разным критериям. Самый очевидный — это их сложность. Так, некоторые баги могут быть безобидными и почти не мешают пользователю. Другие же непредсказуемы. Они отнимают важные функции, блокируют ресурс или угрожают персональным данным.

Также баги делят на виды по их сущности. Разберёмся в некоторых из них с помощью таблицы ниже.

Виды багов по их природе

Вид бага

Что означает

Пример

Функциональный

Баг, при котором действия пользователя не совпадают с их результатом

Пользователь нажимает на кнопку «Личный кабинет», а попадает в раздел «Корзина»

Визуальный

Баг, из-за которого деформируется интерфейс приложения или веб-страницы

Кнопка и её надпись разъехались в разные стороны

Логический

Баг, при котором приложение или сайт нарушают логику

Сайт разрешает установить слишком старую дату рождения, например 1700 год. Или, наоборот, дату из будущего

Дефект UX

Баг, при котором неудобно пользоваться приложением или сайтом

Слишком мелкие или близко расположенные друг к другу кнопки

Баг нагрузки

Баг, при котором приложение или сайт не справляются с большим количеством входящего трафика

Приложение социальной сети не работает или зависает из-за наплыва пользователей

Баг производительности

Баг, который делает приложение «прожорливым» до памяти, заряда и т. д.

Во время сессий в мобильной игре смартфон разряжается гораздо быстрее, чем в других играх

Как избежать багов

Баги и другие ошибки — это обыденность для разработчиков. У языков программирования слишком много нюансов, чтобы избегать их полностью. К тому же существует человеческий фактор и ещё много других, которые влияют на появление багов.

И всё же разработчики стараются сделать так, чтобы их было мало. А ещё снизить риски от них, чтобы не ставить на кон репутацию компании, персональные данные и бюджеты. Для этого они:

  • ответственно подходят к написанию кода, проверяют его на опечатки;

  • заранее закладывают в код необычные сценарии, если это возможно;

  • тестируют приложение на разные сценарии, в т. ч. на необычные;

  • проводят юнит-тестирование, где проверяют каждый отдельный элемент приложения;

  • занимаются поддержкой, следят за репортами от пользователей, вовремя исправляют баги, выпускают патчи и новые версии.

Это важно

Ошибаться может быть неприятно, но полностью избежать этого не получится. Важно смириться с тем, что баги будут, и воспринимать это как опыт. Он важен для каждого начинающего разработчика.

Кто спасает ПО от багов: профессия «Тестировщик»

В больших командах и студиях программисты не тестируют свои проекты сами. Этим занимаются отдельные специалисты — тестировщики. Их задача — работать с игрой, приложением или сайтом и проходить разные сценарии, которые могут произойти с пользователем. А потом следить, как поведёт себя продукт. И если случится баг, тестировщик опишет его и составит баг-репорт.

Баг-репорт — подробное сообщение об ошибке, её причинах и локализации.

На вопрос, трудно ли стать тестировщиком, ответа нет. Всё зависит от того, какое направление выберет кандидат, а ещё — от сложности проекта. Но в целом каждый тестировщик должен:

  • уметь работать с инструментами для баг-трекинга: Jira, Bugzilla и т. д.;

  • знать свой продукт — игру, приложение, программу, сайт и т. д.;

  • иметь навыки тестирования, знать классификацию багов, уметь работать с баг-репортами;

  • быть знаком с языком программирования, код на котором он тестирует.

Также, если тестировщику важно уметь оценивать производительность, стоит изучить базы данных и SQL.

В этой статье мы разобрались, что такое баги, где их можно обнаружить и кто с ними борется. Если и вы хотите в будущем стать тестировщиком, начните с изучения кода. Это один из самых важных навыков для специалистов в IT.

На курсах программирования в Skysmart Pro вы сможете выбрать перспективный язык и изучить его синтаксис. А ещё сможете работать над собственными проектами на каждом этапе курса так, чтобы к его окончанию создать целое портфолио. Первый вводный урок — бесплатно!

Открыть диалоговое окно с формой по клику
Бесплатный вебинар
Бесплатный вебинар
Бесплатный вебинар
Научиться разработке
Подготовиться к ОГЭ/ЕГЭ
Получите план развития в программировании
  • Поможем с выбором IT-профессии
  • Вместе сделаем первый проект
  • Расскажем, как проходят занятия
Шаг 1 из 2
Шаг 1 из 2
Шаг 2 из 2