Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек-кач-12.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
284.16 Кб
Скачать

10

12 Аналитическая проверка корректности программ

12.1 Верификация программ.

Корректность является статическим свойством ПО, поскольку она:

  • не зависит от времени (если не изменяются цели разработки);

  • отражает специфику ошибок разработки функционально-законченных единиц (ошибок проекта и кодирования).

Два свойства корректности ПО ( с учётом специфики проявления ошибок в ПО в процессе их выполнения на ПК ) :

  • частичную корректность – это удовлетворение внешним (входной и выходной) спецификациям ПО при условии завершения его выполнения;

  • завершенность – это достижение в процессе формирования выхода ПО ( при определенных входной спецификацией данных).

Если есть циклические и рекурсивные вычисления или наличия частично-определенных операций, то свойство завершенности не тривиально. Случаи, когда свойство завершенности не удовлетворяется, довольно обычны для ПО, которое содержит ошибки, не описанные спецификацией.

Каждое из двух выделенных свойств корректности программы может удовлетворяться или не удовлетворяться. Таким образом, можно выделить шесть основных задач анализа корректности приложения:

  • частичная корректность (при условии завершенности);

  • завершенность программы;

  • незавершенность программы;

  • тотальная корректность (частичная корректность и завершенность);

  • частичная некорректность (некорректность при условии завершенности);

  • некорректность (незавершенность или частичная некорректность).

ВЫВОД. Эти шесть задач направлены на уменьшение сложности верификации ПО..

12.2 Объекты тестирования

Тест – это набор входных значений, условий выполнения и ожидаемых значений на выходе, разработанных для проверки конкретного пути выполнения программы.

С точки зрения тестирования наиболее значимыми являются следующие объекты программного проекта:

  • спецификации программных модулей, групп программ и программных комплексов;

  • программные модули (код программных модулей);

  • группы программ, решающие законченные функциональные задачи;

  • комплексы программ, для которых завершены все виды отладки;

  • программные средства, подлежащие испытаниям перед сдачей в эксплуатацию;

  • сопровождаемый программный продукт до завершения его жизненного

цикла.

Эти объекты различаются сложностью тестирования, уровнем теоретической разработки методов и существующей степенью автоматизации процесса тестирования.

Состояние теории и практики тестирования на рис.12.1 (нумерация объектов на рисунке соответствует списку объектов тестирования).

1 2 3 4 5 6

С

Объекты тестирования

пецификации Модули Группы Комплексы Прогр. Программный

программ программ ср-ва продукт

Рис.12.1.

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

Программный продукт, как объект тестирования, имеет ряд особенностей, которые отличают процесс его тестирования.

  • Отсутствие полностью определенного единого эталона, которому должны соответствовать все результаты тестирования проверяемой программы. На практике для тестирования используются в качестве эталонов косвенные данные, которые не полностью отражают функции и его характеристики.

  • Высокая сложность программ и принципиальная невозможность построения тестовых наборов, достаточных для исчерпывающего тестирования;

Комплексы программ, используемые для управления и обработки информации, являются одними из самых сложных изделий, создаваемых человеком. Поэтому тестирование проводится в объемах, минимально необходимых для проверки ПО в некоторых ограниченных пределах изменения параметров и условий функционирования. Ограниченность ресурсов тестирования привела к необходимости тщательного упорядочивания применяемых методов и конкретных значений параметров с целью получения при тестировании наибольшей глубины проверок программ.

  • Наличие в ПО вычислительных и логических компонент, характеризующихся стохастическим и динамическим поведением, осуществляющие:

    • преобразования данных;

    • формирование принятия логических решений;

    • обработки логических и символьных переменных.

  • Относительно невысокая степень формализации критериев завершения процесса тестирования и оценки качества тестирования.

Показатели качества сложных комплексов программ трудно формализуются и еще более трудно измеряются. Поэтому оценка полноты тестирования и достигаемого при этом качества ПО обычно получаются в процессе испытаний и сопровождения.

Наиболее формализованным является тестирование спецификаций, которые содержат “наименьшее количество информации” о программах среди всех рассматриваемых объектов. По мере перехода от модуля к группе и комплексу программ сложность тестирования каждого отдельного объекта быстро возрастает. Тестирование ПО при комплексной отладке, испытаниях и сопровождении по степени сложности примерно одинаково. Интегральная сложность и трудоемкость тестирования всей совокупности программных модулей, входящих в комплекс, может быть выше, чем сложность тестирования при испытаниях и сопровождении

Уровень теоретической разработки методов тестирования значительно зависит от объектов. Наиболее полно в настоящее время исследованы методы тестирования программных модулей и небольших групп программ, написанных с использованием процедурных языков программирования. Менее исследованными остаются методы и теория тестирования групп программ, написанных с использованием объектно-ориентированных языков программирования. Мало исследованными являются методы и теория тестирования в процессе отладки, испытаний и сопровождения крупных комплексов программ.

Степень автоматизации тестирования или, точнее, относительные затраты на его обеспечение значительно возрастают по мере увеличения сложности объектов тестирования. Автоматизация тестирования отстает от потребностей практики.

Наиболее автоматизировано тестирование модулей и групп программ, написанных с использованием процедурных языков программирования.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]