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

Содержание

Слайд 2

Оглавление

Классификация метрик сложности
Статические метрики сложности
Цикломатическая сложность
Анализ тестового покрытия
Различные методы оценки тестового покрытия,

Оглавление Классификация метрик сложности Статические метрики сложности Цикломатическая сложность Анализ тестового покрытия
их сравнение

Слайд 3

Классификация метрик качества

Две группы признаков:
метрики производительности, качества продукции и технические характеристики продукта
Производительность

Классификация метрик качества Две группы признаков: метрики производительности, качества продукции и технические
– результирующий продукт
Качество - соответствие явным и подразумеваемым требованиям пользователя, т.е. пригодность изделия к использованию
Технические метрики в большей степени относятся к особенностям программного изделия, а не к процессу его разработки (например, логическая сложность изделия, модульность проекта и т.п.)

Слайд 4

Классификация метрик качества

2. группы метрик по их ориентации
Размеро-ориентированные метрики
сбор результатов

Классификация метрик качества 2. группы метрик по их ориентации Размеро-ориентированные метрики сбор
прямых измерений программного продукта и его качества, а так же процесса разработки
Функционально-ориентированные метрики
косвенно характеризуют функциональное назначение продукта и особенности его входных и выходных данных
Человеко-ориентированные метрики
косвенно позволяют судить о том, как персонал (разработчики и пользователи) оценивают эффективность и качество работы программного продукта, удобство взаимодействия с ним, простоту обучения и т.д.

Слайд 5

Статические метрики сложности

Объектно-ориентированные показатели:
число классов;
максимальная глубина класса в дереве наследования;

Статические метрики сложности Объектно-ориентированные показатели: число классов; максимальная глубина класса в дереве
число классов, связанных с данным классом (связь между классами
объектов);
число непосредственных подклассов (число дочерних классов);
число методов экземпляра;
число локальных методов (взвешенные методы на класс);
число методов, включая унаследованные;
число локальных дружественных методов;
число локальных общих методов;
число локальных частных методов;
число переменных экземпляра;
число используемых входных данных (параметров, глобальных
переменных);
число непосредственных базовых классов;
число используемых выходных данных (параметров, глобальных
переменных);
недостаток связности - 100% минус средняя связность для компонентов
данных класса.

Слайд 6

Статические метрики сложности

Показатели сложности:
цикломатическая сложность;
«модифицированная» цикломатическая сложность;
«строгая» цикломатическая сложность;

Статические метрики сложности Показатели сложности: цикломатическая сложность; «модифицированная» цикломатическая сложность; «строгая» цикломатическая
средняя цикломатическая сложность для всех вложенных функций или методов;
средняя «модифицированная» цикломатическая сложность для всех
вложенных функций или методов;
средняя «строгая» цикломатическая сложность для всех вложенных
функций или методов;
максимальная цикломатическая сложность для всех вложенных функций или методов;
максимальная «модифицированная» цикломатическая сложность для всех вложенных функций или методов;
максимальная «строгая» цикломатическая сложность для всех вложенных функций или методов;
максимальный уровень вложенности управляющих конструкций.

Слайд 7

Статические метрики сложности

Показатели размера/объема
число файлов;
число функций;
число операторов;
число

Статические метрики сложности Показатели размера/объема число файлов; число функций; число операторов; число
декларативных операторов;
число выполняемых операторов;
полное число строк;
число пустых строк;
число строк, содержащих исходный код;
число строк, содержащих декларативный исходный код;
число строк, содержащих выполняемый исходный код;
число строк, содержащих комментарии;
число строк комментариев, деленное на число строк кода, умноженное на 100 (процент комментариев);
среднее число строк для всех вложенных функций или методов;
среднее число пустых строк для всех вложенных функций или методов;
среднее число строк, содержащих исходный код, для всех вложенных
функций или методов;
среднее число строк, содержащих комментарии, для всех вложенных
функций или методов.

Слайд 8

Цикломатическая сложность

Цикломатическая сложность – это показатель сложности структуры модуля (число независимых маршрутов

Цикломатическая сложность Цикломатическая сложность – это показатель сложности структуры модуля (число независимых
в модуле).
Направления использования ЦС
Дает рекомендуемое число тестов для ПО.
Используется в течение всех фаз жизненного цикла ПО, начиная с разработки, для обеспечения необходимого уровня надежности, тестируемости и управляемости.

Слайд 9

Цикломатическая сложность

графа управляющей логики (control flow graph) модуля ПО:
вычислительные операторы или выражения

Цикломатическая сложность графа управляющей логики (control flow graph) модуля ПО: вычислительные операторы
изображаются в виде узлов
передача управления между узлами – в виде дуг
Формула вычисления ЦС:
С = e – n + 2,
где e и n – число ребер и число узлов на графе управляющей логики соответственно.

Слайд 10

Цикломатическая сложность

Упрощенный метод вычисления ЦС:
модуль с прямолинейным графом управляющей логики (из каждого

Цикломатическая сложность Упрощенный метод вычисления ЦС: модуль с прямолинейным графом управляющей логики
узла, за исключением узла выхода, выходит ровно одна дуга) имеет цикломатическую сложность, равную 1
Каждый оператор двоичного выбора (на графе управляющей логики – узел, из которого выходят ровно 2 дуги; например, if, while) увеличивает цикломатическую сложность на 1
Формула вычисления:
C = 1 + P2,
где P2 – число операторов двоичного выбора.
Более общий случай:
C = 1 + P2 + 2*P3 + 3*P4 + …
где Pk – число операторов выбора из k альтернатив (на графе управляющей логики узел, из которого выходят k дуг).

Слайд 11

Цикломатическая сложность

Вариации метрики ЦС:
«модифицированная ЦС»
при подсчете операторы выбора (case) не учитываются; считается,

Цикломатическая сложность Вариации метрики ЦС: «модифицированная ЦС» при подсчете операторы выбора (case)
что оператор switch как одно целое увеличивает цикломатическую сложность на 1
Строгая ЦС
при подсчете учитываются операторы «&&» и «||» (считается, что каждый из них добавляет 1 к цикломатической сложности)

Слайд 12

Цикломатическая сложность

Алгоритм вычисления
Мера сложности простого оператора равна 1;
М ({F1; F2; …;Fn}) =

Цикломатическая сложность Алгоритм вычисления Мера сложности простого оператора равна 1; М ({F1;
Σin M(Fi);
М (IF P THEN F1 ELSE F2) = 2 MAX (M (F1), M (F2));
М (WHILE P DO F) = 2 M(F).
Классический подход к оценке результатов рассчета цикломатической сложности:

Слайд 13

Анализ тестового покрытия

Оценивает не только тестируемую программу, но и набор тестов
Совмещает тестирование

Анализ тестового покрытия Оценивает не только тестируемую программу, но и набор тестов
«черного» и «стеклянного» ящика
Решает следующие проблемы:
Локализация кода, не имеющего тестового покрытия;
Определение модулей, требующих дополнительное тестирование;
Определение тестовых наборов, которые покрывают наибольший и наименьший набор исходных тесктов; определение пересечений тестовых пакетов по проверяемому коду;
Определение численной меры покрытия, которая является косвенной характеристикой качества продукта

Слайд 14

Анализ тестового покрытия

Определяется как отношением исполненных хоть раз единиц структурных единиц (блоков/узлов/дуг/…)

Анализ тестового покрытия Определяется как отношением исполненных хоть раз единиц структурных единиц
к их общему количеству
Оценки для разных структурных единиц взаимосвязаны, требуется четко определить какую из них использовать?
Рассмотрим с точки зрения следующих критериев:
Автоматизация
Достижимость
Понятность
Изменяемость
Тщательность

Слайд 15

Покрытие строк

Покрытие строк = s/S
где:
s - число строк, выполненных по крайней мере

Покрытие строк Покрытие строк = s/S где: s - число строк, выполненных
однажды.
S - общее количество выполнимых строк.
Характеристики:
Автоматизация 5
Достижимость 5
Постижимость 5
Изменяемость 5
Тщательность 1

Слайд 16

Покрытие дуг

Покрытие дуг = d/D
где:
d - число дуг, выполненных по крайней мере

Покрытие дуг Покрытие дуг = d/D где: d - число дуг, выполненных
однажды.
D - общее количество дуг.
Характеристика:
Автоматизация 5
Достижимость 5
Постижимость 5
Изменяемость 5
Тщательность 2

Слайд 17

Покрытие линейных блоков

Под линейным блоком мы будем понимать непрерывную линейную последовательность строк:
А.

Покрытие линейных блоков Под линейным блоком мы будем понимать непрерывную линейную последовательность
которая начинается или в начале программы или в точке, к которой управление может перейти
B. который заканчивается или в конце программы или в точке, от которой управление может куда-либо перейти
C. и точку, к которой будет сделан переход после данной последовательности команд.
Покрытие линейных блоков = l/L
где:
l - число линейных блоков, выполненных по крайней мере однажды.
L - общее количество линейных блоков.
Характеристика:
Автоматизация 4
Достижимость 1
Постижимость 1
Изменяемость 2
Тщательность 3

Слайд 18

Покрытие путей выполнения

Покрытие путей выполнения = p/P
где:
p - число путей, выполненных по

Покрытие путей выполнения Покрытие путей выполнения = p/P где: p - число
крайней мере однажды.
P - общее количество путей.
Покрытие путей исполнения рассматривает полные пути исполнения для всей программы. Например, если модуль содержит цикл, тогда существуют пути исполнения модуля для одной итерации, для двух итераций и так далее до n итераций цикла.
Только небольшое число путей исполнения в программе выполнимо.
Для того чтобы сделать охват путей исполнения достижимым, метрику следует ограничить покрытием выполнимых путей исполнения.

Слайд 19

Покрытие выполнимых путей исполнения

Покрытие выполнимых путей исполнения = f/F
где:
f = число путей,

Покрытие выполнимых путей исполнения Покрытие выполнимых путей исполнения = f/F где: f
выполненных по крайней мере однажды.
F = общее количество выполнимых путей
Характеристика:
Автоматизация 1
Достижимость 1 (выполнимые 3)
Постижимость 2
Изменяемость 2 (выполнимые 1)
Тщательность 4

Слайд 20

Покрытие условий

Покрытие условий = c/C
где:
c = число условий, выполненных по крайней мере

Покрытие условий Покрытие условий = c/C где: c = число условий, выполненных
однажды.
C = общее количество условий.
Охват условий уязвим к набору флагов вне условного оператора. А так как использование булевых выражений с флагами для упрощения сложных условных операторов является распространенной практикой в программировании, тщательность покрытия условий оказывается не такой высокой, как могла бы быть.
Тщательность может быть улучшена, если включить все булевы выражений в охват условий.
Покрытие Булевых условий = e/E
где:
e = число значений булевых условий, выполненных по крайней мере однажды.
E = общее количество булевых условий
Характеристика:
Автоматизация 4
Достижимость 5
Постижимость 5
Изменяемость 5
Тщательность 2 (Булевые 3)

Слайд 21

Покрытие условных операторов

Покрытие условных операторов = o/O
где:
o - число комбинаций условия, выполненных

Покрытие условных операторов Покрытие условных операторов = o/O где: o - число
по крайней мере однажды.
O - общее количество комбинаций условных операторов
Автоматизация 4
Достижимость 4
Постижимость 4
Изменяемость 5
Тщательность 3

Слайд 22

Покрытие эффективности булевых операндов

Покрытие эффективности булевых операндов = b/B
где:
b = число булевых

Покрытие эффективности булевых операндов Покрытие эффективности булевых операндов = b/B где: b
операндов, независимо влиющих на результат выражения.
B = общее количество булевых операндов.
Характеристика:
Автоматизация 3
Достижимость 5
Постижимость 5
Изменяемость 5
Тщательность 4
Имя файла: Тестирование-программных-средств.pptx
Количество просмотров: 69
Количество скачиваний: 0