НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ


Мова програмування Java. W3Schools українською. Уроки для початківців від hyperskill

En

Якість програмного забезпечення. Що таке баг?


Теорія

Помилка програмного забезпечення – це проблема, яка спричиняє збій програми або видає недійсний результат. Є багато причин для програмних помилок; найпоширенішими з них є людські помилки в розробці програмного забезпечення, кодуванні або розумінні вимог.

Програму зазвичай називають стабільною, якщо вона не має багатьох очевидних помилок. Якщо програма має велику кількість помилок, які впливають на функціональність і викликають неправильні результати, вона вважається з помилками або нестабільною. Користувач не може успішно взаємодіяти з таким програмним забезпеченням. Важливо знайти помилки, перш ніж користувачі почнуть взаємодіяти з вашою програмою.


§1. Етимологія помилки

Bug

Ви, мабуть, уже чули термін "bug" ("жук") і можете собі уявити, що воно означає. Ось невелика історія про це.

Першу комп’ютерну помилку виявила Грейс Мюррей у Гарвардському університеті в 1947 році, коли вона працювала над комп’ютером Mark II. Під час розслідування проблеми між контактами реле була виявлена справжня міль. Міль видалили та додали до бортового журналу, який зараз знаходиться в Національному музеї американської історії Смітсонівського інституту у Вашингтоні, округ Колумбія.

Отже, комп’ютерні помилки часто називають помилками (багами). Цей термін використовується для опису будь-якої неправильної поведінки програми, доки не буде визначено конкретний характер помилки.

Деякі Інтернет-джерела подають іншу історію цього терміна. Ви можете погуглити, якщо вам цікаво. Повідомте нас, якщо ви вважаєте якусь історію найбільш вірогідною.


§2. Чому в програмах є помилки?

Розробники часто кажуть, що програми без помилок не існує. Існує кілька поширених причин помилок у програмному забезпеченні:

  • проблеми спілкування в команді;
  • нерозуміння вимог;
  • складність програмного забезпечення;
  • помилки програмування (програмісти, як і будь-хто інший, можуть робити помилки);
  • тиск часу;
  • використання незнайомих технологій;
  • помилка в сторонній бібліотеці (так, таке теж трапляється).

Під час цього курсу ви в основному зіткнетеся з помилками, спричиненими неправильним розумінням заданих вимог або помилками програмування.


§3. Уникнення помилок

Майже неможливо уникнути всіх помилок у великій програмі, але можливо зменшити їх кількість. Тут ми пропонуємо вам п’ять кроків, які можуть допомогти зробити це в освітніх курсах і промисловому програмуванні.

  1. Переконайтеся, що ви знаєте, що робити. Як програміст, ви повинні розуміти вимоги програми, над якою збираєтеся працювати. Якщо у вас є сумніви, ви завжди можете знайти допомогу в Інтернеті чи серед інших розробників.
  2. Розкладіть програму на невеликі блоки, які легко переглянути та зрозуміти. Хороша архітектура зменшує складність програмного забезпечення і, як наслідок, кількість помилок.
  3. Пишіть простий для читання код і дотримуйтесь усіх стандартів мови. Це також дозволить вам робити менше помилок.
  4. Запустіть програму з граничними вхідними значеннями. Не забувайте враховувати різні випадки: 0 або величезне число як вхідне значення, 0 або 1 елемент як вхідну послідовність. Такі випадки часто виявляють помилки.
  5. Напишіть автоматичні тести, які перевірятимуть програму під час збирання.

Ми не будемо обговорювати автоматичні тести в цій темі, але повернемося до них пізніше. У цей момент ви можете просто створити набір вхідних значень і запустити програму вручну (як описано в кроці 4).


§4. Налагодження (дебагінг)

Припустімо, ви знаєте, що ваша програма не працює належним чином для деяких вхідних значень. Щоб виправити цю помилку, вам потрібно знайти її в коді та внести деякі зміни.

Щоб знайти місце помилки, ви можете:


  • прочитайте код і спробуйте зрозуміти, що він робить для вхідних значень;
  • запустити налагоджувач (дебаггер) і переглянути поточні значення змінних і потік керування програмою;
  • роздрукувати поточний стан програми в критичних частинах коду (реєстрація), а потім проаналізувати його.

Поєднання наведених вище підходів дозволить вам знайти більшість помилок у вашій програмі.


§5. Висновок

Давайте підсумуємо цю тему. Помилка - це неправильна поведінка програми. Однак є способи зменшити кількість помилок. Наприклад, розуміння вимог програми, дотримання стандартів мови, побудова чіткої архітектури програми, перевірка програми за допомогою граничних значень і використання автоматизованих тестів.

Якщо ви все ще маєте помилку, перш за все, вам потрібно знайти її в коді. Для цього ви можете скористатися налагоджувачем (дебаггером) чи журналюванням (логінгом) або спробувати зрозуміти, що код робить із вхідними значеннями, прочитавши його. Скористайтеся цими порадами, і, швидше за все, ви уникнете написання програм з помилками та витрачання часу на їх налагодження.

Ви також можете переглянути Урок на hyperskill.org.


Практичні завдання та відповіді

Подаються завдання та варіанти відповідей. Правильний варіант виділено синім кольором.

№1. Причина помилки

Питання: Групі розробників було доручено написати код, який обробляє вхідні дані на сайті. Вони написали програму, яка може читати паролі у вигляді цифр, імен і логінів.

Але вони отримали помилку під час тестування програми. Паролі, крім цифр, повинні містити також букви. Ви вже знаєте, які причини призводять до помилок. Отже, хто з них сприяв тому, що розробники провалилися?

Виберіть один або кілька варіантів зі списку:

  • комп’ютери в офісі недостатньо хороші
  • нерозуміння вимог, оскільки вони були незрозумілими ✔
  • слабке підключення до Інтернету
  • поганий настрій клієнта

Пояснення. Виходячи з наданої інформації, найбільш вірогідною причиною помилки в програмі є «нерозуміння вимог, оскільки вони були незрозумілими». Можливо, розробники неправильно витлумачили вимоги до паролів і не включили необхідний код, який гарантує, що паролі містять літери на додаток до цифр, імен і логінів. Важливо, щоб вимоги були чіткими та недвозначними, щоб уникнути таких проблем.


№2. Важливість налагодження

Питання: Чому важливо налагоджувати код?

Виберіть один варіант зі списку:

  • тому що кожен у вашій команді так робить
  • щоб уникнути помилок у програмах ✔
  • тому що так сказав головний розробник
  • просто для розваги (мені більш нічим зайнятись)

Пояснення. Важливо налагоджувати код, щоб уникнути помилок у програмах. Налагодження допомагає виявити та виправити проблеми в коді, що може запобігти помилкам і покращити загальну якість програми. Налагодження є важливою частиною процесу розробки програмного забезпечення та допомагає переконатися, що програма функціонує належним чином.


№3. Помилки програмного забезпечення

Питання: Виберіть основні причини програмних помилок:

Виберіть один або кілька варіантів зі списку:

  • помилки програмування ✔
  • погода на вулиці
  • проблема зі спілкуванням у команді (коли ти не працюєш сам) ✔
  • нерозуміння вимог ✔

Пояснення. Основними причинами програмних помилок є «програмні помилки» та «нерозуміння вимог». Помилки програмування можуть виникати через помилки, зроблені під час кодування, наприклад синтаксичні помилки, логічні помилки або неправильне використання змінних. Нерозуміння вимог може призвести до помилок, якщо розробники не повністю розуміють, що очікується від програми, або якщо вимоги нечіткі чи неповні. «Погода на вулиці» не є причиною програмних помилок, а «проблема зі спілкуванням у команді» може сприяти проблемам, але не є основною причиною помилок.


№4. Програма з великою кількістю помилок

Питання: Як можна описати програму, якщо в ній є велика кількість помилок, які впливають на функціональність і спричиняють неправильні результати?

Виберіть один варіант зі списку:

  • це взагалі не програма
  • непотріб
  • нестабільна ✔
  • неприродна

Пояснення. Якщо програма має велику кількість помилок, які впливають на її функціональність і спричиняють неправильні результати, її можна описати як "нестабільну". Це означає, що програма ненадійна і може працювати не так, як очікувалося. Важливо виявити та виправити ці помилки, щоб покращити стабільність і функціональність програми.


№5. Перший баг

Питання: У якому році була виявлена перша комп’ютерна помилка (баг)?

Виберіть один варіант зі списку:

  • 1948
  • 1947 ✔
  • 1946
  • 1945

№6. Що таке баг (помилка)?

Питання: Баг - це:

Виберіть один варіант зі списку:

  • проблема, яка спричиняє збій комп’ютера
  • нове завдання, яке програміст не може вирішити
  • нова частина коду, яка спричиняє збій комп’ютера або створює недійсні результати
  • проблема, яка спричиняє збій програми або видає недійсний результат ✔

Пояснення. Баг - це "проблема, яка спричиняє збій програми або видає недійсний результат". Це помилка або недолік у коді, які можуть спричинити неочікувану поведінку або неправильні результати під час запуску програми. Помилки можуть виникати через помилки програмування, неправильне розуміння вимог або інші проблеми в процесі розробки. Щоб переконатися, що програма функціонує належним чином, важливо виявляти та виправляти помилки.


№7. Де помилка?

Питання: Ви пишете проєкт, використовуючи різні бібліотеки сторонніх розробників. У якийсь момент ви виявляєте, що програма видає неправильні значення. Ви перевірили свій код, але не знайшли жодних помилок. Де, швидше за все, можна знайти помилку?

Виберіть один варіант зі списку

  • у бібліотеці третьої сторони ✔
  • перевірте ще раз у своєму коді
  • в комп’ютерній системі
  • в Інтернеті

Пояснення. Якщо ви перевірили свій код і не знайшли жодних помилок, найвірогідніше місце для пошуку помилки – бібліотека третьої сторони. Можливо, у коді бібліотеки є помилка, яка спричиняє неправильний вихід. Можливо, вам знадобиться переглянути документацію для бібліотеки або звернутися до розробників бібліотеки, щоб отримати допомогу щодо виявлення та розв’язання проблеми.


№8. Як знайти помилку?

Питання: Що можна зробити, щоб знайти місце для баггі?

Виберіть одну або кілька опцій зі списку:

  • запустити налагоджувач ✔
  • проаналізувати код ✔
  • надрукувати поточний стан програми ✔
  • переписати весь код
  • просто запустити код ще раз (а потім ще раз... ще раз... ще раз...)

Пояснення. Щоб знайти місце з помилками, можна почати з аналізу коду, щоб виявити потенційні помилки чи проблеми. Крім того, використання налагоджувача може допомогти покроково пройти через код і визначити конкретне місце, де виникає помилка. Друк поточного стану програми в різних точках коду також може бути корисним для визначення місця виникнення помилки. Переписувати весь код не потрібно, і це, як правило, неефективне рішення. Просто повторний запуск коду без внесення змін навряд чи розв’яже проблему.


№9. Зменшення кількості помилок

Питання: Яка з наведених нижче рекомендацій може зменшити кількість помилок у вашій програмі?

Виберіть один або кілька варіантів зі списку:

  • написати весь код в одному місці (тобто файл, клас, метод)
  • запустити програму з граничними вхідними значеннями ✔
  • зрозуміти, що вам потрібно для розвитку ✔
  • написати складний і неочевидний код

Пояснення. Наступні рекомендації можуть зменшити кількість помилок у вашій програмі:

  • Запустіть програму з граничними вхідними значеннями: це може допомогти виявити будь-які проблеми з обробкою програмою граничних випадків або неочікуваних вхідних даних.
  • Зрозумійте, що вам потрібно розробити: чітке розуміння вимог програми та очікуваної поведінки може допомогти уникнути непорозумінь і помилок у коді.
  • Уникайте написання складного та неочевидного коду: написання чіткого, простого та легкого для розуміння коду може зменшити ймовірність помилок і полегшити виявлення та вирішення будь-яких проблем, які виникають.

Не рекомендується писати весь код в одному місці, оскільки це може ускладнити читання, розуміння та підтримку коду. Як правило, код краще організувати в окремі файли, класи або методи на основі їх функціональних можливостей.


№10. Як позбутися багів?

Питання: Уявіть, що ви написали код, і він не працює належним чином через помилки. Що ви можете зробити, щоб виправити код? Виберіть кілька можливих дій нижче:

Виберіть один або кілька варіантів зі списку:

  • написати автоматизовані тести ✔
  • створити набір вхідних значень і запустити програму вручну ✔
  • сподіваюся, що все добре
  • переглянути програму та вгадати, чи вона правильна

Пояснення. Якщо ваш код не працює належним чином через помилки, такі дії можуть допомогти виправити код:

  • Напишіть автоматичні тести: це може допомогти виявити конкретні проблеми в коді та переконатися, що вони виправлені перед розгортанням коду.
  • Створіть набір вхідних значень і запустіть програму вручну: це може допомогти виявити проблеми з обробкою програмою певних вхідних даних або граничних випадків.
  • Перегляньте програму та визначте потенційні проблеми: це може допомогти визначити конкретні області коду, які можуть спричиняти проблеми, і дозволить вам зосередити свої зусилля налагодження.

Сподіватися, що все гаразд, не рекомендується, оскільки це навряд чи допоможе вирішити будь-які проблеми та може призвести до подальших проблем. Також не рекомендується вгадувати, чи програма правильна, оскільки це навряд чи буде ефективною стратегією налагодження.