Понятие дефекта Виды дефектов
План 1. Основные определения 2. Немного истории 3. Таксономия дефектов 4. Версии программного продукта Системы контроля версий 5. Жизненный цикл дефектов Bug Tracking Systems Описание дефекта
Ошибки в ПО - все возможные несоответствия между демонстрируемыми характеристиками его качества и сформулированными или подразумеваемыми требованиями и ожиданиями пользователей. Англ. термины, кот. часто переводят как «ошибка»: defect самое общее нарушение каких-либо требований или ожиданий, не обязательно проявляющееся вовне (нарушения стандартов кодирования, недостаточная гибкость системы и пр.). failure наблюдаемое нарушение требований, проявляющееся при каком-то реальном сценарии работы ПО. Это можно назвать проявлением ошибки. fault, error Неформальные определения
fault ошибка в коде программы, вызывающая нарушения требований при работе (failures), то место, которое надо исправить. Что именно надо исправлять, зависит от дополнительных условий, выполнение которых мы хотим при этом обеспечить, хотя в некоторых ситуациях наложение дополнительных ограничений не устраняет неоднозначность. error используется в двух смыслах: –Ошибка в ментальной модели программиста, в его рассуждениях о программе, которая заставляет его делать ошибки в коде (faults). –Некорректные значения данных, которые возникают при ошибках в работе программы Продолжение
Определения по стандарту Отказ (IЕЕЕ - fault) - наблюдаемое аномальное поведение любого объекта, такое как несоответствие требованиям и возникновение незапланированных явлений - (симптом). Сбой (IЕЕЕ - failure) - просчет в проектировании, ведущий к появлению отказов (симптомов) у какого-либо тестируемого объекта при прохождении этим объектом определенного теста - (ошибка).
Основные определения (2) If anything can go wrong – it will Недостаток (Fault) / Дефект (Defect) – некорректное поведение системы, вызывающее сбой Сбой (Failure) – наблюдаемый нежелательный эффект, вызванный дефектами в системе Ошибка (Error) – человеческое действие, которое вызывает некорректный результат работы системы Все это – баги (bugs)
Немного истории Mark II Aiken Relay Calculator "First actual case of bug being found" Появление терминов Bug и Debugging
Таксономия дефектов Недостаточно просто фиксировать дефекты – их надо классифицировать 2 основных признака классификации: Серьезность (severity) – степень влияния дефекта на продукт Приоритет (priority) – степень важности/срочности исправления дефекта их соотношение определяется спецификой проекта
Таксономия дефектов (2) 1 Severity (серьезность): фатальная (fatal) серьезная (serious) ошибка неудобства (inconvenient) косметическая (cosmetic) предложение по улучшению (suggestion for improvement, feature request) Priority (приоритет): высокий (high) нормальный (medium) низкий (low)
Версии программного продукта Beta Bug Convergence Zero-Bug Release Release Candidate Golden Release 0 Active Bugs Time Альфа (Alpha) – версия с основной функциональностью, готовая к внутреннему тестированию Бета (Beta) – версия с основной функциональностью, готовая к тестированию внешними тестерами или пилотными пользователями
Версии программного продукта (3) Точка конвергенции багов (Bug Convergence) Точка проекта, в которой количество исправленных багов намного превосходит количество найденных Трудно вычислить эту точку, так как количество багов – величина постоянно меняющаяся Показывает скорее тренд, а не состояние проекта Beta Bug Convergence Zero-Bug Release Release Candidate Golden Release 0 Active Bugs Time
Версии программного продукта (4) Версия «0 багов» (Zero-Bug Release) Первая версия проекта, в которой все выявленные баги высокого и среднего приоритета исправлены Требует проведения анализа багов, их приоритета «Начало конца» Beta Bug Convergence Zero-Bug Release Release Candidate Golden Release 0 Active Bugs Time
Версии программного продукта (5) Версия «Кандидат» (Release Candidate) Версия проекта, на которой проводится финальное тестирование Собирается, когда продукт потенциально готов к выпуску После финального тестирования может появиться необходимость еще одного «кандидата» Beta Bug Convergence Zero-Bug Release Release Candidate Golden Release 0 Active Bugs Time
Версии программного продукта (6) Версия «Выпускной» (Golden Release) Утвержденный «кандидат» Закончена разработка Закончено тестирование Подписаны документы Beta Bug Convergence Zero-Bug Release Release Candidate Golden Release 0 Active Bugs Time
Системы контроля версий Системы контроля версий – системы, обеспечивающие целостность кода и проектной документации при многопользовательской работе ведение нескольких веток проекта резервное копирование исходников VSS (Visual Source Safe) CVS – (Concurrent Versions System) Rational ClearCase
Системы контроля версий Схема системы Система контроля версий Game.cpp v.1.0 Game.cpp v.1.1 Game.cpp v.1.2 Game.cpp v.2.0 Репозиторий Клиент A Game.cpp v.2.0 Клиент B Game.cpp (изм.) Клиент C Game.cpp v.1.1 Протокол
Жизненный цикл дефектов Исправление Программист Проверка Тестер Классификация, назначение программиста Старший тестер Описание Тестер Баг закрыт Открыт В разработке Готов к проверке Зафиксирован
Bug Tracking Systems Поддерживают жизненный цикл дефектов Test Track (Pro) Разработчик - Seapine Software Клиент\серверный баг-трекер для Windows Rational ClearQuest IBM Rational Bugzilla Mozilla
Описание дефекта Краткое описание Детальное описание Прикрепленные файлы История дефекта
Заключение В процессе тестирования установлено, что поведение системы отличается от спецификации Определили, что это дефект (bug) Система контроля версий Зафиксировали, классифицировали Баг-трекинг система