АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Внешнее проектирование модуля

Читайте также:
  1. GIP-M. АВТОМАТИЗИРОВАННОЕ ПРОЕКТИРОВАНИЕ ДОРОГ
  2. IV. Выбор и проектирование инновационных образовательных технологий
  3. Виграш демодулятора при оптимальному прийманні неперервних сигналів
  4. ДИПЛОМНОЕ ПРОЕКТИРОВАНИЕ
  5. ДРУГОГО ЗМІСТОВОГО МОДУЛЯ
  6. Ефективність систем передачі неперервних сигналів різних методів модуляції
  7. З навчального модуля
  8. Задание на дипломное проектирование
  9. Задание на проектирование
  10. Иммуномодуляция и иммунокоррекция при раневой инфекции
  11. Компетенции обучающегося, формируемые в процессе освоения дисциплины (дисциплинарного модуля)

(Здесь модуль – это процедура или функция)

Результат внешнего проектирования модуля – внешняя спецификация. Она содержит сведения, необходимые внешним вызывающим модулям, и не более. Содержит следующие сведения:

· Имя модуля (используется для вызова модуля)

· Функция – дается краткое определение функции, выполняемой в модуле

· Параметры – их список и назначение

· Входные параметры – более подробно: определение, формат, диапазон допустимых значений

· Выходные параметры – аналогично входным должна быть описана функциональная связь между входными и выходными

· Внешние события при работе модуля: чтение и запись в файл, печать, выдача ошибки

Последний этап проектирования – описание внутренней логики любого модуля, которое в дальнейшем предполагает использование 2 концепций: структурного программирования и пошаговой детализации.

Структурное программирование развивалось в 60-е годы (классич. Дейкстры). Дейкстра назвал 3 конструкции: следование, развилка и цикл, - и доказал, что с их помощью можно написать любую программу. Дополнительные конструкции: do-while, switch-case, goto.

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

Тестирование ПО

Преимущества “стеклянного ящика”:

· Программа может быть протестирована по частям: можно выбрать любой модуль, метод класса и т. д. и передать интересующие данные

· Полный охват кода

· Программист всегда знает, какая функция должна выполнятся следующей и каким должно быть ее текущее состояние (возможно использование отладчика)

· Отслеживание целостности данных

· В исходном коде всегда видны граничные точки программы – например, при каких условиях идет переключение на какой алгоритм. В черном ящике протестировать все граничные точки сложно

Стеклянный ящик, как правило, используется программистом в процессе написания программы.

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

Группы:

Структурное и функциональное. Главная идея структурного тестирования – правильный выбор тестируемого пути. Для выбора путей используются специальные критерии, называемые критериями обхвата (полноты):

1. Критерий обхвата строк

2. Критерий обхвата ветвлений

3. Критерий обхвата условий

Строк – наиболее слабый, требует чтобы при тестировании любая строка кода была выполнена всего один раз.

Ветвлений – на любом if идем в оба условия.

Условий – проверить все переменные для оператора if для любого из условий. Наиболее сильный критерий.

Функциональное тестирование – черного ящика. Любая функция системы тестируется путем ввода входных данных и анализа выходных. Используются правильные и неправильные данные. Внутренняя структура программы не учитывается.

Любая система разрабатывается по частям, можно из тестировать по частям, а потом в целом. Можно выделить 2 стратегии:

1) Восходящая – тестируются самые нижние уровни иерархии, потом использующие их модули и т. д.

2) Нисходящая – сначала тестируется самый верхний уровень иерархии, а затем нижние

Достоинства восходящего:

1. Это прекрасный способ локализации ошибок

2. Восходящее тестирование проводится, как правило, более тщательно, так как тестировщик сконцентрирован на очень узкой области

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

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

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

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

1) Очень трудно выявить источник ошибки (ошибки могут накладываться друг на друга)

2) Трудно организовать исправление ошибок


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)