Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
86.37 Кб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Группы:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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