QA Дмитрий Петунин. Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA.

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



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

Технология обеспечения качества Компилятора Александр Конев 4 февраля 2010.
SOFTWARE DEVELOPMENT PODGOTOVIL TVOU ZHOPY K SDACHE.
Вехи проекта Microsoft Solution Framework. Содержание Утверждение целей и границ Утверждение плана проекта Завершение разработки/Первое использование.
Управление качеством Качество ПО – его соответствие потребностям Заказчика Самый верный путь повышения качества – улучшение процессов создания и сопровождения.
Модель процессов введение Microsoft Solution Framework.
Организация процесса тестирования ПО Петренко Ольга QA Team Leader.
Тестирование веб-проектов в Agile Асхат Уразбаев, ScrumTrek.
QA - Quality Assurance Тестирование и верификация качества.
Планирование (часть2) Integration management Time management Cost management Quality management Communications management Procurement management МГИМО.
Тестирование Обеспечение качества. Тема 7 тестирование2 Аттестация и верификация Обзоры Инспекционные проверки Сквозной контроль.
Жизненный цикл программного обеспечения Лекция 4.
Количественное Управление Надежность плана Выполнение процесса Завершенность поставок Сроки поставки Неисправленные дефекты ( на момент поставки Заказчику)
24 декабря 2009 года Ознакомительный семинар. План Что такое тестирование? Роль тестировщика в проекте Обязанности тестировщика Инструменты Литература.
Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 8. Управление качеством.
Автоматизация тестирования. План 1.Применение автоматизированного тестирования 2.Выбор инструментария 3.Процесс автоматизации (IBM Rational) GUI тестирование.
Жизненный цикл программного обеспечения Подготовил студент 1 курса Лось Павел.
2 Основным понятием программной инженерии является понятие жизненного цикла ПО. Жизненный цикл ПО (software lifecycle) – это период времени, который начинается.
EXtreme Programming XP Тема 2. XP Заказчики определяют: объем работ; приоритеты; композиции версий; сроки выпуска версий. Разработчики определяют: оценку.
Тестирование / Testing / Quality Assurance (QA). Виды тестирования Функциональное (Functional) Регрессионное (Regression) Приемочное (Acceptance) Нагрузочное.
Транксрипт:

QA Дмитрий Петунин

Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA

Что такое QA?

Хотите ли вы работать в QA? ДА: НЕТ:

6 мифов почему работать в QA плохо Эта работа ниже моего уровня IQ Мало платят Клеймо тестировщика испортит трудовую Призрачный карьерный рост «Я люблю творить» В тестировщики идут те, кто не смог стать программистом

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

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

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

11 принципов процесса ориентированного на качество 1) Постоянство цели 2) Приверженность качеству 3) Фокус на потребителе 4) Ориентация на процессы 5) Непрерывное улучшение 6) Управление, ориентированное на систему 7) Инвестиции в знания 8) Командная работа 9) Сохранение людских ресурсов 10) Всеобщее вовлечение 11) Постоянное внимание

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

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

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

Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA

Жизненный цикл продукта 1 возникновение и исследование идеи; 2 анализ требований и проектирование; 3 программирование; 4 тестирование и отладка; 5 ввод программы в действие; 6 эксплуатация и сопровождение; 7 завершение эксплуатации.

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

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

Планирование качества Планирование качества - определение стандартов и критериев качества, на которые нацелен проект, и средств удовлетворения этих стандартов. Это один из ключевых вспомогательных процессов планирования и он должен осуществляться регулярно и параллельно с другими процессами планирования. Так, желательное качество процесса может потребовать корректировки стоимости или расписания работ, а желательное качество продукта - детального анализа рисков потенциальных проблем.

Управление требованиями Сложность работы с требованиями требования разнообразны по значимости (обязательность, риск, важность, стабильность); требования связаны между собой и с другими проектными артефактами; они часто относятся к нескольким функциональным областям сразу; требования изменяются в процессе жизненного цикла создания ПО. Для эффективного управления качеством необходимо установить соответствия между требованиями и тестами их проверяющими

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

Test assertions Имя(номер) Связь с требованием или допущением Описание Способ проверки Названия тестов

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

Программирование создание тестов и internal verifiers контроль качества регулярное тестирование продукта контроль параметров качества контроль исполнения плана качества управление качеством улучшение процессов выработка рекомендаций (ex. must-fix lists) обучение команды

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

Типы тестирования Модульное (Unit) Regression Функциональное Интеграционное Performance Stress Compatibility Installation/Deployment

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

Методологии создания тестов покрытие спецификации покрытие внутреннего представления покрытие грамматики/syntax testing покрытие кода/путей (white box) транзакционное тестирование (black box) data-flow testing негативное тестирование

Instrumented testing Тестирование, которое требует предварительной обработки тестируемой программы Статические верификаторы (lint, Intel Static verifier, Klocwork, Coverity) динамические верификаторы (Valgrind, Purify, MemChecker …) Code coverage internal verifiers TraceProfiler

Сравнение статического и динамического анализа Статический анализДинамический анализ Не требуется наличия тестовИспользует существующие тесты. Качество работы зависит от качества тестовой базы Время анализа сравнимо со временем компиляции Время анализа в раз больше чем прогон Выдача ошибок происходит в терминах исходного кода Выдача ошибок в терминах ошибок доступа к памяти Находит потенциальные проблеммы и некрасивый код Может находить очень ограниченный набор ошибок связанных с работой с памятью Достаточно много ложных ошибокЛожных ошибок незначительное число

Тестирование и отладка Регулярное тестирование прогон тестов анализ результатов регистрация дефектов предоставление отчетов Контроль качества контроль параметров качества контроль исполнения плана качества Управление качеством улучшение процессов выработка рекомендаций (ex. must-fix lists) Обучение команды Поддержка тестовой базы

Ввод программы в действие Валидация Контроль финальных параметров качества Управление качеством Обучение команды

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

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

Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA

Стандарты Q uality Assurance (Гарантия качества) - обязательство, что работа выполнена с соблюдением соответствующих стандартов Стандарты ISO 9000 CMM/CMMI PMBoK Процессы разработки программ RUP EP (Agile development)

ISO 9000 Система управления качеством Организационная структура Распределение отвественностей Процедуры Процессы Ресурсы План управления качеством входит в общий план проекта и описывает технологию управления качеством, подтверждения качества и улучшения качества для проекта.

CMM/CMMI Capability Maturity Model® Integration (CMMI) 0. Incomplete 1. Performed 2. Managed 3. Defined 4. Quantitatively Managed 5. Optimizing

CMM/CMMI generic practices GG 1 Achieve Specific Goals GP 1.1 Perform Base Practices GG 2 Institutionalize a Managed Process GP 2.1 Establish an Organizational Policy GP 2.2 Plan the Process GP 2.3 Provide Resources GP 2.4 Assign Responsibility GP 2.5 Train People GP 2.6 Manage Configurations GP 2.7 Identify and Involve Relevant Stakeholders GP 2.8 Monitor and Control the Process GP 2.9 Objectively Evaluate Adherence GP 2.10 Review Status with Higher Level Management GG 3 Institutionalize a Defined Process GP 3.1 Establish a Defined Process GP 3.2 Collect Improvement Information GG 4 Institutionalize a Quantitatively Managed Process GP 4.1 Establish Quantitative Objectives for the Process GP 4.2 Stabilize Subprocess Performance GG 5 Institutionalize an Optimizing Process GP 5.1 Ensure Continuous Process Improvement GP 5.2 Correct Root Causes of Problems

PMBoK PMI – Project Management Institute PMBoK – Project Management Body of Knowledge Набор процессов и требований к ним, которые по общему мнению дают положительный результат при управлении проектами

Структура PMBoK

Project Quality Management

RUP – Rational Unified Process

Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий QA

Организация QA команды Testing Test Development ToolsMetrics QAProject1ProjectN Department

Преимущества выделенного QA Unification of QA processes and standards in an organization QA career path Separation of development and testing resources Common QA planning Sharing and load balancing of HW and human resources QA manager has similar org-level with development managers and has a say so in decision making

Содержание Что такое QA? Роль QA в жизненном цикле программного обеспечения Стандарты Организация QA Инструментарий 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 Функции: Учет и регистрация найденных дефектов или заданий для разработки Классификация дефектов Поддержка жизненного цикла дефекта Сохранение истории коммуникации по дефектам

Требование к оформлению дефекта Осмысленное краткое название Как воспроизвести Тест Платформа / environment configuration Версия продукта Краткий протокол исполнения и информация об ошибке Приоритет Виновная компонента / changeset Рекомендации по исправлению (если есть)

Тестовая база Функции: Структурированное хранилище тестов и всего необходимого для их исполнения Тесты объеденены в сюиты Позволяет определить специфические условия исполнения для каждого теста или для всей сюиты

Test harness Функции: Исполнение набора тестовых сюит или отдельных тестов Генерация отчета об исполнении тестов Распараллеливание тестового прогона на несколько машин различных конфигураций и генерация объединенного отчета Управление множественными прогонами

Тестовый отчет Версия продукта Дата прогона Метрики качества по отношению к предыдущему тестированию, а также к тестированию эталонного компилятора Список новых падений Список известных падений Список новых тестов Список прошедших тестов

База данных результатов тестирования Функции: Хранение результатов тестирований за длительный срок Сравнение произвольного набора тестирований между собой История жизни любого теста из тестовой базы Использование общей статистики для оптимизации тестовых прогонов

Backup

Архитектура продукта ориентированного на качество Продукт состоит из компонент с четко определенной функциональностью и специфицированными интерфейсами ( Изменение которых возможно только после прохождение формального процесса согласования) Широкое использование internal verifiers/asserts Текущее состояние продукта в ключевых точках однозначно определяется значениями определенных объектов. Объекты не меняют семантику в процессе работы программы.

V-модель тестирования Product validation BigApp testing Monthly testing Bi-weekly Weekly Nightly Mainline-checkin Check-in criteria Developer testing

Задачи команды тестирования Build products, run regular testing, analyze failures, submit bugreport, provide testing reports Maintain testing workloads Maintain testbase Manage testing platforms Develop and support QA processes, perform automation Developer support

Задачи Test Development Work in close cooperation with developers Perform systematic test development Use different methodologies to detect weak areas of compiler Develop new testing methodologies

Test development example StageDeveloperQA ww8PlanningFeature planned Testing works planned. Testing strategy developed ww11 Planned start of implementation Test development scheduled ww12 Feature development slipped to ww17 Notified QA about changing plansTest development rescheduled ww17 Feature development started Developer produced some preliminary working product Active test development started, tests are being delivered to developer ww18Feature development Developer provides QA with fresh product QA reports to developer all newly found problems ww19Feature developmentDevelopment continues Basic test development finished, test delivered to developer ww20- ww25Feature developmentDevelopment continuesNo activity ww26FinalizationFeature is almost completedTestsuite revised, many tests improved ww27Final testingFeature completedSome specific tests are to be added ww28Feature promoted Developer promoted feature. Bugs for every known problem submitted to bugtracking system Some specific tests are to be added. All found problems are now submitted through bugtracking system ww29Testsuite finalizationDeveloper delivered tests to QA QA revised the whole testsuite and integrate developer tests if appropriate ww30Regular testingNo activityTestsuite integrated to regular testing.

Test development example Dev QA

Планирование качества Set clear quality criteria for major release stages (beta- acceptance criteria, release criteria). In terms of: Passrate on special set of important suites (usually 100%) Passrate of baseline testing in comparison with previous release Passrate on new features testsuites Number of high priority bugs allowed Define OS matrix and volume of testing on each platform Define testing level required for every new product feature Set bug fixing goals for components Develop test plans and testing schedule

Жизненный цикл дефекта Submitted Engineering Fixed Verified Closed Not reproducible Will not be fixed 3-rd party problem User Error Fixed/Implemented Bug status:Bug resolution: