Чому це важливо?
Життєвий цикл. Наука відладки. Помилки
Приклад відладки. Процес
Розуміння помилок. Поведінка. Серйозність.
Пріорітет. Додаткові атрибути
Ізоляція. Аналіз. Рішення
Тестування. Неоптимальний процес
Попередження
4. Про що буде йти мова
Чому це важливо?
Життєвий цикл. Наука відладки. Помилки
Приклад відладки. Процес
Розуміння помилок. Поведінка. Серйозність.
Пріорітет. Додаткові атрибути
Ізоляція. Аналіз. Рішення
Тестування. Неоптимальний процес
Попередження
Питання та обговорення
5. Чому це важливо?
Бенджамін Франклін: “У цьому житті немає
нічого визначеного крім смерті та податків”
...а тепер і помилок у програмному
забезпеченні
50% бюджетів на обробку даних витрачають
на виправлення програмних помилок
20% коштів виділених на супровід також
витрачають на виправлення дефектів
внесених при розробці
Проблема “срібної кулі”
6. Простий життевий цикл
Аналіз
Специфікації
Дизайн
Кодінг
Відладка
Тестування
Установка
Підтримка
7. Наука відладки
Відладка це мистецтво, поки що не
наука
Немає прописаного процесу
Інтуїтивна
Майстерність вдосконалюються
досвідом
Не можна впевнено спрогнозувати!
Це спроба привести відладку
ближче до науки
9. Помилки (Bugs)
Що таке помилка (bug)?
Дефект що змушує систему
поводитись не ояікуваним чином
Чому помилка називається bug?
Відладка (debugging)
Процес приведення системи до
поводження очікуваним чином
Процес відладки:
З чого почати?
11. Приклад відладки
Розгляд алгоритму балансування
Розгляд влгоритму “захисту”
Виявлення закономірності
поведінки
Журнал мережі/запитів
Замір часу виконання SELECT...
Інструменти моніторингу
12. Загальні часті помилки аналізу
Компонентне мислення
Орієнтування на вторинні ознаки
Ігнорування підказок
Незрозумілі повідомлення про
помилку
20. Розуміння: серйозність
Серйозність
Ефект сприйняття користувачем
Відносний атрибут
Відноситься тільки до модуля
Може існувати пряма кореляція між
поведінкою та серйозністю
Також корелює з пріорітетом
22. Розуміння: пріорітет
Пріорітет
Атрибут управління проектом
Відносний атрибут
Відноситься тільки до модуля
Відноситься тільки до поточнох термінів
(milestone)
Буде пряма кореляція між серйозністю
та пріорітетом
Одна і та сама помилка може мати
різний пріорітет в залежності від фази
проекту
23. Розуміння: додаткові атрибути
Додаткові атрибути
Здатність відтворити
Впливає на відладку та QA
Здатність розв'язати
Впливає на відладку
25. Що таке ізоляція?
Процес зменьшення області помилки
Область помилки: простір у якому стається
помилка
Підтверджена опорна точка - Affirmative
Reference Point (ARP)
Опорна точка у якій ви впевнені!
Все працювало добре до вчорашнього вечора!
Не падає поки я ввожу значення < 1000
Припущення можуть будуватись на її основі
Помилка ізолюється на основі однієї або більше
ARPів
Ітеративне перевизначення області помилки
26. Ізоляція: обов'язки
Хто має цим займатись?
QA
Розробник/Відадник
Обов'язки QA
Зрозумілий опис помилки
Одна або більше ARPів
Цим вужча область помилки, тим
краще!
Обов'язки розробника
Достатньо звузити область помилки
27. Аналіз
Пошук
Синтаксичних помилок
Семантичних помилок
Перевірка списку помилок
що часто зустрічаються
Зверніть увагу
Тут можуть бути тільки
симптоми, проблема може
бути деінде
Не робіть висновків
занадто рано
29. Рішення
Вірішити поточну проблему
Передивитись код на предмет таких
самих або схожих проблем у інших
місцях та виправити їх
Перевірити інші проблеми у області
помилки
Оновити список помилок що часто
зустрічаються
31. Тестування
Протестуйте виправлення
Протестуйте функціонал який ви
МОГЛИ зламати виправленням
Протестуйте функціонал який ви НЕ
МОГЛИ зламати виправленням
Впевнеться що ця проблема не
повернеться до вас знову
QA: Протестуйте усі можливі
випадки виникнення цієї помилки
37. Попередження
Попередження краще лікування
Застосування процесу відладки у
розробці
Звуження області функціоналу (фіч)
Використання ARP’ів при розробці фіч
Звірка фічі зі списком помилок що часто
виникають
Тестування нових фіч, сусідніх фіч
(регресії) перед оголошенням розробки
завершеною
Ви збережете більше часу та енергії!