Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АПCОС_ЛЕКЦИИ_10.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.46 Mб
Скачать

2.4.2 Структурные карты Джексона

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

У правление

обслуживанием

Главный цикл

Ожидать ввод Получить Произвести Удалить

кредитной пароль обслуживание кредитную

карты карту

Перейти к

обслуживанию

Получить запрос на обслуживание Обработать запрос

Рисунок 2.3 - Пример структурной карты Джексона

С1 – корректный контроль

С1 0

Визуальный язык программирования спецификаций

ВЯПС позволяет структурировать описание хода, делать его более наглядным и автоматически генерировать код и текстовые документы.

Flow – форма

последовательное выполнение блоков

А

В

С

Рисунок

Комментарии помещаются в верхней части блока в виде обычного текста.

Пример.

For j=1 to n

do

… сравнить и поменять местами

If a[j].> a[j+1].

then

… поменять местами

If a[j].= a[j+1].

a[j+1] =temp

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

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

При каскадной модели на тестирование уходит до 40% времени.

Современные технологии проектирования предполагают параллельную или упреждающую разработку тестов.

Сложности тестирования

  1. Отсутствие эталона, которому должна соответствовать программа.

  2. Сложность программного обеспечения и отсутствие единой методики тестирования.

  3. Большой количество вариантов состояний системы, то есть отсутствие возможности полного тестирования.

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

Таким образом тестирование – деструктивный процесс.

Принципы тестирования.

  1. Тестирование более эффективно не автором программы, так как оценивается по количеству ошибок. Тестирование связано с отладкой, то есть исправлением ошибок.

  2. Необходимо делать описание предполагаемых значений результата. То есть тестовые наборы должны включать исходные данные и результат.

  3. Результаты каждого теста тщательно изучают. Как правило большинство ошибок находятся в начале тестирования.

  4. Тесты должны предусматриваться для исправленных и непредусмотренных данных. Причём тесты с данными вне ОДЕ обладают большой обнаруживающей способностью.

  5. Следует проверять не только то, что должна делать система, но и то что она делает, но не должна делать.

  6. Вероятность наличия необнаруженных ошибок в части программы пропорционально количеству уже обнаруженных ошибок в этой части.

Методы тестирования программ

Тестирование является частью процесса отладки.

Цель отладки – локализация ошибок и исправление их.

Отладка – процесс получения ПИ, которое функционирует с заданными характерами надёжности в заданной области изменения входных данных.

Схема отладки входных данных.

Рисунок

Разработка тестов для тестирования программных систем осуществляется постоянно.

Статическое тестирование - это формальный анализ текста программы на языке программирования. Это символическое тестирование.

Детерминированное тестирование – требует многократного выполнения программы на ЭВМ с использованием специального набора данных. Контролируется каждая комбинация данных, результаты расчётов для проверки каждого утверждения из спецификации программы.

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

Статистическое тестирование (вероятностное). Перебрать все возможные совокупности входных величин иногда невозможно. Поэтому используется множество специальных величин с соответствующими законами распределения. Рассматриваются законы распределения входных величин.

Метод Монте-Карло

После обнаружения ошибки, как правило применяют детерминированное тестирование. Этот вид наиболее удобен для автоматизации.

Тестирование в реальном масштабе времени

Для систем реального времени проверяются результаты обработки исходных данных с учётом времени их поступления, динамики использования памяти, длительности и приоритетности в обработке.

При обнаружении ошибки – переход к детерминированному тестированию.

Статистическое тестирование производят с использованием ручных методов. Обнаруживается 3—40% ошибок. Результаты рассматривают на совещании. Цель – обнаружение ошибок без исправления.

Процедуры статистического тестирования

  1. Инспекция исходного текста (4 чел). Текст изучается заранее, а также спецификация

  2. Выступает автор. Ему задают вопросы. Сквозные просмотры. Просматривается текст программы подряд.

  3. Динамические просмотры.

  4. Текст изучается в соответствии с переходами.

Методы проектирования тестовых наборов данных

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

Для численных методов решения, как правило, выбираются тестовые задачи, имеющие аналитическое решение и сравниваются результаты численного и аналитического решения

Например, для МКЭ в качестве тестовой используют задачу напряжения в цилиндре под действием внутренних сил.

Рисунок Детерминированное тестирование

Структурное тестирование осуществляется на основе изучения прогонки программы, т.е. многократного повторения программы с различными наборами данных, которые обеспечивают максимальное число маршрутов ее выполнения.

Функциональное тестирование программы осуществляется по типу вход- выход: проверяются спецификации программы.

Эффективный тестовый набор данных

Понятие введено, поскольку полный перебор невозможен. Данный участок приходится в цикле: n ≤ 20

N5=20*6 =120 – общее количество прогонов

Рисунок

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

Виды структурного тестирования

1. Покрытие операторов. Тестовый набор гарантирует выполнение всех операторов программы не менее 1 раза. Критерий слабый.

2. Покрытие узлов ветвления. Это тестовые наборы, обеспечивающие переход по веткам «истина» и «ложь» хотя бы 1 раз. В каждом узле ветвления. При этом обычно выполняется п.1

3. Покрытие условий. Если узел ветвления содержит несколько условий(>1) то каждое условие должно быть выполнено хотя бы раз.

Да: А>2 С=D А=3, С=0, D=0

Нет: А≤2 С≠D А=2, С=0, D=1

Рисунок

4. Комбинаторное покрытие условий. Все комбинации.

Методы функционального тестирования

1. Метод эквивалентного разбиения. Производят в два этапа:

  • выделение классов эквивалентности;

  • построение тестов.

Класс эквивалентности (КЭ) – Множество входных значений, обладающих одинаковой вероятностью обнаружения ошибок конкретного типа.

Классы эквивалентности выделяются путём анализа. Все входные значения делят на две или более группы. Одна группа из них правильная.

Таблица - Входные условия и классы эквивалентности.

Входные условия

Правильные КЭ

Неправильные КЭ

1

Идентификатор (И) содержит не более 8 символов

1 символа ≤ И ≤ 8 символов

а – И содержит 0 символов

б – И > 8 символов

в – И – не буква

с – И начинается с цифры

2

Способ передачи информации (набор значений)

Почта - 1

Телеграф – 2

e- mail - 3

Почта - 1

Телеграф – 2

e- mail - 3

а - SMS – 5

б - Авиапочта - 1

3

Первый символ – буква:

А, А1, 1А, 2А

Первый символ – буква:

А, В, а, в

а - первый символ цифра

б - первый символ подчёркивание

в – первый символ не буква

&, L,\, |, /

1. Если входные условия описывают ОДЗ от и до, то есть интервал, определяется 1, правильный КЭ внутри ОДЗ и два неправильных КЭ (больше и меньше ОДЗ).

2. Кроме того могут контролироваться границы ОДЗ.

3. Если описывается ситуация типа «должно быть», то выделяется один правильный КЭ и неправильные КЭ (≥ 1).

Кроме того выполняется анализ граничных условий. Например, если ОДЗ : от -1 до -1.

Рассматриваются варианты:

- 1,0 1,0…

-1,001 1,001

  1. Метод функциональных диаграмм (причинно-следственные связи).

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

Порядок разработки тестовых наборов данных

  1. Спецификации программы выделяются причины и следствия.

Причина – отдельное входное условие или класс эквивалентности для входных условий.

Следствие – выходные условия или результат преобразования данных в системе.

Каждой причине и следствию приписывается номер.

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

  2. Для связи вершин используются рёбра, которым ставятся в соответствие определённые булевские операции.

Тождество

Не

Или

И

  1. Диаграмма снабжается примечаниями, которые задают ограничения или возможные комбинации причин и следствий, т.е. исключаются невозможные варианты для снижения количеств тождеств в системе.

Ограничения

Ограничение Е – исключает, т.е. устанавливает, что a и b не может одновременно равняться «1».

Ограничение Е – исключает, т.е. устанавливает, что a и b не может одновременно равняться «1».

2 .

I – включает, то есть abили с обязательно не равны0

3 .

0 – одно и только одно. Устанавливает, что только одна из величин может быть равна «1»

R – требует, устанавливает, что если а=1, то и в=1

4 .

М - скрывает – является ограничением для следствий и устанавливает, что если ограничение а=1, то следствие в=0

Пример

22

Рисунок

Таблица решений

Варианты решений

Причины

1

2

3

0

-

Следствия

1

2

3

1

- варианты не влияют на состояние следствия.

В целом ни один из рассматриваемых методов не даёт 100% гарантии исключения ошибок, поэтому обычно используют совокупности методов, начиная от вероятностных, кончая детерминированным тестированием.

Рисунок Этапы технологического процесса проектирования программного изделия и его внедрение

Рисунок Этапы технологического процесса проектирования программного изделия и его внедрение