SlideShare a Scribd company logo
1 of 19
Download to read offline
Применение современныхПрименение современных
статических анализаторовстатических анализаторов
Андрей Уразов – 2010Андрей Уразов – 2010
Ход доклада
 Что такое статический анализ
 Виды обнаруживаемых изъянов
 Достоинства и недостатки
 Внедрение в производственный цикл ПО
 Как выбрать решение для статического анализа
Статический анализ кода
 Анализ кода без его реального исполнения
 Виды статического анализа:
 На основе деревьев разбора
 Анализ потока данных и управления
Кто мог это написать?
 Это код из Eclipse 3.0.0M8.
 Что же можно обнаружить в проектах, которые
мы тестируем?!
if (in == null)
try {
in.close();
Из кода JDK
 Этот метод с бесконечной рекурсией написан
самим Джошуа Блохом
 Если гениальные люди делают такие ошибки,
то что можно найти коде, написанном
«обычными» разработчиками?
public String foundType() {
return this.foundType();
}
Зачем нужен статический анализ
 Обнаружение ошибок
 Выявление архитектурных проблем кода,
отступлений от лучших практик
 Соответствие стандартам
 Обучение разработчиков
Зачем нужен статический анализ
 Повышение качества ПО (увеличение доходов)
 Увеличение производительности труда
(сокращение издержек)
Возможности
 Метрики
 Уязвимости безопасности
 Проблемы многопоточности
 Утечки ресурсов
 Критические ошибки:
 Выходы за границы массива
 Ошибки работы с памятью
 Исключения
Примеры: обнаружение NPE
Parasoft Jtest
находит ошибку
в коде Apache-
Ant-1.7.0beta1
(ClassNotFound-
Exception не
обрабатывается
должным
образом и
приводит к NPE)
Примеры: избавляемся от утечек
Parasoft Jtest находит утечку в коде Ant-1.7.0beta1
(утечка происходит, когда dis.read() бросает исключение)
Примеры: оптимизируем код
Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0
Достоинства
 Широкий класс ошибок
 Обнаружение ошибок не требует участия
человека
 Ошибки находятся сразу после появления
 Всегда отображается причина проблемы в коде
Недостатки
 Неполнота анализа
 Ложные срабатывания
Внедрение в процесс разработки
 Использование системы управления исходным
кодом
 Определение политики качества
 Автоматизированное тестирование каждую ночь
 Каждое утро разработчики получают в среде
разработки набор обнаруженных ошибок
 Набор автоматически определяемых ошибок
расширяется по необходимости
В отделе контроля качества
 Отделение истинных ошибок от ложных
срабатываний
 Направление усилий по тестированию на
наиболее уязвимые части кода
Что учитывать при выборе решения
 Стоимость владения, окупаемость
 Виды обнаруживаемых ошибок
 Точность обнаружения
 Удобство использования
Удобство использования
 Интеграция в среду разработки
 Гибкая настройка
 Распределение задач
 Подавление ложных срабатываний
 Отслеживание уровня качества
Итоги: использование СА
 Увеличение выявляемости ошибок при
использовании вместе с тестированием
 Непрерывное обеспечение качества
 Направление усилий по тестированию,
опираясь на СА
 Ускорение цикла производства ПО
 Улучшение качества производимых продуктов
Благодарность
Спасибо за внимание :-)

More Related Content

What's hot

CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest
 
About Testers
About TestersAbout Testers
About Testers
antsh
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышления
Andrei Zubov
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
Paul Stashevsky
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
Sergey Oreshkov
 
Lyanguzov preso sqadays8
Lyanguzov preso sqadays8Lyanguzov preso sqadays8
Lyanguzov preso sqadays8
Alexei Lupan
 

What's hot (20)

Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...
Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...
Как мы добавляли UX-исследования в мобильные приложения Aviasales и что из эт...
 
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
CodeFest 2010. Уразов А. — Quality-Oriented Programming (Программирование, ор...
 
About Testers
About TestersAbout Testers
About Testers
 
Как тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книгиКак тестируют в гугле - обзор книги
Как тестируют в гугле - обзор книги
 
Автотесты и образ мышления
Автотесты и образ мышленияАвтотесты и образ мышления
Автотесты и образ мышления
 
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
юнит тестирование Fork
юнит тестирование Forkюнит тестирование Fork
юнит тестирование Fork
 
Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 
Severity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятноеSeverity и Priority для неначинающих: очевидное и невероятное
Severity и Priority для неначинающих: очевидное и невероятное
 
Профилактика дефектов
Профилактика дефектовПрофилактика дефектов
Профилактика дефектов
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
HappyDev-lite-2016-весна 11 Виктор Белов. Мифы о (в) тестировании
HappyDev-lite-2016-весна 11 Виктор Белов. Мифы о (в) тестированииHappyDev-lite-2016-весна 11 Виктор Белов. Мифы о (в) тестировании
HappyDev-lite-2016-весна 11 Виктор Белов. Мифы о (в) тестировании
 
больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1больше тестов, хороших и разных! часть 1
больше тестов, хороших и разных! часть 1
 
Скандалы, расследования, тестирование
Скандалы, расследования, тестированиеСкандалы, расследования, тестирование
Скандалы, расследования, тестирование
 
Lyanguzov preso sqadays8
Lyanguzov preso sqadays8Lyanguzov preso sqadays8
Lyanguzov preso sqadays8
 
Yaroslava Bagrii “Тестувати можна все….Навіть людей”
Yaroslava Bagrii “Тестувати можна все….Навіть людей” Yaroslava Bagrii “Тестувати можна все….Навіть людей”
Yaroslava Bagrii “Тестувати можна все….Навіть людей”
 

Similar to Применение современных статических анализаторов

Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
Tatyanazaxarova
 
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
sqadays8
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
Rauan Ibraikhan
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
Sergii Shmarkatiuk
 
Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9
Technopark
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
seleznev_stas
 
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
Ontico
 

Similar to Применение современных статических анализаторов (20)

Регулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработкеРегулярное использование статического анализа кода в командной разработке
Регулярное использование статического анализа кода в командной разработке
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
Алексей Баранцев -- Какое дело тестировщикам до исходного кода?
 
Константин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороныКонстантин Книжник: статический анализ, взгляд со стороны
Константин Книжник: статический анализ, взгляд со стороны
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных системО чем стоит подумать, приступая к разработке высоконагруженных систем
О чем стоит подумать, приступая к разработке высоконагруженных систем
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
 
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Реклама PVS-Studio - статический анализ кода на языке Си и Си++
Реклама PVS-Studio - статический анализ кода на языке Си и Си++
 
Шаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проектеШаги мануальщика к автоматизации на крупном проекте
Шаги мануальщика к автоматизации на крупном проекте
 
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опытОблегчаем процесс разработки с помощью статического анализа кода: Наш опыт
Облегчаем процесс разработки с помощью статического анализа кода: Наш опыт
 
Поиск уязвимостей в программах с помощью анализаторов кода
Поиск уязвимостей в программах с помощью анализаторов кодаПоиск уязвимостей в программах с помощью анализаторов кода
Поиск уязвимостей в программах с помощью анализаторов кода
 
Презентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспеченияПрезентация по дисциплине технология разработки программного обеспечения
Презентация по дисциплине технология разработки программного обеспечения
 
презентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспеченияпрезентация по дисциплине технология разработки программного обеспечения
презентация по дисциплине технология разработки программного обеспечения
 
Java one presentation
Java one presentationJava one presentation
Java one presentation
 
Применение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПОПрименение статического анализа кода в преподавании и в разработке свободного ПО
Применение статического анализа кода в преподавании и в разработке свободного ПО
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 
Тестирование параллельных программ
Тестирование параллельных программТестирование параллельных программ
Тестирование параллельных программ
 
Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9Разработка веб-сервисов осень 2013 лекция 9
Разработка веб-сервисов осень 2013 лекция 9
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
О чем стоит подумать, приступая к разработке высоконагруженной системы (Артем...
 
123
123123
123
 

More from SQALab

More from 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. Применение современныхПрименение современных статических анализаторовстатических анализаторов Андрей Уразов – 2010Андрей Уразов – 2010
  • 2. Ход доклада  Что такое статический анализ  Виды обнаруживаемых изъянов  Достоинства и недостатки  Внедрение в производственный цикл ПО  Как выбрать решение для статического анализа
  • 3. Статический анализ кода  Анализ кода без его реального исполнения  Виды статического анализа:  На основе деревьев разбора  Анализ потока данных и управления
  • 4. Кто мог это написать?  Это код из Eclipse 3.0.0M8.  Что же можно обнаружить в проектах, которые мы тестируем?! if (in == null) try { in.close();
  • 5. Из кода JDK  Этот метод с бесконечной рекурсией написан самим Джошуа Блохом  Если гениальные люди делают такие ошибки, то что можно найти коде, написанном «обычными» разработчиками? public String foundType() { return this.foundType(); }
  • 6. Зачем нужен статический анализ  Обнаружение ошибок  Выявление архитектурных проблем кода, отступлений от лучших практик  Соответствие стандартам  Обучение разработчиков
  • 7. Зачем нужен статический анализ  Повышение качества ПО (увеличение доходов)  Увеличение производительности труда (сокращение издержек)
  • 8. Возможности  Метрики  Уязвимости безопасности  Проблемы многопоточности  Утечки ресурсов  Критические ошибки:  Выходы за границы массива  Ошибки работы с памятью  Исключения
  • 9. Примеры: обнаружение NPE Parasoft Jtest находит ошибку в коде Apache- Ant-1.7.0beta1 (ClassNotFound- Exception не обрабатывается должным образом и приводит к NPE)
  • 10. Примеры: избавляемся от утечек Parasoft Jtest находит утечку в коде Ant-1.7.0beta1 (утечка происходит, когда dis.read() бросает исключение)
  • 11. Примеры: оптимизируем код Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0
  • 12. Достоинства  Широкий класс ошибок  Обнаружение ошибок не требует участия человека  Ошибки находятся сразу после появления  Всегда отображается причина проблемы в коде
  • 13. Недостатки  Неполнота анализа  Ложные срабатывания
  • 14. Внедрение в процесс разработки  Использование системы управления исходным кодом  Определение политики качества  Автоматизированное тестирование каждую ночь  Каждое утро разработчики получают в среде разработки набор обнаруженных ошибок  Набор автоматически определяемых ошибок расширяется по необходимости
  • 15. В отделе контроля качества  Отделение истинных ошибок от ложных срабатываний  Направление усилий по тестированию на наиболее уязвимые части кода
  • 16. Что учитывать при выборе решения  Стоимость владения, окупаемость  Виды обнаруживаемых ошибок  Точность обнаружения  Удобство использования
  • 17. Удобство использования  Интеграция в среду разработки  Гибкая настройка  Распределение задач  Подавление ложных срабатываний  Отслеживание уровня качества
  • 18. Итоги: использование СА  Увеличение выявляемости ошибок при использовании вместе с тестированием  Непрерывное обеспечение качества  Направление усилий по тестированию, опираясь на СА  Ускорение цикла производства ПО  Улучшение качества производимых продуктов