- •По тестированию программного обеспечения
- •Способы обеспечения качества программного продукта
- •Организация тестирования
- •Спецификация программы
- •Разработка тестов
- •Управляющий граф программы
- •Основные проблемы тестирования
- •Критерии выбора тестов
- •Требования к идеальному критерию
- •Классы критериев
- •Структурные критерии
- •Функциональные критерии
- •Стохастические критерии
- •Мутационный критерий
- •Оценка покрытия программы и проекта
- •Методика интегральной оценки тестирования
- •Разновидности тестирования
- •Пользовательское тестирование
- •Качественные и количественные требования согласованности по скорости восприятия графической информации пользователем
- •Модульное тестирование
- •Особенности интеграционного тестирования для объектно-ориентированного программирования
- •Системное тестирование
- •Комбинирование уровней тестирования
- •Особенности индустриального тестирования
- •Автоматизация тестирования
- •Издержки тестирования
- •Качество программного продукта
- •Фазы процесса тестирования
- •Планирование тестирования
- •Типы тестирования
- •Подходы к разработке тестов
- •Документация и сопровождение тестов
- •Оценка качества тестов
- •Нагрузочное тестирование
- •Основные этапы нагрузочного тестирования
- •Основные виды нагрузочных тестов
- •Основные инструменты формирования нагрузки и сбора статистики при выполнении нагрузочного тестирования
- •Регрессионное тестирование
- •Цели и задачи регрессионного тестирования
- •Виды регрессионного тестирования
- •Управляемое регрессионное тестирование
- •Обоснование корректности метода отбора тестов
- •Классификация тестов при отборе
- •Возможности повторного использования тестов
- •Классификация выборочных методов
Мутационный критерий
Мутационный критерий — подход, позволяющий на основе мелких ошибок оценить общее число ошибок, оставшихся в программе.
Мутации — мелкие ошибки в программе;
Мутанты — программы, отличающиеся друг от друга мутациями;
Метод мутационного тестирования — в разрабатываемую программу
вносят мутации, т.е. искусственно создают
программы-мутанты
,
...,
а затем программа
и ее мутанты тестируются на одном и том
же наборе тестов
.
Если на наборе подтверждается правильность программы и выявляются все внесенные в программы-мутанты ошибки, то набор тестов соответствует мутационному критерию, а тестируемая программа объявляется правильной.
Если некоторые мутанты не выявили всех мутаций, то надо расширять набор тестов и продолжать тестирование.
Оценка покрытия программы и проекта
Тестирование
программы
по некоторому критерию
— покрытие множества компонентов
программы
множеством неизбыточных тестов
,
где тест
неизбыточен, если существует покрытый
им компонент
из
,
не покрытый ни одним из предыдущих
тестов
;
каждому
соответствует неизбыточный путь
— последовательность вершин от входа
до выхода.
— сложность тестирования
по критерию
,
измеряемая максимальным числом
неизбыточных тестов, покрывающих все
элементы множества
.
— остаточная сложность тестирования
по критерию
,
измеряемая максимальным числом
неизбыточных тестов, покрывающих
элементы множества
,
оставшиеся непокрытыми, после прогона
набора тестов
(строго и монотонно убывает от
до
).
Оценка степени оттестированности по критерию .
Критерий
окончания тестирования:
,
где
— уровень оттестированности, заданный
в требованиях (
).
Рисунок 14.3
Методика интегральной оценки тестирования
Выбор критерия и значения уровня оттестированности (приемочной оценки тестированности) ПО.
Построение древа классов проекта и построение управляющего графа программы для каждого модуля.
Модульное тестирование и оценка степени тестированности по критерию на модульном уровне.
Построение управляющего графа программы, интегрирующего модули в единую иерархическую (классовую) модель проекта.
Выбор тестовых путей для проведения интеграционного или системного тестирования.
Генерация тестов, покрывающих тестовые пути шага 5.
Интегральная оценка тестированности ПО с учетом оценок тестированности модулей — компонентов.
Повторение шагов 5-7 до достижения заданного уровня тестированности программного обеспечения.
Разновидности тестирования
Разновидности тестирования: модульное, интеграционное, системное, регрессионное, автоматизация тестирования, издержки тестирования.
Модульное тестирование — тестирование программы на уровне отдельно взятых модулей, функций или классов. Цель модульного тестирования — в выявлении ошибок в модуле, а также в определении степени готовности системы к переходу на следующий уровень разработки и тестирования. Проводится по принципу «белого ящика», то есть основывается на знании внутренней структуры программы.
Интеграционное тестирование — тестирование части системы, состоящей из 2-х и более модулей. Основная задача интеграционного тестирования — поиск дефектов, связанных с ошибками в реализации интерфейсного взаимодействия между модулями.
Системное тестирование рассматривает систему в целом и применяется на уровне пользовательских интерфейсов. Основная задача системного тестирования — выявление дефектов, связанных с работой системы в целом, таких как неверное использование ресурсов системы, несовместимость с окружением, отсутствующая или неверная функциональность, неудобство в использовании и т.п.
Регрессионное тестирование — вид тестирования, который производится при внесении изменений на этапе системного тестирования или сопровождения продукта.
Если модифицированный код оказал влияние на функциональность программы (на этапе сопровождения), то говорят о регрессионном эффекте.
Автоматизация тестирования — использование специального ПО для выполнения и контроля выполнения тестов, а также сравнения ожидаемого и фактического результатов работы. Автоматизация позволяет осуществлять выполнение рутинных и нужных для максимизации тестового покрытия задач.
Издержки тестирования. Чем больше трудозатрат вкладывается в процесс тестирования, тем меньше ошибок в продукте остается незамеченными. Но также падает эффективность обнаружения.
