Восходящее и нисходящее тестирование
Некоторые методы тестирования и их совокупности применяются при двух принципиально различающихся стратегиях: от частного к общему (восходящее тестирование) и наоборот (нисходящее тестирование).
При восходящем тестировании, прежде всего, проверяются программные модули нижних иерархических уровней в ПС, к которым последовательно подключаются вызывающие их модули. В этих модулях отладка также начинается с простейших конструкций, переменных и маршрутов обработки информации. Соответственно, последовательно усложняются используемые методы отладки и типы выявляемых при этом ошибок. Последовательное наращивание групп программ снизу вверх позволяет проверять работоспособность таких групп в их естественном исполнении, без подмены и имитации компонент нижних уровней. Основные трудности при такой стратегии состоят в непрерывном обновлении и увеличении числа тестовых наборов по мере подключения каждой новой компоненты более высокого уровня. Однако одновременно углубляется тестирование компонент нижних иерархических уровней, что способствует систематическому повышению их качества. В результате может быть тщательно отлажен базовый набор программных модулей, пригодных для повторного использования при создании подобных ПС.
При нисходящем тестировании отладка начинается с программ организации вычислительного процесса. Первоначально тестируются управляющее ядро комплекса программ и программы решения функциональных задач, размещенные на высших иерархических уровнях. К ним последовательно подключаются компоненты более низких иерархических уровней. Такая стратегия эффективна, когда имеется достаточно полный набор проверенных программных модулей, ранее отработанных в версиях подобных программных комплексов. Если некоторые программы нижних уровней не разработаны или недостаточно протестированы, то вместо них временно могут подключаться программные имитаторы - «заглушки». В результате при тестировании на начальных этапах проверяются модели групп программ или комплекса с некоторым числом имитаторов программных компонент.
Преимуществом такой стратегии отладки являются сохранение и последовательное развитие тестовых исходных данных по мере подключения компонент. С начала тестирования можно использовать исходные данные, соответствующие функционированию ПС в реальной внешней среде, с некоторыми, последовательно снимаемыми ограничениями.
К недостаткам можно отнести наличие большихзатрат на обнаружение простейших ошибок во вновь разработанных и подключаемых модулях, если они до этого недостаточно тестировались.
На практике обе стратегии используют совместно, с учетом сложности тестируемых групп программ и реальных особенностей проектирования ПС. При создании первой базовой версии ПС и первичного набора повторно используемых компонент преимущество при отладке имеет стратегия тестирования снизу вверх. При сборке очередных базовых версий ПС из достаточно полных наборов хорошо апробированных программных и информационных компонент целесообразнее тестирование вести сверху вниз.
Окончательное тестирование программных средств состоит в проверке полноты и качества решения функциональных задач и соответствия требованиям технического задания.
Методология быстрой разработки приложений (RAD)
Одним из подходов к разработке ПС в рамках спиральной модели ЖЦ является методология быстрой разработки приложений RAD (Rapid Application Development). Для ее реализации требуются три составляющие:
· небольшая команда программистов (от 2 до 10 чел.);
· короткий (от 2 до 6 мес.), но тщательно проработанный производственный график;
· повторяющийся цикл, при котором разработчики по мере того как приложение начинает обретать форму, запрашивают и реализуют в продукте требования, полученные через взаимодействие с заказчиком.
Команда разработчиков должна представлять собой группу профессионалов, имеющих опыт в анализе, проектировании, генерации кода и тестировании ПС с использованием CASE-средств, способных хорошо взаимодействовать с конечными пользователями и трансформировать их предложения в рабочие прототипы.
Жизненный цикл ПС по методологии RAD состоит из четырех фаз.
1. На фазе анализа и планирования требований пользователи определяют функции, которые система должна выполнять, выделяют приоритетные, описывают информационные потребности. Формулирование требований к системе осуществляется в основном силами пользователей под руководством специалистов-разработчиков. Ограничивается масштаб проекта, устанавливаются временные рамки для каждой последующей фазы. Кроме того, определяется сама возможность реализации проекта в заданных размерах финансирования, на имеющихся аппаратных средствах и т.п. Результатом должны быть список расставленных по приоритету функций будущей ИС, предварительные функциональные и информационные модели ИС.
2. На фазе проектирования часть пользователей принимает участие в техническом проектировании системы под руководством специалистов-разработчиков. CASE-средства используются для быстрого получения работающих прототипов приложений. Пользователи, непосредственно взаимодействуя с ними, уточняют и дополняют требования к системе, которые не были выявлены на предыдущей фазе. Более подробно рассматриваются процессы системы. Анализируется и при необходимости корректируется функциональная модель. Каждый процесс рассматривается детально. Если требуется, то для каждого элементарного процесса создается частичный прототип: экран, диалог, отчет, устраняющий неясности или неоднозначности. Устанавливаются требования разграничения доступа к данным. На этой же фазе происходит определение необходимой документации. После детального определения состава процессов оценивается количество функциональных элементов разрабатываемой системы и принимается решение о разделении ИС на подсистемы, поддающиеся реализации одной командой разработчиков за приемлемое дляRAD-проектов время (60–90 дней). С использованием CASE-средств проект распределяется между различными командами (делится функциональная модель). В результате на данной фазе формируются:
· общая информационная модель системы;
· функциональные модели системы в целом и подсистем, реализуемых отдельными командами разработчиков;
· точно определенные с помощью CASE-средств интерфейсы между автономно разрабатываемыми подсистемами;
· построенные прототипы экранов, отчетов, диалогов.
3. На фазе построения непосредственно происходит быстрая разработка приложения. Разработчики производят интерактивное построение реальной системы на основе полученных в предыдущей фазе моделей, а также требований нефункционального характера. Программный код частично формируется при помощи автоматических генераторов, получающих информацию из репозитория CASE-средств. Пользователи оценивают полученные результаты и вносят коррективы, если в процессе разработки система перестает удовлетворять определенным ранее требованиям. Тестирование системы осуществляется в процессе разработки.
По окончании работ каждой отдельной команды разработчиков производится постепенная интеграция данной части системы с остальными, формируется полный программный код, выполняется тестирование совместной работы данной части приложения, а затем – тестирование системы в целом.
На завершающем этапе физического проектирования системы:
· определяется необходимость распределения данных;
· осуществляется анализ использования данных;
· производится физическое проектирование базы данных;
· определяются требования к аппаратным ресурсам;
· определяются способы увеличения производительности;
· завершается разработка документации проекта.
Результатом фазы является готовая система, удовлетворяющая всем согласованным требованиям.
4. На фазе внедрения производятся обучение пользователей, организационные изменения и параллельно с внедрением новой системы осуществляется работа с существующей системой (до полного внедрения новой). Так как фаза построения достаточно непродолжительна, планирование и подготовка к внедрению должны начинаться заранее, как правило, на этапе проектирования системы.