Раздел 1 СНОВНЫЕ ЗНАНИЯ И УМЕНИЯ
Раздел
1: основные знания и умения
1.1.
Процессы тестирования и разработки ПО
1.1.1.
Модели разработки ПО
Чтобы лучше разобраться в том, как тестирование соотносится с программированием
и иными видами проектной деятельности, для начала рассмотрим самые основы —
модели разработки (lifecycle model15) ПО (как часть жизненного цикла (software
lifecycle16) ПО). При этом сразу подчеркнём, что разработка ПО является лишь
частью жизненного цикла ПО, и здесь мы говорим именно о разработке.
Модель разработки ПО (Software
Development Model, SDM) — структура, систематизирующая различные виды проектной
деятельности, их взаимодействие и последовательность в процессе разработки ПО.
Выбор той или иной модели зависит от масштаба и сложности проекта, предметной
области, доступных ресурсов и множества других факторов.
Выбор
модели разработки ПО серьёзно влияет на процесс тестирования, определяя выбор
стратегии, расписание, необходимые ресурсы и т.д.
Моделей
разработки ПО много, но в общем случае классическими можно считать водопадную,
v-образную, итерационную инкрементальную, спиральную и
гибкую.
Водопадная модель
(waterfall model19) сейчас представляет скорее исторический интерес, т.к. в
современных проектах практически неприменима. Она предполагает однократное
выполнение каждой из фаз проекта, которые, в свою очередь, строго следуют друг
за другом (рисунок 1). Очень упрощённо можно сказать, что в рамках этой модели в
любой момент времени команде «видна» лишь предыдущая и следующая фаза. В
реальной же разработке ПО приходится «видеть весь проект целиком» и возвращаться
к предыдущим фазам, чтобы исправить недоработки или что-то
уточнить.
Рисунок
1
Водопадная
модель разработки ПО.
К
недостаткам водопадной модели принято относить тот факт, что участие
пользователей ПО в ней либо не предусмотрено вообще, либо предусмотрено лишь
косвенно на стадии однократного сбора требований. С точки зрения же тестирования
эта модель плоха тем, что тестирование в явном виде появляется здесь лишь с
середины развития проекта, достигая своего максимума в самом
конце.
Тем
не менее водопадная модель часто интуитивно применяется при выполнении
относительно простых задач, а её недостатки послужили прекрасным отправным
пунктом для создания новых моделей. Также эта модель в несколько
усовершенствованном виде используется на крупных проектах, в которых требования
очень стабильны и могут быть хорошо сформулированы в начале проекта
(аэрокосмическая область, медицинское ПО и т.д.)
V-образная модель
является логическим развитием водопадной. Можно заметить что в общем случае как
водопадная, так и v-образная модели жизненного цикла ПО могут содержать один и
тот же набор стадий, но принципиальное отличие заключается в том, как эта
информация используется в процессе реализации проекта.
Очень
упрощённо можно сказать, что при использовании v-образной модели на каждой
стадии «на спуске» нужно думать о том, что и как будет происходить на
соответствующей стадии «на подъёме». Тестирование здесь появляется уже на самых
ранних стадиях развития проекта, что позволяет минимизировать риски, а также
обнаружить и устранить множество потенциальных проблем до того, как они станут
проблемами реальными.
Рисунок
2 V-образная модель разработки
ПО.
Итерационная инкрементальная модель
является фундаментальной основой современного подхода к разработке ПО. Как
следует из названия модели, ей свойственна определённая двойственность (а
ISTQB-глоссарий даже не приводит единого определения, разбивая его на отдельные
части):
·
с
точки зрения жизненного цикла модель является итерационной, т.к. подразумевает
многократное повторение одних и тех же стадий;
·
с
точки зрения развития продукта (приращения его полезных функций) модель является
инкрементальной.
Ключевой
особенностью данной модели является разбиение проекта на относительно небольшие
промежутки (итерации), каждый из которых в общем случае может включать в себя
все классические стадии, присущие водопадной и v-образной моделям. Итогом
итерации является приращение (инкремент) функциональности продукта, выраженное в
промежуточном билде.
Рисунок
3
Итерационная инкрементальная модель разработки ПО.
Длина
итераций может меняться в зависимости от множества факторов, однако сам принцип
многократного повторения позволяет гарантировать, что и тестирование, и
демонстрация продукта конечному заказчику (с получением обратной связи) будет
активно применяться с самого начала и на протяжении всего времени разработки
проекта.
Во
многих случаях допускается распараллеливание отдельных стадий внутри итерации и
активная доработка с целью устранения недостатков, обнаруженных на любой из
(предыдущих) стадий.
Итерационная
инкрементальная модель очень хорошо зарекомендовала себя на объёмных и сложных
проектах, выполняемых большими командами на протяжении длительных сроков. Однако
к основным недостаткам этой модели часто относят высокие накладные расходы,
вызванные высокой «бюрократизированностью» и общей громоздкостью
модели.
Спиральная
модель
представляет собой частный случай итерационной инкрементальной модели, в котором
особое внимание уделяется управлению рисками, в особенности влияющими на
организацию процесса разработки проекта и контрольные точки.
Схематично
суть спиральной модели представлена на рисунке 4. Обратите внимание на то, что
здесь явно выделены четыре ключевые фазы:
·
проработка
целей, альтернатив и ограничений;
·
анализ
рисков и прототипирование;
·
разработка
(промежуточной версии) продукта;
·
планирование
следующего цикла.
С точки зрения тестирования и управления качеством повышенное внимание рискам является ощутимым преимуществом при использовании спиральной модели для разработки концептуальных проектов, в которых требования естественным образом являются сложными и нестабильными (могут многократно меняться по ходу выполнения проекта).
Рисунок 4 Спиральная модель разработки ПО.
Гибкая
модель
представляет собой совокупность различных подходов к разработке ПО:
·
Люди
и взаимодействие важнее процессов и инструментов.
·
Работающий
продукт важнее исчерпывающей документации.
·
Сотрудничество
с заказчиком важнее согласования условий контракта.
·
Готовность
к изменениям важнее следования первоначальному
плану
Как несложно догадаться, положенные в основу гибкой модели подходы являются логическим развитием и продолжением всего того, что было за десятилетия создано и опробовано в водопадной, v-образной, итерационной инкрементальной, спиральной и иных моделях. Причём здесь впервые был, достигнут ощутимый результат в снижении бюрократической составляющей и максимальной адаптации процесса разработки ПО к мгновенным изменениям рынка и требований заказчика.
Рисунок
5
Суть
гибкой модели разработки ПО.