Читайте также:
|
|
(Здесь модуль – это процедура или функция)
Результат внешнего проектирования модуля – внешняя спецификация. Она содержит сведения, необходимые внешним вызывающим модулям, и не более. Содержит следующие сведения:
· Имя модуля (используется для вызова модуля)
· Функция – дается краткое определение функции, выполняемой в модуле
· Параметры – их список и назначение
· Входные параметры – более подробно: определение, формат, диапазон допустимых значений
· Выходные параметры – аналогично входным должна быть описана функциональная связь между входными и выходными
· Внешние события при работе модуля: чтение и запись в файл, печать, выдача ошибки
Последний этап проектирования – описание внутренней логики любого модуля, которое в дальнейшем предполагает использование 2 концепций: структурного программирования и пошаговой детализации.
Структурное программирование развивалось в 60-е годы (классич. Дейкстры). Дейкстра назвал 3 конструкции: следование, развилка и цикл, - и доказал, что с их помощью можно написать любую программу. Дополнительные конструкции: do-while, switch-case, goto.
При описании этого этапа алгоритм, реализуемый модулем, описывался либо языком псевдокода (со временем стал использоваться чаще), либо блок-схемами (сейчас блок-схемы никто не делает). Пошаговая детализация: первоначально выражаем в терминах языка программирования высокого уровня – блок-схемы либо псевдокод, а потом последовательно детализируется – и так до уровня языка программирования написания программы.
Тестирование ПО
Преимущества “стеклянного ящика”:
· Программа может быть протестирована по частям: можно выбрать любой модуль, метод класса и т. д. и передать интересующие данные
· Полный охват кода
· Программист всегда знает, какая функция должна выполнятся следующей и каким должно быть ее текущее состояние (возможно использование отладчика)
· Отслеживание целостности данных
· В исходном коде всегда видны граничные точки программы – например, при каких условиях идет переключение на какой алгоритм. В черном ящике протестировать все граничные точки сложно
Стеклянный ящик, как правило, используется программистом в процессе написания программы.
Тестировщик черного ящика работает с программой извне, как это бы делал пользователь (даже через пользовательский интерфейс). Тестировщик не знает код, хотя ему желательно иметь представление об основных особенностях.
Группы:
Структурное и функциональное. Главная идея структурного тестирования – правильный выбор тестируемого пути. Для выбора путей используются специальные критерии, называемые критериями обхвата (полноты):
1. Критерий обхвата строк
2. Критерий обхвата ветвлений
3. Критерий обхвата условий
Строк – наиболее слабый, требует чтобы при тестировании любая строка кода была выполнена всего один раз.
Ветвлений – на любом if идем в оба условия.
Условий – проверить все переменные для оператора if для любого из условий. Наиболее сильный критерий.
Функциональное тестирование – черного ящика. Любая функция системы тестируется путем ввода входных данных и анализа выходных. Используются правильные и неправильные данные. Внутренняя структура программы не учитывается.
Любая система разрабатывается по частям, можно из тестировать по частям, а потом в целом. Можно выделить 2 стратегии:
1) Восходящая – тестируются самые нижние уровни иерархии, потом использующие их модули и т. д.
2) Нисходящая – сначала тестируется самый верхний уровень иерархии, а затем нижние
Достоинства восходящего:
1. Это прекрасный способ локализации ошибок
2. Восходящее тестирование проводится, как правило, более тщательно, так как тестировщик сконцентрирован на очень узкой области
Главный недостаток – необходимость написания специальной оболочки, которая имитирует среду, вызывающую эти нижние уровни иерархии.
При нисходящем необходимость написания оболочек отпадает, но бывает нужно писать заглушки – эмуляторы работы модулей. Если б заглушек не было, мы бы не поняли, где именно у нас ошибки – вверху или внизу. Написание оболочек и заглушек замедляет работу, кроме того, они не нужны в готовом продукте.
Обе технологии – восходящую и нисходящую называют инкрементальными, т. е. пошаговыми.
Когда тестируется система целиком, это называется интеграционным тестированием. В противоположность инкрементальному, существует стратегия целостного тестирования: до интеграции в систему модули не проходят особо тщательного тестирования. Преимущества – не надо писать дополнительный код. Недостатки:
1) Очень трудно выявить источник ошибки (ошибки могут накладываться друг на друга)
2) Трудно организовать исправление ошибок
Дата добавления: 2015-04-26; просмотров: 21 | Поможем написать вашу работу | Нарушение авторских прав |