Звіти про дефекти

Дефекти, Помилки, Збої

Дефект (Defect, Bug, Fault) – недосконалість або недолік робочого продукту, коли він не відповідає вимогам або специфікаціям.

Помилка (Error) – дія людини, що призводить до неправильного результату.

Збій (Failure) – подія, під час якої компонент або система не виконує необхідну функцію в межах визначених обмежень.

Людина може зробити помилку, яка може призвести до появи дефекту у програмному коді або в іншому пов’язаному робочому продукті. Помилка, яка призводить до появи дефекту в одному робочому продукті, може викликати помилку, яка призводить до виникнення дефекту в пов’язаному робочому продукті.

Наприклад, помилка у вимогах може призвести до дефекту вимог, що потім призводить до помилки програмування, яка призводить до дефекту коду.

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

Причини помилок

Помилки можуть виникати з багатьох причин, наприклад:

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

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

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

Може виникнути й зворотна ситуація, коли подібні помилки чи дефекти призводять до хибно негативних результатів. Хибнонегативні – це тести, які не виявляють дефектів, які вони мали б виявити.

Дефекти та першопричини

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

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

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

Види дефектів

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

  • Неправильне трактування вимог (Misinterpretation of Requirements): Це відбувається, коли розробник чи команда неправильно розуміють вимоги до програми. Як результат, програма може працювати правильно з точки зору розробника, але не відповідати потребам користувачів чи замовника.
  • Невірне управління пам’яттю (Memory Leaks): Це відбувається, коли програма неправильно використовує пам’ять, і в результаті, обсяг доступної пам’яті зменшується, що може призводити до витоку пам’яті та неправильної роботи програми.
  • Відсутність або неефективна обробка помилок (Error Handling Issues): Якщо програма не вміє або неправильно обробляє помилки, це може призводити до непередбачених ситуацій або навіть витоку конфіденційної інформації.
  • Проблеми з безпекою (Security Issues): Програмне забезпечення може бути вразливим до атак, якщо розробники неправильно враховують аспекти безпеки. Невірна обробка даних, недостатня аутентифікація та авторизація можуть призвести до серйозних проблем з безпекою.
  • Проблеми з використанням ресурсів (Resource Usage Issues): Дефекти в коді можуть призводити до неправильного використання системних ресурсів, таких як процесор, пам’ять чи мережеві ресурси.
  • Проблеми з взаємодією (Interoperability Issues): Якщо програмне забезпечення не взаємодіє ефективно з іншими системами чи програмами, це може призводити до невірної передачі даних, невідповідності стандартам чи іншим проблемам.
  • Проблеми з продуктивністю (Performance Issues): Несправності, що впливають на продуктивність, можуть включати у себе повільну реакцію програми, зависання чи інші проблеми з продуктивністю.

Щоб уникнути або мінімізувати дефекти у програмному забезпеченні, використовуються різноманітні методи тестування, аудиту коду, використання практик політики безпеки та інші стратегії управління якістю програмного продукту.

Життєвий цикл дефекту

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

Новий (New)Дефект виявлений та зареєстрований в системі управління дефектами. Це початковий статус, коли дефект ще не розглянутий розробниками чи тестувальниками.
Розподілений (Assigned)Дефекту призначено відповідальну особу, яка має вирішити виявлену проблему.
Відкладено (OnHold)Дефект зареєстровано, але через певні причини відкладено процес його розв’язання.
Неможливо відтворити (Can’t Reproduce)Зареєстрований дефект не вдається відтворити, потрібна додаткова інформація чи уточнення в описі.
Відхилено (Rejected)Дефект не підтверджено через певні причини (хибне спрацьовування, неточності в описі).
Виправлений (Fixed)Розробник виправив дефект у вихідному коді програми.
Перевірений (Verified)Після успішного повторного тестування виправленого дефекту визначається, що дефект більше не виявляється в програмі.
Закритий (Closed)Дефект вважається вирішеним і закритим після виправлення та успішної перевірки.
Повторно відкритий (Reopened)Якщо під час перевірки виявляється, що дефект не був повністю виправлений, або з’явився знову, він може бути відкритий знову для подальшого виправлення.
Статуси дефектів

В залежності від проєкту і практик, які застосовуються, можуть бути додаткові статуси. Наприклад, потребує повторного тестування (Pending retest), на розгляді (In Review), підтверджений (Confirmed) тощо.

Статуси дефектів

Управління дефектами

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

Будь-які виявлені дефекти слід досліджувати та відстежувати від виявлення та класифікації до їх усунення (наприклад, виправлення дефектів і успішне підтверджувальне тестування рішення, відкладення до наступного випуску, прийняття як постійне обмеження продукту тощо).

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

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

Звіт про дефект

Звіт про дефект, поданий під час динамічного тестування, зазвичай містить:

  • Ідентифікатор
  • Назва та короткий опис дефекту, про який повідомляється
  • Дата, організація, та автор
  • Ідентифікація тестового елемента (елемента конфігурації, що тестується) і середовища
  • Фаза життєвого циклу розробки, на якій спостерігався дефект
  • Опис дефекту, щоб уможливити відтворення та вирішення, включаючи журнали, дампи бази даних, знімки екрана або записи
  • Очікувані та фактичні результати
  • Масштаб або ступінь впливу (серйозності) дефекту на інтереси зацікавлених сторін
  • Пріоритет виправлення
  • Статус звіту про дефект (наприклад, відкрито, відкладено, дублікат, очікує на виправлення, очікує підтверджувального тестування, повторно відкрито, закрито)
  • Висновки, рекомендації та схвалення
  • Глобальні проблеми, наприклад інші області, на які можуть вплинути зміни внаслідок дефекту
  • Історія змін, таких як послідовність дій, виконаних членами команди проєкту щодо дефекту, щоб ізолювати, виправити та підтвердити його як виправлений
  • Посилання, включаючи тест-кейс, який виявив проблему

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

Приклад вмісту звіту про дефект можна знайти в стандарті ISO (ISO/IEC/IEEE 29119-3) (де звіти про дефекти називаються звітами про інциденти).

Трохи спрощено, але баг-репорт (або дефект-репорт) — це документ, який містить інформацію про виявлену помилку або дефект у програмному забезпеченні. Зазвичай, баг-репорт містить наступні елементи:

Заголовок (Title)Короткий, але інформативний заголовок, що вказує на суть проблеми.
Опис (Description)Детальний опис проблеми.
Кроки для відтворення (Steps to Reproduce)Послідовність кроків, які дозволяють відтворити проблему. Це допомагає розробникам швидше ідентифікувати та виправити дефект.
Очікуваний результат (Expected Result)Опис того, як мав би виглядати правильний результат без дефекту.
Фактичний результат (Actual Result)Опис того, як виглядає результат у зв’язку з виявленим дефектом.
Інформація про середовище (Environment Information)Версія програми, операційна система, конфігурація апаратного забезпечення та інші технічні деталі, які можуть впливати на виявлення дефекту.
Пріоритет (Priority)Вказує на те, наскільки терміново дефект повинен бути виправлений.  Зазвичай пріоритети класифікуються за шкалою, такою як “Низький,” “Середній,” “Високий,” “Надвисокий”.
Важливість (Severity)Вказує на вплив дефекту на роботу програми чи користувача. Це визначає, наскільки серйозною є проблема. Наприклад, дефект, який призводить до краху програми чи втрати даних, має високий рівень важливості. Класифікація важливості може включати категорії, такі як “Критична,” “Важлива,” “Звичайна”, “Мінорна”
Прикріплені файли (Attachments)Скріншоти, журнали, логи або інші файли, які демонструють проблему або допомагають в її аналізі.
Елементи звіту про дефект (спрощена, скорочена версія)

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

Приклад

Заголовок (Title)Неможливо видалити елемент зі списку контактів
Опис (Description)При спробі видалити контакт із списку, елемент не зникає, і контакт залишається у списку.
Кроки для відтворення (Steps to Reproduce)1. Зайти в меню “Контакти”. 2. Обрати конкретний контакт. 3. Спробувати видалити контакт, натиснувши кнопку “Видалити”.
Очікуваний результат (Expected Result)Контакт має бути видалений і зникнути зі списку.
Фактичний результат (Actual Result)Контакт залишається в списку.
Приклад баг ріпорта

Інструменти

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

JiraЦе один з найвідоміших інструментів для управління проєктами, що включає в себе модуль управління дефектами. Jira дозволяє визначати, відстежувати та призначати пріоритети дефектам, а також координувати роботу розробників і тестувальників.
BugzillaЦе відкрите програмне забезпечення для управління дефектами. Bugzilla надає можливості створення, відстеження і вирішення дефектів, а також генерації звітів та статистики.
RedmineЩе один інструмент управління проєктами, який також має модуль для ведення списку дефектів. Redmine дозволяє створювати та відстежувати дефекти, присвоювати їм пріоритети та важливість.
Mantis Bug TrackerЦе відкрите програмне забезпечення для управління дефектами, яке надає засоби для реєстрації, відстеження та розгляду дефектів.
TrelloЦе інструмент для керування завданнями, проте його можна використовувати для ведення списку дефектів. Він дозволяє створювати картки для дефектів, перелік дефектів та працювати в режимі спільної роботи.
Інструменти управління дефектами
Звіти про дефекти

В цьому відео поговоримо про:
00:00 Дефекти, Помилки, Збої
01:46 Причини помилок
03:38 Дефекти та першопричини
06:12 Види дефектів
09:37 Життєвий цикл дефекту
13:33 Управління дефектами
15:55 Звіт про дефект
24:04 Інструменти

Leave a Reply

Your email address will not be published. Required fields are marked *