SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Методы раннего обнаружения
          ошибок

   Андрей Уразов – 2011
Ход доклада




   Введение: жизненные примеры
   Методы обнаружения:
       Модульное и функциональное тестирование
       Динамический и статический анализ
       Обзоры кода
   Сравнение
   Внедрение в производственный процесс
Насколько страшны ошибки




   Отзывы автомобилей, электроники с рынка из-
    за ошибок ПО (миллионы USD)
   Ариан 5 ($370 млн.)
   Терак-25 (3 человеческих жизни)
   По оценке NIST программные ошибки стоят
    экономике США $60 млрд ежегодно
Кто мог это написать?



    wake_up(&sb->s_wait_unfrozen);
    if (sb)
        deactivate_locked_super(sb);


   Ошибка обнаружена инструментом Parasoft
    C++test в коде ОС Android для смартфона
    HTC Incredible
   Подумайте, что можно найти в нашем с вами
    коде!
Модульное тестирование




    Проверка правильности отдельных
     программных единиц
    Уровень функции, метода или класса
    Автоматизированное создание тестов
Модульное тестирование: как это работает?




    Определяем:
        Входные данные
        Ожидаемый результат
        Заглушки для связанных сущностей
    Как выглядят ошибки:
        Функция вернула 0, ожидаемый результат – 15
        Произошло деление на 0 в строке 15
Функциональное тестирование




    Проверка правильности работы приложения в
     целом
    Тестируется взаимодействие компонентов
    Возможна автоматизация
Функциональное тестирование: как это работает




    Определяем входные данные,
     последовательность действий
    Исполняем
    Отслеживаем результат и сверяем с ожидаемым
    Как выглядят ошибки:
        Должна отобразиться картинка А, но отобразилась
         картинка B
        Произведена недопустимая операция в файле X на
         строке Y
Динамический анализ




    Отслеживание свойств программы во время
     исполнения
    Определяемые ошибки:
        Критические (деление на ноль и др.)
        Проблемы безопасности
        Проблемы с памятью
        Уязвимости безопасности
        Проблемы многопоточности
Динамический анализ: как это работает?




    Инструментируем приложение
    Исполняем его по определенным сценариям
    Как выглядят ошибки:
        Утечка памяти в файле X на строке L,
         соответствующая выделению памяти в файле X1 на
         строке L1
Статический анализ




    Автоматизированный анализ исходного кода
     программы без его исполнения
    Виды анализа:
        Синтаксический (простые ошибки, стиль написания)
        Потоковый (ошибки динамической природы)
        Метрики
Статический анализ: как это работает?




Parasoft Jtest
находит ошибку
в коде Apache-
Ant-1.7.0beta1
(ClassNotFound-
Exception не
обрабатывается
должным
образом и
приводит к NPE)
Обзоры кода




    Просмотр кода участниками проекта
    Как выглядят ошибки:
        Вася, на этой строке кода у тебя может возникнуть
         целочисленное переполнение
        А здесь, в критически важном месте, у тебя
         неэффективный SQL-запрос
Сравнение




    Классы обнаруживаемых ошибок
    Локализация ошибок
    Применимость на разных стадиях проекта
    Требуемые временные вложения
    Точность:
        Ложно положительные
        Ложно отрицательные
Особенности: модульное тестирование




    Обнаружение: несоответствие реального
     поведения ожидаемому
    Локализация: внутримодульная
    Применимость: от начала проекта
    Временные вложения: высокие
    Ложно положительные: редко
    Ложно отрицательные: часто (зависит от
     покрытия)
Особенности: функциональное тестирование




    Обнаружение: несоответствие реального
     поведения ожидаемому
    Локализация: внутри- и межмодульная
    Применимость: при наличии прототипа
     приложения
    Временные вложения: высокие
    Ложно положительные: крайне редко
    Ложно отрицательные: часто
Особенности: динамический анализ




    Обнаружение: уязвимости, ошибки времени
     исполнения
    Локализация: внутри- и межмодульная
    Применимость: при наличии прототипа
     приложения
    Временные вложения: от низких до высоких
    Ложно положительные: крайне редко
    Ложно отрицательные: часто
Особенности: статический анализ




    Обнаружение: уязвимости, ошибки времени
     исполнения, логические ошибки,
     архитектурные просчеты и др.
    Локализация: внутри- и межмодульная
    Применимость: от начала проекта
    Временные вложения: низкие
    Ложно положительные: зависит от инструмента
    Ложно отрицательные: зависит от инструмента
Особенности: обзоры кода




    Обнаружение: любые виды ошибок
    Локализация: внутри- и межмодульная
    Применимость: от начала проекта
    Временные вложения: высокие
    Ложно положительные: редко
    Ложно отрицательные: часто
Что сделать для эффективного обнаружения




    Сделать обнаружение ошибок НЕПРЕРЫВНОЙ
     частью процесса
    АВТОМАТИЗИРОВАТЬ обнаружение настолько,
     насколько это возможно
Построение процесса обеспечения качества


    Использование системы контроля кода
    Определение политики качества, используемых
     практик обнаружения ошибок
    Автоматизированное тестирование каждую ночь
    Каждое утро участники проекта получают
     набор обнаруженных ошибок
    Список видов автоматически определяемых
     ошибок расширяется по необходимости
Благодарность




         Спасибо за внимание :-)
Вопросы




   Сколько стоят ошибки в проекте, над которым я
    работаю?
   Что бы мы могли сделать для более
    эффективного обнаружения ошибок?

Weitere ähnliche Inhalte

Was ist angesagt?

ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
Alexei Lupan
 
About Testers
About TestersAbout Testers
About Testers
antsh
 
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
sqadays8
 
Sqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmSqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstm
Alexei Lupan
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
Alexei Lupan
 
Static testing
Static testingStatic testing
Static testing
QA Guards
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требований
Artem Shapoval
 

Was ist angesagt? (20)

Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
 
Непрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQubeНепрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQube
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нт
 
About Testers
About TestersAbout Testers
About Testers
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)
 
Sqa8 urazov
Sqa8 urazovSqa8 urazov
Sqa8 urazov
 
Тест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьТест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писать
 
План тестирования
План тестированияПлан тестирования
План тестирования
 
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
 
Sqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmSqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstm
 
Все твои ходы записаны
Все твои ходы записаныВсе твои ходы записаны
Все твои ходы записаны
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
 
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советы
 
Risk-based testing management. От теории к современной практике
Risk-based testing management. От теории к современной практикеRisk-based testing management. От теории к современной практике
Risk-based testing management. От теории к современной практике
 
Static testing
Static testingStatic testing
Static testing
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
МАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестированияМАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестирования
 
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требований
 

Andere mochten auch

Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
SQALab
 
Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникации
SQALab
 

Andere mochten auch (8)

Александр Калугин - Простота тестирования маленького системного ПО
Александр Калугин - Простота тестирования маленького системного ПОАлександр Калугин - Простота тестирования маленького системного ПО
Александр Калугин - Простота тестирования маленького системного ПО
 
Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
Александр Орлов, Вячеслав Панкратов - Работа с неконструктивными моделями пов...
 
Очир Абушинов - Применение fuzz-тестирования
Очир Абушинов - Применение fuzz-тестированияОчир Абушинов - Применение fuzz-тестирования
Очир Абушинов - Применение fuzz-тестирования
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
Организация тестового набора при автоматизированном функциональном тестировании
Организация тестового набора при автоматизированном функциональном тестированииОрганизация тестового набора при автоматизированном функциональном тестировании
Организация тестового набора при автоматизированном функциональном тестировании
 
Надежный тест-дизайн
Надежный тест-дизайнНадежный тест-дизайн
Надежный тест-дизайн
 
Грамотная работа с дефект-трекером -- путь к успеху!
Грамотная работа с дефект-трекером -- путь к успеху!Грамотная работа с дефект-трекером -- путь к успеху!
Грамотная работа с дефект-трекером -- путь к успеху!
 
Шаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникацииШаблоны проектирования письменной коммуникации
Шаблоны проектирования письменной коммуникации
 

Ähnlich wie Андрей Уразов - Методы раннего обнаружения ошибок

Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...
Dmitry Evteev
 
Security Metrics for PCI Compliance
Security Metrics for PCI ComplianceSecurity Metrics for PCI Compliance
Security Metrics for PCI Compliance
qqlan
 
Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.
Expolink
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
QA Guards
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
Denis Petelin
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
Sergey Xek
 
Сэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспеченияСэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспечения
Elena Sharovar
 

Ähnlich wie Андрей Уразов - Методы раннего обнаружения ошибок (20)

Применение современных статических анализаторов
Применение современных статических анализаторовПрименение современных статических анализаторов
Применение современных статических анализаторов
 
Константин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныКонстантин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороны
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬ
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬ
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬ
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программ
 
Ломать и строить. PHDays 2015
Ломать и строить. PHDays 2015Ломать и строить. PHDays 2015
Ломать и строить. PHDays 2015
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...
 
Security Metrics for PCI Compliance
Security Metrics for PCI ComplianceSecurity Metrics for PCI Compliance
Security Metrics for PCI Compliance
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciples
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в Scrum
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
 
Сэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспеченияСэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспечения
 

Mehr von SQALab

Mehr von SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Андрей Уразов - Методы раннего обнаружения ошибок

  • 1. Методы раннего обнаружения ошибок Андрей Уразов – 2011
  • 2. Ход доклада  Введение: жизненные примеры  Методы обнаружения:  Модульное и функциональное тестирование  Динамический и статический анализ  Обзоры кода  Сравнение  Внедрение в производственный процесс
  • 3. Насколько страшны ошибки  Отзывы автомобилей, электроники с рынка из- за ошибок ПО (миллионы USD)  Ариан 5 ($370 млн.)  Терак-25 (3 человеческих жизни)  По оценке NIST программные ошибки стоят экономике США $60 млрд ежегодно
  • 4. Кто мог это написать? wake_up(&sb->s_wait_unfrozen); if (sb) deactivate_locked_super(sb);  Ошибка обнаружена инструментом Parasoft C++test в коде ОС Android для смартфона HTC Incredible  Подумайте, что можно найти в нашем с вами коде!
  • 5. Модульное тестирование  Проверка правильности отдельных программных единиц  Уровень функции, метода или класса  Автоматизированное создание тестов
  • 6. Модульное тестирование: как это работает?  Определяем:  Входные данные  Ожидаемый результат  Заглушки для связанных сущностей  Как выглядят ошибки:  Функция вернула 0, ожидаемый результат – 15  Произошло деление на 0 в строке 15
  • 7. Функциональное тестирование  Проверка правильности работы приложения в целом  Тестируется взаимодействие компонентов  Возможна автоматизация
  • 8. Функциональное тестирование: как это работает  Определяем входные данные, последовательность действий  Исполняем  Отслеживаем результат и сверяем с ожидаемым  Как выглядят ошибки:  Должна отобразиться картинка А, но отобразилась картинка B  Произведена недопустимая операция в файле X на строке Y
  • 9. Динамический анализ  Отслеживание свойств программы во время исполнения  Определяемые ошибки:  Критические (деление на ноль и др.)  Проблемы безопасности  Проблемы с памятью  Уязвимости безопасности  Проблемы многопоточности
  • 10. Динамический анализ: как это работает?  Инструментируем приложение  Исполняем его по определенным сценариям  Как выглядят ошибки:  Утечка памяти в файле X на строке L, соответствующая выделению памяти в файле X1 на строке L1
  • 11. Статический анализ  Автоматизированный анализ исходного кода программы без его исполнения  Виды анализа:  Синтаксический (простые ошибки, стиль написания)  Потоковый (ошибки динамической природы)  Метрики
  • 12. Статический анализ: как это работает? Parasoft Jtest находит ошибку в коде Apache- Ant-1.7.0beta1 (ClassNotFound- Exception не обрабатывается должным образом и приводит к NPE)
  • 13. Обзоры кода  Просмотр кода участниками проекта  Как выглядят ошибки:  Вася, на этой строке кода у тебя может возникнуть целочисленное переполнение  А здесь, в критически важном месте, у тебя неэффективный SQL-запрос
  • 14. Сравнение  Классы обнаруживаемых ошибок  Локализация ошибок  Применимость на разных стадиях проекта  Требуемые временные вложения  Точность:  Ложно положительные  Ложно отрицательные
  • 15. Особенности: модульное тестирование  Обнаружение: несоответствие реального поведения ожидаемому  Локализация: внутримодульная  Применимость: от начала проекта  Временные вложения: высокие  Ложно положительные: редко  Ложно отрицательные: часто (зависит от покрытия)
  • 16. Особенности: функциональное тестирование  Обнаружение: несоответствие реального поведения ожидаемому  Локализация: внутри- и межмодульная  Применимость: при наличии прототипа приложения  Временные вложения: высокие  Ложно положительные: крайне редко  Ложно отрицательные: часто
  • 17. Особенности: динамический анализ  Обнаружение: уязвимости, ошибки времени исполнения  Локализация: внутри- и межмодульная  Применимость: при наличии прототипа приложения  Временные вложения: от низких до высоких  Ложно положительные: крайне редко  Ложно отрицательные: часто
  • 18. Особенности: статический анализ  Обнаружение: уязвимости, ошибки времени исполнения, логические ошибки, архитектурные просчеты и др.  Локализация: внутри- и межмодульная  Применимость: от начала проекта  Временные вложения: низкие  Ложно положительные: зависит от инструмента  Ложно отрицательные: зависит от инструмента
  • 19. Особенности: обзоры кода  Обнаружение: любые виды ошибок  Локализация: внутри- и межмодульная  Применимость: от начала проекта  Временные вложения: высокие  Ложно положительные: редко  Ложно отрицательные: часто
  • 20. Что сделать для эффективного обнаружения  Сделать обнаружение ошибок НЕПРЕРЫВНОЙ частью процесса  АВТОМАТИЗИРОВАТЬ обнаружение настолько, насколько это возможно
  • 21. Построение процесса обеспечения качества  Использование системы контроля кода  Определение политики качества, используемых практик обнаружения ошибок  Автоматизированное тестирование каждую ночь  Каждое утро участники проекта получают набор обнаруженных ошибок  Список видов автоматически определяемых ошибок расширяется по необходимости
  • 22. Благодарность Спасибо за внимание :-)
  • 23. Вопросы  Сколько стоят ошибки в проекте, над которым я работаю?  Что бы мы могли сделать для более эффективного обнаружения ошибок?