Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Отладка и тестирование многомодульной программы ⇐ ПредыдущаяСтр 5 из 5
Сказанное в предыдущем подразделе относится к тестированию простой одномодульной программы или отдельного модуля. Но отладка и тестирование многомодульной программы гораздо сложнее. Для этого нужна автономная отладка (и тестирование) модулей, проверка их сопряжения, интеграция их в программу и комплексная проверка программы. Все это можно делать разными методами. Новички пишут всю программу, а затем начинают отладку и тестирование. При этом способе локализация ошибок максимально затруднена, поэтому качество отладки оставляет желать лучшего. На практике тестирование многомодульной программы осуществляется монолитным или одним из пошаговых методов. При монолитном методе (" метод большого скачка") каждый модуль вначале проходит автономную отладку и тестирование изолированно от других модулей. Для автономного тестирования каждого модуля нужен драйвер, который обеспечивает модуль входными данными и обрабатывает выходные. Если модуль вызывает другие модули, вместо них используются специальные замещающие модули, или заглушки, имитирующие их работу. Заглушка должна получать входные данные из фиксированного набора, определяемого тестами, и возвращать соответствующие им выходные. Иногда заглушки по сложности приближаются к заменяемым модулям. Таким образом, для автономной отладки каждого модуля нужен драйвер и, как правило, несколько заглушек. Только после того, как все модули прошли автономную отладку, они собираются в программу, которая дальше отлаживается целиком (отсюда определения " монолитный" и " большой скачок"). В методах пошаговой отладки модули тестируются не изолированно, а постепенно добавляются к набору уже проверенных. Отладку можно начинать снизу или сверху. Восходящая отладка (" снизу вверх") начинается с терминальных модулей, т.е. не вызывающих другие модули. Для проверки нетерминальных модулей используются уже отлаженные. Для каждого модуля, кроме всей программы, нужен драйвер; заглушки не нужны. Нисходящая отладка (" сверху вниз") начинается с программы. Вместо вызываемых модулей используются заглушки, а драйверы не нужны. Каждый модуль для отладки подключается к работающей программе вместо своей заглушки. Рассмотрим некоторые показатели, связанные с отладкой и тестированием. Наиболее важны следующие. § Чем скорее появляется работающий вариант программы, тем раньше выявляются возможные ошибки проектирования и тем дешевле обойдется их исправление. § Чем раньше модули начинают собираться вместе, тем быстрее находятся ошибки в межмодульных сопряжениях (в основном, несоответствия между аргументами в вызовах и параметрами). § Возможность проверить любой путь вычислений в модуле (тестируя его как " белый ящик") значительно повышает качество тестирования. Еще два показателя связаны с необходимостью создания драйверов и заглушек. Как правило, драйверы намного проще, чем заглушки. Если программа создается несколькими разработчиками, то важно, легко ли управлять коллективной разработкой и отладкой частей программы. Кроме того, имеет значение и степень параллелизма, особенно в начале работы. При монолитной отладке работающий вариант программы появляется только при сборке всех модулей после их автономного тестирования, т.е. поздно. Однако автономное тестирование позволяет проверить любой путь вычислений в модулях. Здесь нужны и драйверы, и заглушки. При коллективной работе автономная отладка проводится с высокой степенью параллелизма и легко управляется. Таким образом, данный метод имеет больше недостатков, чем достоинств. При восходящей отладке в модуле можно проверить любой путь, модули быстро собираются вместе, однако работающий вариант программы появляется только в конце отладки. Нужны не заглушки, а более простые драйверы. При коллективной разработке возможна параллельная работа, хотя и с ограниченной степенью параллелизма. Процесс коллективной отладки легко планируется и управляется. Данный метод имеет немало достоинств и часто используется. При нисходящей отладке работающий вариант программы появляется быстро, затем сразу начинается сборка модулей. Однако из-за отсутствия драйверов в подключаемом модуле трудно протестировать произвольный путь. Нужны заглушки, иногда нетривиальные. Параллелизм в начале работы низкий, и планировать ее трудно. На практике часто используют модифицированный нисходящий метод, при котором каждый модуль вначале проходит автономное тестирование. Это позволяет повысить качество тестирования каждого модуля и увеличивает степень параллелизма в начале работы. В действительности при создании больших программ используют оба пошаговых подхода, сочетая их преимущества. В первую очередь отлаживается программа с заглушками для некоторых модулей, а также подпрограммы, которые обеспечивают ввод и вывод данных и, как правило, являются терминальными. Процессы нисходящей и восходящей отладки сходятся в заранее запланированной точке.
|