19

Click here to load reader

Sqa8 urazov

Embed Size (px)

Citation preview

Page 1: Sqa8 urazov

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

Андрей Уразов – 2010Андрей Уразов – 2010

Page 2: Sqa8 urazov

Ход доклада

Что такое статический анализ Виды обнаруживаемых изъянов Достоинства и недостатки Внедрение в производственный цикл ПО Как выбрать решение для статического анализа

Page 3: Sqa8 urazov

Статический анализ кода

Анализ кода без его реального исполнения Виды статического анализа:

На основе деревьев разбора Анализ потока данных и управления

Page 4: Sqa8 urazov

Кто мог это написать?

Это код из Eclipse 3.0.0M8. Что же можно обнаружить в проектах, которые

мы тестируем?!

if (in == null) try { in.close();

Page 5: Sqa8 urazov

Из кода JDK

Этот метод с бесконечной рекурсией написан самим Джошуа Блохом

Если гениальные люди делают такие ошибки, то что можно найти коде, написанном «обычными» разработчиками?

public String foundType() { return this.foundType();}

Page 6: Sqa8 urazov

Зачем нужен статический анализ

Обнаружение ошибок Выявление архитектурных проблем кода,

отступлений от лучших практик Соответствие стандартам Обучение разработчиков

Page 7: Sqa8 urazov

Зачем нужен статический анализ

Повышение качества ПО (увеличение доходов) Увеличение производительности труда

(сокращение издержек)

Page 8: Sqa8 urazov

Возможности

Метрики Уязвимости безопасности Проблемы многопоточности Утечки ресурсов Критические ошибки:

Выходы за границы массива Ошибки работы с памятью Исключения

Page 9: Sqa8 urazov

Примеры: обнаружение NPE

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

Page 10: Sqa8 urazov

Примеры: избавляемся от утечек

Parasoft Jtest находит утечку в коде Ant-1.7.0beta1(утечка происходит, когда dis.read() бросает исключение)

Page 11: Sqa8 urazov

Примеры: оптимизируем код

Parasoft Jtest находит неоптимальный код в FindBugs v1.0.0

Page 12: Sqa8 urazov

Достоинства

Широкий класс ошибок Обнаружение ошибок не требует участия

человека Ошибки находятся сразу после появления Всегда отображается причина проблемы в коде

Page 13: Sqa8 urazov

Недостатки

Неполнота анализа Ложные срабатывания

Page 14: Sqa8 urazov

Внедрение в процесс разработки

Использование системы управления исходным кодом

Определение политики качества Автоматизированное тестирование каждую ночь Каждое утро разработчики получают в среде

разработки набор обнаруженных ошибок Набор автоматически определяемых ошибок

расширяется по необходимости

Page 15: Sqa8 urazov

В отделе контроля качества

Отделение истинных ошибок от ложных срабатываний

Направление усилий по тестированию на наиболее уязвимые части кода

Page 16: Sqa8 urazov

Что учитывать при выборе решения

Стоимость владения, окупаемость Виды обнаруживаемых ошибок Точность обнаружения Удобство использования

Page 17: Sqa8 urazov

Удобство использования

Интеграция в среду разработки Гибкая настройка Распределение задач Подавление ложных срабатываний Отслеживание уровня качества

Page 18: Sqa8 urazov

Итоги: использование СА

Увеличение выявляемости ошибок при использовании вместе с тестированием

Непрерывное обеспечение качества Направление усилий по тестированию,

опираясь на СА Ускорение цикла производства ПО Улучшение качества производимых продуктов

Page 19: Sqa8 urazov

Благодарность

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