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

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



Advertisements
Похожие презентации
Автоматизированное тестирование. Процесс верификации программного обеспечения, при котором основные функции и шаги теста, такие как запуск, инициализация,
Advertisements

Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
ОСНОВЫ ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММ. Разработка программ - промышленное производство необходима технология разработки программ. Д. Кнут «Искусство программирования.
Unit-тестирование и метрики покрытия кода тестами Сергей Андреев, JetBrains 29 февраля 2012.
Расширение технологии UniTESK средствами генерации структурных тестов Дмитрий Воробьев
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Этапы решения задач на компьютерах Постановка задачи Формальное построение модели задачи Формальное построение модели задачи Построение математической.
Тестирование программных средств Сафронов Сергей, 2007 год.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 7.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Прогнозирование сложности проектирования заказных программных продуктов Презентация на тему: Проверил: Б.М.МихайловВыполнил: Д.Ю.Ермилов 2017.
Условный оператор. Определение линейного алгоритма. Линейный алгоритм – это алгоритм, этапы которого выполняются однократно и строго последовательно.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 3.
Лекция 5. Модели надежности программного обеспечения Учебные вопросы: 1. Классификация моделей надежности 2. Аналитические модели надежности 3. Эмпирические.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
Анализ вычислительной сложности алгоритмов Теория сложности вычислений.
Контроль знаний Экспресс - контроль. Постановка задачи структурного синтеза.
Алгоритм как модель деятельности. Что такое алгоритмическая модель Алгоритм- это понятное и точное предписание конкретному исполнителю совершить конечную.
Транксрипт:

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

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

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

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

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

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

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

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

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

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

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

Цикломатическая сложность Алгоритм вычисления Мера сложности простого оператора равна 1; М ({F1; F2; …;Fn}) = Σin M(Fi); М (IF P THEN F1 ELSE F2) = 2 MAX (M (F1), M (F2)); М (WHILE P DO F) = 2 M(F). Классический подход к оценке результатов рассчета цикломатической сложности: Сложность программыВероятность ошибок 1 – 10Простая функция, ошибки маловероятны 11 – 20Более сложная, средняя вероятность ошибок 21 – 50Сложная, велика вероятность ошибок 51 и болееНе тестируемая (риск очень велик)

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

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

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

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

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

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

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

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

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

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

Сводная таблица методов Метрика покрытия Критерий оценки Автомати- зируемость Дости- жимость Понятность Изменя- емость Тщатель- ность Покрытие строк55551 Покрытие дуг55552 Покрытие линейных блоков41123 Покрытие путей исполнения11224 Покрытие выполнимых путей исполнения Покрытие условий45552 Покрытие булевых условий45553 Покрытие условных операторов Покрытие булевых операторов Покрытие эффективности булевых операторов 35554