Тестирование программных средств Сафронов Сергей, 2008 год.

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



Advertisements
Похожие презентации
Виды и методы тестирования на разных стадиях разработки ПО.
Advertisements

Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Уровни тестирования Инна Исаева. Классификация видов тестирования По объекту тестирования: Функциональное тестирование (functional testing) Тестирование.
ОСНОВЫ ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ. Разработка программ - промышленное производство необходима технология разработки программ. Д. Кнут «Искусство программирования.
Тестирование программных средств Сафронов Сергей, 2008 год.
Виды и методы тестирования на разных стадиях разработки ПО.
Тестирование программных средств Сафронов Сергей 2009 год.
Оператор DO……………….LOOP. 1. Циклы DO…….LOOP с проверкой выражения в начале.
Организация процесса тестирования в Agile команде с помощью квадрантов тестирования.
Операторы языка. Арифметические операторы Арифметические операторы Арифметические операторы Арифметические операторы Операторы сравнения Операторы сравнения.
1. Принципы верификации и тестирования информационных систем 2. Технологические этапы и стратегии систематического тестирования информационных систем 3.
Тестирование программных средств Сафронов Сергей, 2007 год.
Методология проектирования RAD МДК Раздел 1.
Операторы. Оператор выбора Оператор выбора Оператор выбора Оператор выбора Оператор присваивания Оператор присваивания Оператор присваивания Оператор присваивания.
Учебный центр ИТ УРАНСОФТ Учим, устраиваем, развиваем!
На основании курса Тестирования программных продуктов Терехов А. А. Слайд 1 Анализ стандартных методов тестирования. Применимость к разработке игр. Шишенин.
Разработка и стандартизация программных средств и информационных технологий Тема:СТАНДАРТЫ, РЕГЛАМЕНТИРУЮЩИЕ ПРОЦЕССЫ ЖИЗНЕННОГО ЦИКЛА ПРОГРАММНЫХ СРЕДСТВ.
Язык программирования Delphi. Алфавит языка 53 буквы латинского алфавита и символ подчеркивания Цифры от 0 до 9 23 спец.символа
EXtreme Programming XP Тема 2. XP Заказчики определяют: объем работ; приоритеты; композиции версий; сроки выпуска версий. Разработчики определяют: оценку.
Тема 7. Отладка и тестирование программных средств.
Транксрипт:

Тестирование программных средств Сафронов Сергей, 2008 год

Оглавление Фазы тестового цикла Фазы тестового цикла Unit-тестированиеUnit-тестирование Интеграционное тестированиеИнтеграционное тестирование Различные подходы к интеграционному тестированию Различные подходы к интеграционному тестированию Системное тестированиеСистемное тестирование Аттестационное (приемочное) тестированиеАттестационное (приемочное) тестирование Классификация тестов Классификация тестов

V – модель Определение требований Системное тестирование Разработка архитектуры Детальный дизаин Интеграционное Тестирование Приемочное тестирование Разработка и Unit-тестирование

Цель: проверить, что модуль (либо функция) не содержит явных ошибок Проверка логики Проверка корректность использования типовПроверка корректность использования типов Обнаружение неинициализированных переменныхОбнаружение неинициализированных переменных Проверка корректность счетчиков для цикловПроверка корректность счетчиков для циклов Проверка типов возвращаемых значений для функцийПроверка типов возвращаемых значений для функций Проверка корректности типов передаваемых аргументовПроверка корректности типов передаваемых аргументов Корректность условных операторовКорректность условных операторов Локализация мест, где возможна потеря точностиЛокализация мест, где возможна потеря точности На этом этапе ловится до 65% всех ошибок

Особенности unit-тестирования Обычно выполняется самими разработчиками (чаще всего – в рамках code review) Обычно выполняется самими разработчиками (чаще всего – в рамках code review) Требуются специальные драйвера, stabs (затычки) и автоматизирующие утилиты Требуются специальные драйвера, stabs (затычки) и автоматизирующие утилиты (В идеале )Создаются спец. тесты, что проверяют, что: (В идеале )Создаются спец. тесты, что проверяют, что: каждая строка модуля выполняется хотя бы 1 раз каждая строка модуля выполняется хотя бы 1 раз Каждый путь в модуле выполняется хотя бы 1 раз Каждый путь в модуле выполняется хотя бы 1 раз

Число путей выполнения для каждого statement Statement type IF.. END IF IF.. END IF IF..ELSE..END IF IF..ELSE..END IF IF..ELSEIF..END IF IF..ELSEIF..END IF IF..ELSEIF..ELSE..END IF IF..ELSEIF..ELSE..END IF IF..ELSEIF..ELSEIF..END IF IF..ELSEIF..ELSEIF..END IF IF..ELSEIF..ELSEIF..ELSE..END IF IF..ELSEIF..ELSEIF..ELSE..END IF CASE statement with n cases CASE statement with n cases FOR..NEXT FOR..NEXT DO WHILE..LOOP DO WHILE..LOOP DO UNTIL..LOOP DO UNTIL..LOOP Number of Paths n+1 222

Unit-тестирование и покрытие логики Покрытие структурных элементов Покрытие структурных элементов Каждый структурный элемент выполняется хотя бы 1 разКаждый структурный элемент выполняется хотя бы 1 раз Покрытие условий Покрытие условий Все варианты всех условий проверяются хотя бы 1 разВсе варианты всех условий проверяются хотя бы 1 раз Прокрытие всех условных операторов Прокрытие всех условных операторов Для каждого условного оператора проверяются хотя бы раз все вариантыДля каждого условного оператора проверяются хотя бы раз все варианты Покрытие всех комбинаций условий Покрытие всех комбинаций условий Все комбинации условных операторов проверяются хотя бы 1 разВсе комбинации условных операторов проверяются хотя бы 1 раз

Интеграционное тестирование Это промежуточное тестирование между Unit- тестированием и системным тестированием Это промежуточное тестирование между Unit- тестированием и системным тестированием Проходит тестирование всех внутренних и внешних интерфейсов Проходит тестирование всех внутренних и внешних интерфейсов Тестирование связей между модулямиТестирование связей между модулями Тестирование связей программы с внешним миромТестирование связей программы с внешним миром Ловятся следующие ошибки: Ловятся следующие ошибки: ВзаимодействияВзаимодействия ИнтерфейсыИнтерфейсы Тестирование проводится разработчиками совместно с тестировщиками Тестирование проводится разработчиками совместно с тестировщиками

Проблемы, локализуемые на данном этапе Некорректные предположения о валидности данных Некорректные предположения о валидности данных Некорректное использование смежных юнитов (не учитываются побочные эффекты) Некорректное использование смежных юнитов (не учитываются побочные эффекты) Вызов функций вне запланированных последовательностей (работа с неинициализированными данными) Вызов функций вне запланированных последовательностей (работа с неинициализированными данными) Работа с неполными данными Работа с неполными данными Некорректная интерпретация значений, возвращаемых вызываемой функцией Некорректная интерпретация значений, возвращаемых вызываемой функцией

«Накопительное» (Incremental) интеграционное тестирование При данном подходе модули добавляются по одному за раз и тестируется получаемая система Возможны два подхода: Сверху вниз Сверху вниз Снизу вверх Снизу вверх

Плюсы и минусы данных подходов Сверху вниз Сверху вниз Начинаем в головного модуляНачинаем в головного модуля Используем затычки для модулей более низкого уровняИспользуем затычки для модулей более низкого уровня Добавление идет по нисходящейДобавление идет по нисходящей Плюс: позволяет выявить ошибки в архитектуре Минус: огромное количество затычек Снизу вверх Снизу вверх Начинаем с юнитов находящихся внизу иерархииНачинаем с юнитов находящихся внизу иерархии Драйвер эмулирует юниты более высокого уровняДрайвер эмулирует юниты более высокого уровня Добавление юнитов идет по восходящейДобавление юнитов идет по восходящей Плюс: более эффективно по времени тестирования Минус: выше вероятность ошибок в архитектуре

Thread тестирование Описание: 1.Выбирается определенная функциональность 2.Интегрируются только модули, отвечающие за данную функциональность 3.Проверяется, насколько корректно программа справляется с данной задачей

Подход Microsoft Плюсы данного подхода Минимизация риска при интеграции Минимизация риска при интеграции Повышается качество Повышается качество Уменьшается время на поиск ошибок Уменьшается время на поиск ошибок Точные данные о состоянии системы Точные данные о состоянии системы Обратная связь от клиентов с ранних этапов Обратная связь от клиентов с ранних этапов Microsoft Daily Build and Smoke Test - integrate early, integrate often

Системное тестирование Проверяется состояние всей системы целиком Проверяется состояние всей системы целиком Проверяется работа системы в реальном окружении Проверяется работа системы в реальном окружении Проверяются внешние характеристики системы (требования по ресурсам, быстродействие) Проверяются внешние характеристики системы (требования по ресурсам, быстродействие) Обратная связь с пользователями (бета- тестирование) Обратная связь с пользователями (бета- тестирование)

Проблемы, выявляемые на системном тестирование Падения на реальных данных Падения на реальных данных Недостающая функциональность Недостающая функциональность Некорректная функциональность Некорректная функциональность Проблемы с производительностью Проблемы с производительностью Проблемы с безопасностью Проблемы с безопасностью Недостаточное тестовое покрытие Недостаточное тестовое покрытие

Аттестационное тестирование Проверяется, насколько программа соответствует ожиданиям конечных пользователей Проверяется, насколько программа соответствует ожиданиям конечных пользователей Проверка идет на реальной машине, а не на тестовых серверах Проверка идет на реальной машине, а не на тестовых серверах Проверка идет на реальных данных, а не на тестовых Проверка идет на реальных данных, а не на тестовых Проверяется, насколько доступно описание в документации («коридорное тестирование») Проверяется, насколько доступно описание в документации («коридорное тестирование») Проводится с представителями заказчика (либо с кем-либо из будущих пользователей программы) Проводится с представителями заказчика (либо с кем-либо из будущих пользователей программы) Проверка жизнеспособности программы (длительная работа в реальном режиме) Проверка жизнеспособности программы (длительная работа в реальном режиме)

Ошибки, всплывающие на данном этапе Чрезмерная сложность внутренней логики Чрезмерная сложность внутренней логики Стрессовое тестирование/ситуации гонок Стрессовое тестирование/ситуации гонок Обработка сложных ситуаций Обработка сложных ситуаций Реакция на некорректные и непредусмотренные данные Реакция на некорректные и непредусмотренные данные

Критерии классификации тестов По затрагиваемой функциональности Тестирование «вширь» Тестирование «вширь» Тестирование «вглубь» Тестирование «вглубь» Реальные данные Реальные данные

Критерии классификации тестов По проверяемым данным Позитивные тесты Позитивные тесты Негативные тесты Негативные тесты Тесты, проверяющие ограничения данной версии Тесты, проверяющие ограничения данной версии Тесты на точность Тесты на точность