Непрерывный анализ качества кода с помощью SonarQubeVasilii Chernov
Непрерывный анализ качества кода с помощью SonarQube. В презентации освещены основные принципы статического анализа кода, использование SonarQube, плагина для Jenkins CI SonarQube Github plugin и использование SonarLint для pre-commit проверки
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Andrew Petukhov
Недостатки, влияющие на качество (и безопасность) приложений, можно поделить на две группы: типичные недостатки (переполнения, уязвимости форматной строки, SQLi, XSS и т.п.) и специфичные недостатки (англ. application specific). В докладе будет проведена оценка справедливости высказываний вендоров статических анализаторов об их возможностях по поиску специфичных недостатков безопасности в приложениях. Будет представлена методика поиска подобных ошибок на примере поиска ошибок контроля доступа: задача будет декомпозирована на шаги, для каждого из которых будет указано, что можно сделать автоматически и как, а что — только вручную.
Непрерывный анализ качества кода с помощью SonarQubeVasilii Chernov
Непрерывный анализ качества кода с помощью SonarQube. В презентации освещены основные принципы статического анализа кода, использование SonarQube, плагина для Jenkins CI SonarQube Github plugin и использование SonarLint для pre-commit проверки
Обнаружение уязвимостей логики приложений методом статического анализа. Где п...Andrew Petukhov
Недостатки, влияющие на качество (и безопасность) приложений, можно поделить на две группы: типичные недостатки (переполнения, уязвимости форматной строки, SQLi, XSS и т.п.) и специфичные недостатки (англ. application specific). В докладе будет проведена оценка справедливости высказываний вендоров статических анализаторов об их возможностях по поиску специфичных недостатков безопасности в приложениях. Будет представлена методика поиска подобных ошибок на примере поиска ошибок контроля доступа: задача будет декомпозирована на шаги, для каждого из которых будет указано, что можно сделать автоматически и как, а что — только вручную.
This document provides templates for written communication patterns in a distributed work environment. It offers advice on introductions, handling absence, sending messages to large audiences, defining distribution lists, using task trackers, handling outdated information, clarifying misunderstandings, following up on unanswered messages, specifying expectations, using redundant communication methods, escalating to managers, drafting important messages, delegating to higher levels, keeping managers informed, and archiving messages. Templates are provided for common communication scenarios.
Константин Книжник: статический анализ, взгляд со стороныTatyanazaxarova
Статья представляет интервью, взятое у Константина Книжника, сотрудником компании "Системы программной верификации" Андреем Карповым. Затронуты вопросы статического анализа кода, актуальность решений в этой области, а также перспективы использования статического анализа при разработке параллельных приложений.
В статье описаны технологии тестирования, используемые при разработке статического анализатора кода PVS-Studio. Разработчики инструмента для программистов делятся принциами тестирования собственного программного продукта, которые могут быть интересны разработчикам аналогичных пакетов обработки текстовых данных или исходных кодов.
Тестирование параллельного программного обеспечения представляет собой более сложную задачу по сравнению с тестированием последовательной программы. Программист должен знать о подводных камнях при тестировании параллельного кода, имеющихся методологиях и инструментарии.
Исследование безопасности создаваемых информационных систем и разрабатываемых приложений становится распространенной практикой. Безопасники получили наконец заслуженное признание и «включены в цикл» разработки, их вписывают в нормативку, создают базы знаний для хранения результатов исследований. Чего ждут разработчики и владельцы информационных систем от исследователей? Поговорим о задачах, которые предстоит решать, и о качестве исследований, проводимых на регулярной основе.
Презентация на комплексную тему Continious integration-Automated Testing-Agile, показывается связи между этими темам, обоснование автоматического тестирования , и вложения ресурсов для развертывания автоматического тестирования и непрерываной интеграциия. Все темы тесно связаны между собой , хотя бы появились независимос друг от друга.
Реклама PVS-Studio - статический анализ кода на языке Си и Си++Andrey Karpov
Этот документ рекламирует статический анализатор PVS-Studio. Описывается, как использование PVS-Studio уменьшит количество ошибок в коде проекта на языке C/C++/C++11 и сократит затраты на тестирование, отладку и сопровождение кода. Приводится большое количество примеров ошибок, найденных анализатором в различных Open-Source проектах. Документ описывает PVS-Studio на момент версии 4.38 от 12 октября 2011 и, как следствие, не отражает возможности следующих версий. Чтобы познакомиться с новыми возможностями, предлагаем посетить сайт продукта <a>http://www.viva64.com</a> или поискать обновленный вариант этой статьи.
This document discusses continuous performance testing (CPT) and introduces the Jagger CPT solution. It provides an overview of why performance testing is important, outlines the principles and goals of CPT, and describes the key parts of the Jagger CPT platform including load generation, metrics collection, test data management, and environment management. It also provides an example customer success story where Jagger was used for continuous performance testing of a large ecommerce site.
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
This document provides an overview of the JDI (Java UI test automation framework). It discusses features of JDI including being UI element oriented, providing common UI elements and solutions to common problems. It provides examples of how to write tests using JDI annotations and page object pattern. The document also summarizes benefits of JDI such as reducing test code, improving test clarity, reuse across projects. Finally it outlines new features planned for JDI 2.0 including layout verification, page object generator, integration with Selenium and expanding JDI to other languages like Python.
The document discusses testing of geolocation systems. It provides an overview of geolocation, including definitions and importance. It then outlines the speaker's experience and work testing GIS systems. The rest of the document details approaches to testing geolocation, including simulating calls, checking responses and databases, and verifying accuracy. It also discusses common data formats, projections, tools like PostGIS and QGIS, and potential bugs to watch for like coordinate jumbling. The conclusion emphasizes starting simple, practicing to improve, and for tests to grow with knowledge as geolocation is important for future IT.
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. Построение процесса обеспечения качества
Использование системы контроля кода
Определение политики качества, используемых
практик обнаружения ошибок
Автоматизированное тестирование каждую ночь
Каждое утро участники проекта получают
набор обнаруженных ошибок
Список видов автоматически определяемых
ошибок расширяется по необходимости