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