SlideShare a Scribd company logo
1 of 39
Download to read offline
Debugging
27/12/2011
Softjourn Inc.




 Debugging

       Anatoliy Okhotnikov
          Softjourn Inc.
Debugging
Про що буде йти мова
 Чому це важливо?
 Життєвий цикл. Наука відладки. Помилки
 Приклад відладки. Процес
 Розуміння помилок. Поведінка. Серйозність.
  Пріорітет. Додаткові атрибути
 Ізоляція. Аналіз. Рішення
 Тестування. Неоптимальний процес
 Попередження
 Питання та обговорення
Чому це важливо?
 Бенджамін Франклін: “У цьому житті немає
  нічого визначеного крім смерті та податків”
 ...а тепер і помилок у програмному
  забезпеченні
 50% бюджетів на обробку даних витрачають
  на виправлення програмних помилок
 20% коштів виділених на супровід також
  витрачають на виправлення дефектів
  внесених при розробці
 Проблема “срібної кулі”
Простий життевий цикл

      Аналіз

   Специфікації

     Дизайн

      Кодінг




                  Відладка
   Тестування

    Установка

    Підтримка
Наука відладки
   Відладка це мистецтво, поки що не
    наука
     Немає прописаного процесу
     Інтуїтивна
     Майстерність вдосконалюються
      досвідом
     Не можна впевнено спрогнозувати!

   Це спроба привести відладку
    ближче до науки
Aka “Адмірал”
Помилки (Bugs)
   Що таке помилка (bug)?
       Дефект що змушує систему
        поводитись не ояікуваним чином
 Чому помилка називається bug?
 Відладка (debugging)
       Процес приведення системи до
        поводження очікуваним чином
   Процес відладки:
       З чого почати?
Приклад відладки
                           Чекаємо
   Інтернет               5 секунд?                 Сервер
                                                   Звітності
                           Сервер              (20 потоків 2 сек)
                        балансування
                        навантаження
                                                    Сервер
     Сервер                                        Звітності
    Звітності                                  (20 потоків 2 сек)
(20 потоків 2 сек)
                                     Сервер
                Сервер              Звітності
               Звітності        (20 потоків 2 сек)
           (20 потоків 2 сек)
Приклад відладки
 Розгляд алгоритму балансування
 Розгляд влгоритму “захисту”
 Виявлення закономірності
  поведінки
 Журнал мережі/запитів
 Замір часу виконання SELECT...
 Інструменти моніторингу
Загальні часті помилки аналізу
    Компонентне мислення
    Орієнтування на вторинні ознаки
    Ігнорування підказок
    Незрозумілі повідомлення про
     помилку
Ariane 5
Історичні приклади
 Ariane 5: 64bit => 16 bit ($7bn, 10y)
 Submarine & NATO virus
 Therac-25 (Therac-6, Therac-20)
  DEC PDP-11
 ...
 Mars Climate Orbiter, Mars Polar
  Lander ($327,6m) – SM-FORCE f/s VS
  m/s
 AT&T 1990 (enhancement) - 9h &
  1998 (CISCO update) - 26h
Процес відладки

  Розуміння

   Ізоляція

    Аналіз

   Рішення

  Тестування
Розуміння помилок
   Зрозуміти
     Очікувана поведінка
     Поточна поведінка
     Атрибути помилки



   Атрибути помилки
     Поведінка
     Серйозність
     Пріорітет
Поведінка (Type)
Розуміння: поведінка
   Поведінка помилки
     Часто називається ‘Тип’
     Приклади
         Падіння
         Втрата даних
         Відмова обслуговування
         Невідповідність функціоналу
         Косметична (Орфографія, вирівнювання, і
          т.д.)
       Абсолютний атрибут
Серйозність (Severity)
Розуміння: серйозність
   Серйозність
     Ефект сприйняття користувачем
     Відносний атрибут
         Відноситься   тільки до модуля
     Може існувати пряма кореляція між
      поведінкою та серйозністю
     Також корелює з пріорітетом
Пріорітет (Priority)
Розуміння: пріорітет
   Пріорітет
     Атрибут управління проектом
     Відносний атрибут
         Відноситься тільки до модуля
         Відноситься тільки до поточнох термінів
          (milestone)
     Буде пряма кореляція між серйозністю
      та пріорітетом
     Одна і та сама помилка може мати
      різний пріорітет в залежності від фази
      проекту
Розуміння: додаткові атрибути
  Додаткові    атрибути
   Здатність   відтворити
     Впливає   на відладку та QA
   Здатність   розв'язати
     Впливає   на відладку
Ізоляція
Що таке ізоляція?
 Процес зменьшення області помилки
 Область помилки: простір у якому стається
  помилка
 Підтверджена опорна точка - Affirmative
  Reference Point (ARP)
       Опорна точка у якій ви впевнені!
          Все працювало добре до вчорашнього вечора!
          Не падає поки я ввожу значення < 1000

     Припущення можуть будуватись на її основі
     Помилка ізолюється на основі однієї або більше
      ARPів
   Ітеративне перевизначення області помилки
Ізоляція: обов'язки
   Хто має цим займатись?
     QA
     Розробник/Відадник

   Обов'язки QA
     Зрозумілий опис помилки
     Одна або більше ARPів
     Цим вужча область помилки, тим
      краще!
   Обов'язки розробника
       Достатньо звузити область помилки
Аналіз
   Пошук
     Синтаксичних помилок
     Семантичних помилок
 Перевірка списку помилок
  що часто зустрічаються
 Зверніть увагу
     Тут можуть бути тільки
      симптоми, проблема може
      бути деінде
     Не робіть висновків
      занадто рано
Рішення (Solution)
Рішення
 Вірішити поточну проблему
 Передивитись код на предмет таких
  самих або схожих проблем у інших
  місцях та виправити їх
 Перевірити інші проблеми у області
  помилки
 Оновити список помилок що часто
  зустрічаються
Тестування (Testing)
Тестування
 Протестуйте виправлення
 Протестуйте функціонал який ви
  МОГЛИ зламати виправленням
 Протестуйте функціонал який ви НЕ
  МОГЛИ зламати виправленням
 Впевнеться що ця проблема не
  повернеться до вас знову
 QA: Протестуйте усі можливі
  випадки виникнення цієї помилки
Hip Shooting?
Неоптимальний процес
 Постріли   зi стегна

             Розуміння

             Ізоляція

             Вирішення

         Тестування
Shooting in the dark?
Неоптимальний процес
 Постріли   у темряві

             Розуміння


             Вирішення


         Тестування
Попередження (Prevention)
Попередження
 Попередження краще лікування
 Застосування процесу відладки у
  розробці
     Звуження області функціоналу (фіч)
     Використання ARP’ів при розробці фіч
     Звірка фічі зі списком помилок що часто
      виникають
     Тестування нових фіч, сусідніх фіч
      (регресії) перед оголошенням розробки
      завершеною
   Ви збережете більше часу та енергії!
Посилання
• http://www.slideshare.net/ksusanth/the-
  science-of-debugging
• http://books.google.com.ua/books/about/The_
  Science_of_Debugging.html?
  id=9E9FAAAACAAJ




      Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Питання та обговорення
“Анатолій Охотніков”
<aokhotnikov@softjourn.com>




   Copyright © 2000-2011 Softjourn, Inc. All rights reserved

More Related Content

Viewers also liked (12)

Jenkins CI (ukr)
Jenkins CI (ukr)Jenkins CI (ukr)
Jenkins CI (ukr)
 
ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)ITEvent: Continuous Integration (ukr)
ITEvent: Continuous Integration (ukr)
 
Php unit (eng)
Php unit (eng)Php unit (eng)
Php unit (eng)
 
Xdebug (ukr)
Xdebug (ukr)Xdebug (ukr)
Xdebug (ukr)
 
Continuous integration (eng)
Continuous integration (eng)Continuous integration (eng)
Continuous integration (eng)
 
ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)ITEvent: Kanban Intro (ukr)
ITEvent: Kanban Intro (ukr)
 
Db design (ukr)
Db design (ukr)Db design (ukr)
Db design (ukr)
 
Linux introduction (eng)
Linux introduction (eng)Linux introduction (eng)
Linux introduction (eng)
 
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
 
Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)Agile Feedback Loops (ukr)
Agile Feedback Loops (ukr)
 
Ldap introduction (eng)
Ldap introduction (eng)Ldap introduction (eng)
Ldap introduction (eng)
 
Agile (IF PM Group) v2
Agile (IF PM Group) v2Agile (IF PM Group) v2
Agile (IF PM Group) v2
 

Similar to Debug (ukr)

Структура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptxСтруктура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptxssuser40c4fa
 
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...GoQA
 
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQAnton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQDakiry
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O..."Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...Fwdays
 
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...Lviv Startup Club
 
Methods Of Reliability Analysis
Methods Of Reliability AnalysisMethods Of Reliability Analysis
Methods Of Reliability AnalysisSvitlana volkova
 
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...GoQA
 
Bichkovskiy o
Bichkovskiy oBichkovskiy o
Bichkovskiy ogarasym
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...Fwdays
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Elantix
 
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...QAFest
 
опорні схеми
опорні схемиопорні схеми
опорні схемиIrina Tabanets
 
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»GoQA
 
"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр ЧубарукHackIT Ukraine
 
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»GoQA
 

Similar to Debug (ukr) (20)

Структура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptxСтруктура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptx
 
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...
АНАСТАСІЯ РУСОВА «Побудова якості в команді без тестувальників – міф чи реаль...
 
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQAnton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
C# OOP exception
C# OOP exceptionC# OOP exception
C# OOP exception
 
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O..."Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
"Crisis to Calm: Incident Management’s Role in Business Stability", Oleksii O...
 
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...
Alexander Gritsenko: Як нетехнічному менеджеру команди вибрати правильне ріше...
 
Methods Of Reliability Analysis
Methods Of Reliability AnalysisMethods Of Reliability Analysis
Methods Of Reliability Analysis
 
Automated testing
Automated testingAutomated testing
Automated testing
 
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
 
Bichkovskiy o
Bichkovskiy oBichkovskiy o
Bichkovskiy o
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
 
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
 
опорні схеми
опорні схемиопорні схеми
опорні схеми
 
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
СЕРГІЙ РУСІНЧУК «Розкриття майстерності QA команд через KPI»
 
Testing stage
Testing stageTesting stage
Testing stage
 
C# oop exception
C# oop exceptionC# oop exception
C# oop exception
 
"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук"Наступну атаку можна попередити", Олександр Чубарук
"Наступну атаку можна попередити", Олександр Чубарук
 
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
 

Recently uploaded

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil TopchiiFwdays
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...Fwdays
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?Oleksandr Romanov
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym KindritskyiFwdays
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...Fwdays
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro SpodaretsFwdays
 

Recently uploaded (6)

"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
"GenAI Apps: Our Journey from Ideas to Production Excellence",Danil Topchii
 
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y..."How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
"How Preply reduced ML model development time from 1 month to 1 day",Yevhen Y...
 
Тестування Blockchain - Що там можна тестувати?
Тестування  Blockchain - Що там можна тестувати?Тестування  Blockchain - Що там можна тестувати?
Тестування Blockchain - Що там можна тестувати?
 
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi"Distributed graphs and microservices in Prom.ua",  Maksym Kindritskyi
"Distributed graphs and microservices in Prom.ua", Maksym Kindritskyi
 
"Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl..."Rethinking the existing data loading and processing process as an ETL exampl...
"Rethinking the existing data loading and processing process as an ETL exampl...
 
"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets"What is a RAG system and how to build it",Dmytro Spodarets
"What is a RAG system and how to build it",Dmytro Spodarets
 

Debug (ukr)

  • 2. Softjourn Inc. Debugging Anatoliy Okhotnikov Softjourn Inc.
  • 4. Про що буде йти мова  Чому це важливо?  Життєвий цикл. Наука відладки. Помилки  Приклад відладки. Процес  Розуміння помилок. Поведінка. Серйозність. Пріорітет. Додаткові атрибути  Ізоляція. Аналіз. Рішення  Тестування. Неоптимальний процес  Попередження  Питання та обговорення
  • 5. Чому це важливо?  Бенджамін Франклін: “У цьому житті немає нічого визначеного крім смерті та податків”  ...а тепер і помилок у програмному забезпеченні  50% бюджетів на обробку даних витрачають на виправлення програмних помилок  20% коштів виділених на супровід також витрачають на виправлення дефектів внесених при розробці  Проблема “срібної кулі”
  • 6. Простий життевий цикл Аналіз Специфікації Дизайн Кодінг Відладка Тестування Установка Підтримка
  • 7. Наука відладки  Відладка це мистецтво, поки що не наука  Немає прописаного процесу  Інтуїтивна  Майстерність вдосконалюються досвідом  Не можна впевнено спрогнозувати!  Це спроба привести відладку ближче до науки
  • 9. Помилки (Bugs)  Що таке помилка (bug)?  Дефект що змушує систему поводитись не ояікуваним чином  Чому помилка називається bug?  Відладка (debugging)  Процес приведення системи до поводження очікуваним чином  Процес відладки:  З чого почати?
  • 10. Приклад відладки Чекаємо Інтернет 5 секунд? Сервер Звітності Сервер (20 потоків 2 сек) балансування навантаження Сервер Сервер Звітності Звітності (20 потоків 2 сек) (20 потоків 2 сек) Сервер Сервер Звітності Звітності (20 потоків 2 сек) (20 потоків 2 сек)
  • 11. Приклад відладки  Розгляд алгоритму балансування  Розгляд влгоритму “захисту”  Виявлення закономірності поведінки  Журнал мережі/запитів  Замір часу виконання SELECT...  Інструменти моніторингу
  • 12. Загальні часті помилки аналізу  Компонентне мислення  Орієнтування на вторинні ознаки  Ігнорування підказок  Незрозумілі повідомлення про помилку
  • 14. Історичні приклади  Ariane 5: 64bit => 16 bit ($7bn, 10y)  Submarine & NATO virus  Therac-25 (Therac-6, Therac-20) DEC PDP-11  ...  Mars Climate Orbiter, Mars Polar Lander ($327,6m) – SM-FORCE f/s VS m/s  AT&T 1990 (enhancement) - 9h & 1998 (CISCO update) - 26h
  • 15. Процес відладки Розуміння Ізоляція Аналіз Рішення Тестування
  • 16. Розуміння помилок  Зрозуміти  Очікувана поведінка  Поточна поведінка  Атрибути помилки  Атрибути помилки  Поведінка  Серйозність  Пріорітет
  • 18. Розуміння: поведінка  Поведінка помилки  Часто називається ‘Тип’  Приклади  Падіння  Втрата даних  Відмова обслуговування  Невідповідність функціоналу  Косметична (Орфографія, вирівнювання, і т.д.)  Абсолютний атрибут
  • 20. Розуміння: серйозність  Серйозність  Ефект сприйняття користувачем  Відносний атрибут  Відноситься тільки до модуля  Може існувати пряма кореляція між поведінкою та серйозністю  Також корелює з пріорітетом
  • 22. Розуміння: пріорітет  Пріорітет  Атрибут управління проектом  Відносний атрибут  Відноситься тільки до модуля  Відноситься тільки до поточнох термінів (milestone)  Буде пряма кореляція між серйозністю та пріорітетом  Одна і та сама помилка може мати різний пріорітет в залежності від фази проекту
  • 23. Розуміння: додаткові атрибути Додаткові атрибути Здатність відтворити Впливає на відладку та QA Здатність розв'язати Впливає на відладку
  • 25. Що таке ізоляція?  Процес зменьшення області помилки  Область помилки: простір у якому стається помилка  Підтверджена опорна точка - Affirmative Reference Point (ARP)  Опорна точка у якій ви впевнені!  Все працювало добре до вчорашнього вечора!  Не падає поки я ввожу значення < 1000  Припущення можуть будуватись на її основі  Помилка ізолюється на основі однієї або більше ARPів  Ітеративне перевизначення області помилки
  • 26. Ізоляція: обов'язки  Хто має цим займатись?  QA  Розробник/Відадник  Обов'язки QA  Зрозумілий опис помилки  Одна або більше ARPів  Цим вужча область помилки, тим краще!  Обов'язки розробника  Достатньо звузити область помилки
  • 27. Аналіз  Пошук  Синтаксичних помилок  Семантичних помилок  Перевірка списку помилок що часто зустрічаються  Зверніть увагу  Тут можуть бути тільки симптоми, проблема може бути деінде  Не робіть висновків занадто рано
  • 29. Рішення  Вірішити поточну проблему  Передивитись код на предмет таких самих або схожих проблем у інших місцях та виправити їх  Перевірити інші проблеми у області помилки  Оновити список помилок що часто зустрічаються
  • 31. Тестування  Протестуйте виправлення  Протестуйте функціонал який ви МОГЛИ зламати виправленням  Протестуйте функціонал який ви НЕ МОГЛИ зламати виправленням  Впевнеться що ця проблема не повернеться до вас знову  QA: Протестуйте усі можливі випадки виникнення цієї помилки
  • 33. Неоптимальний процес  Постріли зi стегна Розуміння Ізоляція Вирішення Тестування
  • 35. Неоптимальний процес  Постріли у темряві Розуміння Вирішення Тестування
  • 37. Попередження  Попередження краще лікування  Застосування процесу відладки у розробці  Звуження області функціоналу (фіч)  Використання ARP’ів при розробці фіч  Звірка фічі зі списком помилок що часто виникають  Тестування нових фіч, сусідніх фіч (регресії) перед оголошенням розробки завершеною  Ви збережете більше часу та енергії!
  • 38. Посилання • http://www.slideshare.net/ksusanth/the- science-of-debugging • http://books.google.com.ua/books/about/The_ Science_of_Debugging.html? id=9E9FAAAACAAJ Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 39. Питання та обговорення “Анатолій Охотніков” <aokhotnikov@softjourn.com> Copyright © 2000-2011 Softjourn, Inc. All rights reserved