'

Тестирование программных средств

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

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


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

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


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

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


Слайд 17

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


Слайд 18

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


×

HTML:





Ссылка: