Технологии обеспечения качества программ Дмитрий Петунин.

Презентация:



Advertisements
Похожие презентации
Технология обеспечения качества Компилятора Александр Конев 4 февраля 2010.
Advertisements

Виды и методы тестирования на разных стадиях разработки ПО.
Организация процесса тестирования ПО Петренко Ольга QA Team Leader.
Тестирование Обеспечение качества. Тема 7 тестирование2 Аттестация и верификация Обзоры Инспекционные проверки Сквозной контроль.
QA Дмитрий Петунин. Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA.
Уровни тестирования Инна Исаева. Классификация видов тестирования По объекту тестирования: Функциональное тестирование (functional testing) Тестирование.
Жизненный цикл программного обеспечения Подготовил студент 1 курса Лось Павел.
Положение об отделе В.Андреев, Д.Сатин. Штат отдела начальник отдела; бизнес-аналитик; проектировщик пользовательских интерфейсов; специалист по анализу.
Автоматизация тестирования. План 1.Применение автоматизированного тестирования 2.Выбор инструментария 3.Процесс автоматизации (IBM Rational) GUI тестирование.
Ранжирование функциональных требований. Критерии ранжирования функциональных требований широта сферы применения; степень детализации; функциональный.
Жизненный цикл программного обеспечения Лекция 4.
Учебный курс Стандартизация и сертификация программного обеспечения Лекция 7 доктор технических наук, профессор, проректор по информатизации, заведующий.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 8. Управление качеством.
Team System - фреймворк для автоматизации тестирования от Microsoft Футорняк Елена Apriorit Сообщество Тестировщиков Днепропетровска 29/09/2011.
SQL 2012 И ГИБКИЕ МЕТОДЫ КОМАНДНОЙ РАЗРАБОТКИ C TFS Добро пожаловать в команду! Alexander Yakovlev
2 Основным понятием программной инженерии является понятие жизненного цикла ПО. Жизненный цикл ПО (software lifecycle) – это период времени, который начинается.
Непрерывный рост требований к качеству ПС стимулирует создание и активное применение международных стандартов и регламентированных технологий, автоматизирующих.
Невидимый фронт или тестирование digital-проектов Эмиль Хуснетдинов SmartHead.
24 декабря 2009 года Ознакомительный семинар. План Что такое тестирование? Роль тестировщика в проекте Обязанности тестировщика Инструменты Литература.
Матрица связи между ISO 9001:2008 и ISO 9001:2015.
Транксрипт:

Технологии обеспечения качества программ Дмитрий Петунин

Содержание Что такое качество? Как измерить качество программ? Роль QA в жизненном цикле программного обеспечения Необходимые элементы процесса создания качественных программ

Что такое качество? Качество это нечто невидимое, до тех пор пока оно не испортится.

Что такое качество? Качество – степень удовлетворения ожиданиям. Существенная определяющая черта, почему продут А не может быть заменен продуктом Б.

Содержание Что такое качество? Как измерить качество программ? Роль QA в жизненном цикле программного обеспечения Необходимые элементы процесса создания качественных программ

Как измерить качество программного продукта? Невозможно управлять тем, что невозможно измерить.

Как обычно измеряют качество программного продукта? Процент удовлетворенных требований Процент удовлетворенных ключевых требований Процент прохождения тестов общий тестов на ключевые features Производительность/Пропускная способность Количество дефектов Количество регрессий по сравнению с предыдущей версией Процент покрытия тестами Сравнение с конкурентами

Содержание Что такое качество? Как измерить качество программ? Роль QA в жизненном цикле программного обеспечения Необходимые элементы процесса создания качественных программ

Что такое QA? Quality Assurance – Запланированный набор систематических деятельностей гарантирующий, что любые отклонения от процесса четко определены, проанализированы и направлены на его улучшение для достижения более точного соответствия с поставленными требованиями.

Организационная структура Вариант 1: Распределенный QA Отдел разработки Продукт 1Продукт 2 devQAdevQA

Организационная структура Вариант 2: Выделенный QA Отдел разработки Продукт 1Продукт 2 dev QA

Преимущества выделенного QA Унификация QA процессов и инструментов в организации QA имеет такое же влияние в организации как и менеджеры продуктов Эффективная балансировка QA ресурсов между проектами Разделение ресурсов на тестирование и разработку Карьерные возможности для QA инженеров

Процесс непрерывной разработки программного продукта beta Feature freeze Code freeze Product to customer Planning Design Development Testing & Debugging Deployment Planning Design Development

Управление качеством Контроль и непрерывное улучшение всех процессов участвующих в создании продукта.

Анализ требований и проектирование планирование качества, составление политики качества контроль качества требований измеримость полнота непротиворечивость дизайн review соответствие дизайна основным принципам продукта ориентированного на качество формальный анализ проекта способность проекта удовлетворить требованиям проектирование тестовой инфраструктуры

Программирование создание тестов и встроенных проверок контроль качества регулярное тестирование продукта контроль параметров качества контроль исполнения плана качества Code review

Тестирование и отладка Регулярное тестирование исполнение тестов анализ результатов регистрация дефектов предоставление отчетов Управление качеством Анализ дефектов и улучшение процессов

Ввод программы в действие Beta тестирование Контроль финальных параметров качества Продуктовое тестирование Тестирование всех поддерживаемых платформ Тестирование безопасности Тестирование инсталляции Тестирование локализации Тестирование защиты интеллектуальной собственности

Поддерживаемые платформы Первичные Вторичные Третичные Еженедельное тестирование Разработка и ежедневное тестирование Участвуют в финальном тестировании продукта

Тестирование инсталляции Этот продукт никто не смог установить

Тестирование локализации

Тестирование безопасности интеллектуальной собственности Строки раскрывающие конфиденциальную информацию Использование open_source кода Каждый файл должен иметь COO (Certificate of origin)

Эксплуатация и сопровождение Анализ дефектов полученных от пользователей Регулярный выпуск обновлений и их тестирование Разработка дополнительных тестов на проблемные области

Завершение эксплуатации Архивирование тестовой инфраструктуры Анализ успешности проекта и документирование его результатов

Содержание Что такое качество? Как измерить качество программ? Роль QA в жизненном цикле программного обеспечения Необходимые элементы процесса создания качественных программ

Управление требованиями Типы требований Бизнес-требования Бизнес-правила Пользовательские требования Системные требования и ограничения … Пользовательские требования могут выражаться в виде фраз, утверждений способов применения (use case) пользовательских историй (user story) сценариев взаимодействия (scenario). Для эффективного управления качеством необходимо установить соответствие между требованиями и тестами их проверяющими

Управление допущениями (Assumptions) Допущение – требование, предположение наложенное разработчиками программы Допущения могут быть различного уровня (Пользовательские, архитектурные, функциональные) Допущения не должны конфликтовать с требованиями

Типы тестирования * По объекту тестирования: Функциональное тестирование (functional testing) Нагрузочное тестирование Тестирование производительности (perfomance/stress testing) Тестирование стабильности (stability/load testing) Тестирование удобства использования (usability testing) Тестирование интерфейса пользователя (UI testing) Тестирование безопасности (security testing) Тестирование локализации (localization testing) Тестирование совместимости (compatibility testing) * Взято с wikipedia.org

Regression testing Regression тест является небольшим тестом, который должен диагностировать ошибку до ее исправления и работать корректно после исправления Разработчик должен предоставить набор regression тестов для каждого исправленного дефекта.

Программная верификация #ifdef DEBUG проверка совместности значений параметров в ключевых точках исполнения программы использование assert в случае непредвиденного поведения программы проверка допустимости значений входящих и возвращаемых параметров проверка инвариантов цикла инициализация всей динамически выделяемой памяти ненулевыми значениями (специальная опция в MSVS) явная проверка всех реализационных допущений

Инструментальное тестирование Тестирование, которое требует предварительной обработки тестируемой программы Статические верификаторы (lint, Intel Source Checker, Klocwork, Coverity) динамические верификаторы (Valgrind, Purify, Intel Inspector …) Code coverage Internal verifiers TraceProfiler

Инструментарий QA Requirements Management Version Control Testbase Test harness Test Results DB Bugtracking Test generators

Организация совместной разработки программ Component SB Developer SB Component WS Pre-integration WS Product WS

Инструменты поддержки совместной разработки кода Инструменты: CVS, TeamWare(SCCS), SubVersion, VCS … Функции: Несколько человек могут править один и тот же файл одновременно Поддержка версионности на уровне файлов и всего продукта Поддержка change-sets Мультиплатформенность command-line и GUI интерфейсы

Регистрация дефектов (багов) Инструменты: Bugzilla, Mantis, RequestTracker, ClearQuest Функции: Учет и регистрация найденных дефектов или заданий для разработки Классификация дефектов Поддержка жизненного цикла дефекта Сохранение истории коммуникации по дефектам

Стандарты ISO 9000 CMM/CMMI PMBoK Процессы разработки программ RUP EP (Agile development)

Code review

Покрытие кода