Это модель тестирования, в которой фаза тестирования происходит параллельно с соответствующей фазой написания кода. V-модель является расширением waterfall-модели, в которой тестирование происходит после разработки. Известна под названием модель верификации или модель валидации.
Термины
SDLC. Жизненный цикл разработки программного обеспечения (Software Development Life Cycle). Это последовательность действий, выполняемая разработчиками при написании программ.
STLC. Жизненный цикл тестирования (Software Testing Life Cycle). Состоит из серий действий, выполняемых тестировщиками, которые последовательно проверяют код на ошибки.
Waterfall (модель водопада, каскадная модель). Эта модель — «последовательная», разработка в ней делится на последовательные отрезки. На каждом отрезке разработчики сосредотачиваются на отдельной задаче. Этап тестирования в этой модели начинается только после разработки системы.
Пример каскадной модели
Представим, что у нас есть задача написать софт для клиента. Давайте попробуем описать шаги и их последовательность для выполнения задачи.
Планируем, на каком языке будем писать софт (например Java, PHP или .NET или другие). Какие будут базы данных (Oracle, MySQL и т.п.). Далее пишем код. После окончания разработки тестируем код, проверяем, соответствует ли результат требованиям клиента. Далее «шлифуем» код, исправляем баги и замечания клиента.
Этапы жизненного цикла разработки программного обеспечения | Действия |
Сбор требований | Собираем как можно больше информации о продукте. Описываем требования к системе. |
Проектирование и дизайн | Выбираем языки программирования, базы данных и другие инструменты разработки. Оцениваем, что лучше всего подходит в данном конкретном проекте, продумываем архитектуру. |
Разработка | Этап создания приложения — то есть, непосредственно написания кода. |
Тестирование | Проверяем, соответствует ли софт требованиям клиента. |
Разворачивание | Устанавливаем и настраиваем приложение в его программной среде (на сервере, на машине клиента и т.п.) |
Поддержка | В завершение поддерживаем работоспособность системы, дорабатываем функционал (по необходимости), исправляем баги, не выявленные на этапе тестирования. |
Перечисленные в таблице этапы — и есть каскадная модель разработки.
Проблемы каскадной модели
Как вы уже увидели, тесты в каскадной модели начинаются только после имплементации софта.
Но, если разрабатывается большая сложная система, то легко упустить ключевые детали еще на этапе требований. В таких случаях в финале может получиться результат, который не будет соответствовать ожиданиям клиента (из-за ошибок, допущенных на ранних этапах). Возможно придется начинать все сначала. Или, если команда учла требования, но допустила серьезные ошибки в дизайне или архитектуре, надо будет менять архитектуру приложения.
Опыт тысяч проектов показывает, что баги возникают на этапе согласования требований и на этапе дизайна; такие дефекты могут составлять половину от всех багов!
Стоимость устранения дефектов возрастает к концу жизненного цикла приложения. Чем раньше возник баг, тем сложнее и дороже его устранить. Как говорит английская народная пословица, «Один шов, сделанный вовремя стоит десяти».
Решение проблемы: V-модель
Для решения этой проблемы создана так называемая V-модель тестирования. В этой модели, на каждом этапе жизненного цикла приложения есть своя соответствующая фаза тестирования.
- Слева на рисунке — Жизненный цикл разработки (SDLC)
- Справа — Жизненный цикл тестирования (STLC)
Фигура получается похожей на букву V, поэтому модель и получила такое название.
Кроме V-модели, есть «итеративные» модели разработки; в них разработка выполняется итерационно. На каждом этапе в софт добавляются новые функции. И на каждом этапе есть своя фаза тестирования.
Примеры жизненных циклов, в которых разработка проходит итерациями: Rapid Application Development (RAD), Agile.
Итак
Существует много типов жизненных циклов разработки. Модель для конкретного проекта зависит от конкретных условий и от самого проекта.
Тестирование входит во все современные модели разработки. В любой модели тестирование должно выполняться на всех уровнях — начиная с этапа описания требований заканчивая этапом поддержки готового софта.