SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Методы раннего обнаружения
          ошибок

   Андрей Уразов – 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-запрос
Сравнение




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




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




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




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




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




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




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


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




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




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

Mais conteúdo relacionado

Mais procurados

Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...SQALab
 
Непрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQubeНепрерывный анализ качества кода с помощью SonarQube
Непрерывный анализ качества кода с помощью SonarQubeVasilii Chernov
 
ковалев нестандатное нт
ковалев    нестандатное нтковалев    нестандатное нт
ковалев нестандатное нтAlexei Lupan
 
About Testers
About TestersAbout Testers
About Testersantsh
 
Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Sqadays 2010 burmistrov_fomin_20101120(2)
Sqadays 2010 burmistrov_fomin_20101120(2)Alexei Lupan
 
Тест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьТест-дизайн: проще читать или проще писать
Тест-дизайн: проще читать или проще писатьSQALab
 
Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)Александр Александров -- Надёжный тест-дизайн (мастер-класс)
Александр Александров -- Надёжный тест-дизайн (мастер-класс)sqadays8
 
Sqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmSqa days2010 polazhenko_osstm
Sqa days2010 polazhenko_osstmAlexei Lupan
 
Все твои ходы записаны
Все твои ходы записаныВсе твои ходы записаны
Все твои ходы записаныSQALab
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testingAlexei Lupan
 
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Обнаружение уязвимостей логики приложений методом статического анализа. Где п...
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Andrew Petukhov
 
Обеспечение качества: Практические советы
Обеспечение качества: Практические советыОбеспечение качества: Практические советы
Обеспечение качества: Практические советыSQALab
 
Risk-based testing management. От теории к современной практике
Risk-based testing management. От теории к современной практикеRisk-based testing management. От теории к современной практике
Risk-based testing management. От теории к современной практикеSQALab
 
Static testing
Static testingStatic testing
Static testingQA Guards
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинMail.ru Group
 
МАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестированияМАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестированияSQALab
 
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?SQALab
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требованийArtem Shapoval
 

Mais procurados (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
 
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир ДубровинДругая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
Другая сторона баг-баунти-программ: как это выглядит изнутри, Владимир Дубровин
 
МАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестированияМАСТЕР-КЛАСС. Риски тестирования
МАСТЕР-КЛАСС. Риски тестирования
 
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
 
Тестирование без требований
Тестирование без требованийТестирование без требований
Тестирование без требований
 

Destaque

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

Destaque (8)

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

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

Применение современных статических анализаторов
Применение современных статических анализаторовПрименение современных статических анализаторов
Применение современных статических анализаторовSQALab
 
Константин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныКонстантин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныTatyanazaxarova
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кодаTatyanazaxarova
 
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬ
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬ
ЛОМАТЬ И СТРОИТЬ, И СНОВА ЛОМАТЬPositive Hack Days
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программTatyanazaxarova
 
Ломать и строить. PHDays 2015
Ломать и строить. PHDays 2015Ломать и строить. PHDays 2015
Ломать и строить. PHDays 2015Alexey Kachalin
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеSQALab
 
Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Статистика по результатам тестирований на проникновение и анализа защищенност...
Статистика по результатам тестирований на проникновение и анализа защищенност...Dmitry Evteev
 
Security Metrics for PCI Compliance
Security Metrics for PCI ComplianceSecurity Metrics for PCI Compliance
Security Metrics for PCI Complianceqqlan
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileKairat Yussupov
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.Методические рекомендации по техническому анализу. О. Макарова.
Методические рекомендации по техническому анализу. О. Макарова.Expolink
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийSQALab
 
IntroductionPrinciples
IntroductionPrinciplesIntroductionPrinciples
IntroductionPrinciplesQA Guards
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Внедрение тестирования в Scrum
Внедрение тестирования в ScrumВнедрение тестирования в Scrum
Внедрение тестирования в ScrumDenis Petelin
 
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»Sergey Xek
 
Сэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспеченияСэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспеченияElena Sharovar
 

Semelhante a Андрей Уразов - Методы раннего обнаружения ошибок (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 для «Архитектура А/Б тестирования: сделай сам»
 
Сэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспеченияСэм Канер: Тестирование программного обеспечения
Сэм Канер: Тестирование программного обеспечения
 

Mais de SQALab

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

Mais de 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. Вопросы  Сколько стоят ошибки в проекте, над которым я работаю?  Что бы мы могли сделать для более эффективного обнаружения ошибок?