🤖 Академия QA-автоматизации
← Основы QA-автоматизации: курс для начинающих
Этап 1. Мир программного обеспечения и зачем его тестировать

Жизненный цикл разработки программного обеспечения: от идеи до релиза простыми словами


Зачем вам это нужно знать?

Представьте, что вы приходите работать на завод, но не знаете, как устроена линия сборки: где начинается производство, кто за что отвечает и когда продукт считается готовым. Скорее всего, вы будете путаться, мешать коллегам и делать ошибки.

В IT-индустрии ситуация точно такая же. Прежде чем тестировать программу, нужно понять, как она вообще создаётся. Этот процесс называется жизненным циклом разработки программного обеспечения — и именно он определяет, где, когда и зачем появляется тестировщик.

Если вы знаете весь путь продукта — от первоначальной идеи до момента, когда пользователь скачивает приложение, — вы будете понимать контекст своей работы, говорить с командой на одном языке и находить ошибки раньше, чем они станут дорогостоящей проблемой.


Теория

Что такое «жизненный цикл» и зачем он нужен?

Жизненный цикл (от английского lifecycle) — это просто описание всех шагов, через которые проходит продукт: от момента возникновения идеи до окончания его использования.

Мы привыкли к жизненным циклам в обычной жизни: дом сначала проектируют, потом строят, потом сдают в эксплуатацию, потом ремонтируют, а когда-то сносят. С программным обеспечением — примерно то же самое.

В IT этот цикл обычно называют SDLC (от английского Software Development Life Cycle — жизненный цикл разработки программного обеспечения). Это устоявшийся термин, который вы будете слышать на собеседованиях и в рабочих разговорах.

💡 Простая аналогия. Представьте, что вы заказываете торт в кондитерской. Сначала вы описываете, каким должен быть торт (требования). Затем кондитер составляет рецепт (проектирование). Потом печёт и украшает (разработка). Потом вы пробуете торт перед подачей на стол (тестирование). И только потом выносите его гостям (релиз). Если на каком-то шаге что-то пошло не так — лучше узнать об этом до подачи гостям, а не после.


Этапы SDLC: разбираем по шагам

Существует несколько версий того, как именно делить SDLC на этапы, но базовая структура практически везде одинакова. Давайте разберём каждый этап по порядку.


Этап 1. Планирование (Planning)

На этом шаге команда задаёт себе главный вопрос: «А стоит ли вообще делать этот продукт?»

Здесь обсуждают:

  • Зачем нужна программа? Какую проблему она решает?
  • Кто будет ею пользоваться?
  • Сколько это будет стоить и как долго занимать?
  • Есть ли необходимые ресурсы — люди, деньги, время?

Кто участвует: менеджеры проекта, бизнес-аналитики, руководство компании.

Результат этапа: план проекта, приблизительные сроки, бюджет.

⚠️ Важно для тестировщика. Уже на этом этапе тестировщик может помочь: задать вопросы о рисках, оценить, насколько сложно будет проверить тот или иной функционал. Но на практике новички редко подключаются так рано — это скорее задача опытных QA-специалистов.


Этап 2. Анализ требований (Requirements Analysis)

Требования — это описание того, что должна делать программа. Представьте техническое задание для строителя: «Мне нужна квартира с тремя комнатами, двумя санузлами и балконом». Именно так выглядят требования для разработчиков.

На этом этапе:

  • Клиент (или бизнес-заказчик) объясняет, чего он хочет.
  • Аналитики переводят пожелания в чёткие, понятные документы.
  • Команда обсуждает, что реально сделать, а что нет.

Типы требований:

  • Функциональные — что программа должна делать. Например: «Пользователь может зарегистрироваться через email».
  • Нефункциональные — как программа должна работать. Например: «Страница должна загружаться не дольше 2 секунд».

Кто участвует: бизнес-аналитики, заказчик, иногда тестировщики и разработчики.

Результат этапа: документ с требованиями (часто называют SRS — Software Requirements Specification, спецификация требований к программному обеспечению).

💡 Для тестировщика этот этап критически важен. Если требования написаны нечётко или противоречиво — тестировщик должен это заметить и задать вопросы. Ошибка в требованиях, найденная сейчас, стоит копейки. Та же ошибка, найденная после разработки, стоит в десятки раз дороже.


Этап 3. Проектирование (Design)

На этом этапе разработчики и архитекторы отвечают на вопрос: «Как именно мы будем это делать?»

Здесь создаются:

  • Архитектура системы (как устроена программа «изнутри»).
  • Схемы баз данных (где и как будут храниться данные).
  • Макеты интерфейса (как будут выглядеть экраны и кнопки).
  • Технические решения (какие технологии использовать).

💡 Аналогия. Архитектор рисует чертежи дома до начала строительства. Никто не начинает класть кирпичи, не зная, где будут стены и двери.

Кто участвует: архитекторы, разработчики, дизайнеры.

Результат этапа: технические документы, схемы, макеты (wireframes/mockups).

Роль тестировщика: изучить макеты и документы, начать составлять план тестирования, заранее придумывать сценарии проверки.


Этап 4. Разработка (Development / Implementation)

Вот теперь программисты садятся и пишут код. Код — это текст на специальном языке программирования, который компьютер понимает и выполняет как инструкцию.

На этом этапе:

  • Разработчики пишут программу по чертежам из предыдущего этапа.
  • Параллельно могут проводиться ревью кода (проверка кода другими разработчиками).
  • Программа собирается из отдельных модулей, как конструктор.

Кто участвует: разработчики (программисты).

Результат этапа: рабочий (или почти рабочий) программный продукт.

Роль тестировщика: готовить тест-кейсы (сценарии проверки), настраивать тестовую среду, изучать функциональность по мере её готовности.


Этап 5. Тестирование (Testing)

Вот здесь и начинается основная работа тестировщика.

Готовую (или частично готовую) программу проверяют на ошибки. Тестировщики берут требования с этапа 2, сравнивают их с тем, что получилось, и ищут расхождения.

На этом этапе:

  • Выполняются тест-кейсы (пошаговые сценарии проверки).
  • Найденные ошибки (баги) документируются в специальных системах.
  • Разработчики исправляют баги, а тестировщики проверяют исправления.
  • Цикл «нашли — исправили — проверили» может повторяться несколько раз.

Кто участвует: тестировщики (QA-инженеры), разработчики.

Результат этапа: список найденных и исправленных багов, отчёт о тестировании, подтверждение того, что продукт готов к выпуску.

💡 Важное замечание. Тестирование — не только последний этап. В современных подходах тестировщики подключаются на всех этапах. Но об этом — чуть позже.


Этап 6. Развёртывание (Deployment / Release)

Когда программа протестирована и одобрена, её выпускают для пользователей. Этот момент называют релизом (от английского release — выпуск).

Развёртывание — это технический процесс, при котором программа переносится с рабочих компьютеров команды на серверы, откуда её смогут скачать или использовать реальные пользователи.

На этом этапе:

  • Продукт публикуют в App Store, Google Play, на сайте или корпоративном сервере.
  • Проводится финальная проверка в боевой среде (там, где будут работать пользователи).
  • Команда поддержки готовится отвечать на вопросы пользователей.

Роль тестировщика: провести smoke-тестирование (быструю базовую проверку) после развёртывания, убедиться, что ничего не сломалось при переносе.

💡 Smoke-тестирование (буквально «тест на дым») — это быстрая проверка самых важных функций. Название пришло из электроники: если включить новое устройство и оно не задымило, значит, ничего критического не сломано. В IT это означает: зашли в приложение, убедились, что основные кнопки работают, и только потом занялись глубокой проверкой.


Этап 7. Сопровождение (Maintenance)

Программа вышла — но работа на этом не заканчивается. Пользователи находят баги, которые не поймали тестировщики. Появляются новые требования. Меняются операционные системы и устройства.

На этом этапе:

  • Исправляются баги, найденные пользователями.
  • Выходят обновления с новыми функциями.
  • Продукт адаптируется под изменения в окружающей среде (новые версии iOS, Android и т.д.).

Этот этап может длиться годами — пока продукт востребован.


Как всё это выглядит в виде схемы?

Идея
  │
  ▼
1. Планирование       ─── Стоит ли делать? Ресурсы? Сроки?
  │
  ▼
2. Анализ требований  ─── Что именно должна делать программа?
  │
  ▼
3. Проектирование     ─── Как это будет устроено внутри?
  │
  ▼
4. Разработка         ─── Программисты пишут код
  │
  ▼
5. Тестирование       ─── QA ищет ошибки и проверяет требования
  │
  ▼
6. Развёртывание      ─── Продукт выходит к пользователям (релиз)
  │
  ▼
7. Сопровождение      ─── Исправления, обновления, поддержка

Методологии: как организуют этапы на практике?

Описанный выше порядок — идеальная теория. В реальной жизни команды по-разному организуют эти этапы. Существует несколько основных методологий (подходов к организации работы).

💡 Методология — это набор правил и принципов, по которым команда организует свою работу.

Водопадная модель (Waterfall)

Представьте водопад: вода течёт только вниз, никогда не возвращается вверх. Точно так же и здесь — команда последовательно проходит все этапы один за другим. Нельзя начать разработку, пока не готовы требования. Нельзя тестировать, пока не завершена разработка.

Плюсы: понятная структура, чёткие результаты каждого этапа.

Минусы: если на позднем этапе обнаруживается ошибка в требованиях — очень дорого исправлять. Мало гибкости.

Где используется: в проектах с чёткими, неизменными требованиями (например, государственные системы, банковское ПО).

Гибкие методологии (Agile)

Agile — это не конкретная инструкция, а набор принципов, при которых разработка идёт короткими циклами — итерациями или спринтами (обычно 1–4 недели). В каждом спринте проходят все мини-этапы: немного планирования, немного разработки, немного тестирования.

💡 Аналогия. Представьте, что вы строите дом не целиком, а комната за комнатой. После каждой комнаты вы показываете результат заказчику, получаете обратную связь и вносите изменения. В итоге дом получается именно таким, каким хочет заказчик, а не таким, каким вы его представили год назад.

Плюсы: быстрая обратная связь, гибкость к изменениям, тестирование идёт параллельно с разработкой.

Минусы: требует постоянного общения, сложнее планировать бюджет на долгий срок.

Самые известные Agile-подходы: Scrum, Kanban.

Где используется: в большинстве современных продуктовых компаний — стартапах, интернет-сервисах, мобильных приложениях.


Где в этом цикле находится тестировщик?

Многие думают, что тестировщик нужен только на этапе тестирования. Это устаревший взгляд.

В современной разработке QA-инженер (тестировщик) участвует на всех этапах:

Этап Что делает тестировщик
Планирование Оценивает риски, предлагает стратегию тестирования
Анализ требований Ищет противоречия и неясности в требованиях
Проектирование Изучает архитектуру, начинает писать тест-планы
Разработка Пишет тест-кейсы, готовит тестовую среду
Тестирование Проводит тестирование, документирует баги
Развёртывание Проводит smoke-тестирование после релиза
Сопровождение Регрессионное тестирование после обновлений

💡 Регрессионное тестирование — это проверка того, что исправление одного бага не сломало то, что раньше работало. Как будто вы починили кран на кухне и потом проверяете, что вода по-прежнему идёт в ванной.


Почему ошибки дорожают со временем?

Это один из ключевых принципов тестирования, который стоит запомнить с первого дня.

Представьте, что архитектор допустил ошибку в чертежах дома — неправильно рассчитал нагрузку на фундамент.

  • Если ошибку найти на этапе чертежей — достаточно исправить рисунок. Стоимость: один час работы архитектора.
  • Если ошибку найти после строительства — придётся ломать часть конструкции и перестраивать. Стоимость: недели работы и миллионы рублей.

В программировании — то же самое. По данным исследований, исправление бага на этапе требований стоит в 5–10 раз дешевле, чем его исправление на этапе разработки, и в 100 раз дешевле, чем исправление уже после выпуска продукта.

Вот почему тестировщики нужны не только в конце, но и в самом начале.

Стоимость исправления ошибки (условно):

Требования    │ ▓ (1x)
Проектирование│ ▓▓▓ (3x)
Разработка    │ ▓▓▓▓▓▓ (6x)
Тестирование  │ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ (15x)
После релиза  │ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ (100x)

Пример: SDLC в реальном проекте

Давайте проследим жизненный цикл на конкретном примере — мобильное приложение для доставки еды.


1. Планирование

Руководство компании решает создать приложение для заказа еды. Анализируют рынок, конкурентов, считают бюджет. Приходят к выводу: проект реален, нужно 6 месяцев и команда из 8 человек.


2. Анализ требований

Аналитики встречаются с заказчиком и записывают требования:

  • Пользователь может зарегистрироваться по номеру телефона.
  • Пользователь может просматривать меню ресторанов.
  • Пользователь может добавлять блюда в корзину.
  • Пользователь может оплачивать заказ картой.
  • Уведомления о статусе заказа приходят в течение 10 секунд.

3. Проектирование

Дизайнер рисует макеты экранов. Архитектор описывает, как будет устроена база данных (где хранятся заказы, пользователи, меню). Команда выбирает технологии.


4. Разработка

Программисты начинают писать код. Через 2 недели готова регистрация, через 4 — просмотр меню, через 6 — корзина и оплата.


5. Тестирование

Тестировщики проверяют каждую функцию:

Тест-кейс: Регистрация пользователя по номеру телефона

Шаг 1: Открыть приложение
Шаг 2: Нажать кнопку «Зарегистрироваться»
Шаг 3: Ввести номер телефона +79001234567
Шаг 4: Нажать «Получить код»
Ожидаемый результат: На номер приходит SMS с кодом подтверждения
Фактический результат: SMS не пришла → БАГ 🐞

Разработчик исправляет баг. Тестировщик проверяет снова.


6. Развёртывание

Приложение публикуется в App Store и Google Play. Тестировщик устанавливает его на реальный телефон и проводит smoke-тест: регистрация работает, меню загружается, заказ оформляется — всё в порядке.


7. Сопровождение

Через месяц пользователи сообщают, что на телефонах с Android 14 не работает оплата. Команда воспроизводит баг, исправляет, выпускает обновление. После обновления тестировщик проводит регрессионное тестирование.


Практика

Задание 1. Угадайте этап

Прочитайте описание ситуации и определите, на каком этапе SDLC она происходит.

  1. Команда обсуждает, реально ли создать новый продукт за три месяца с бюджетом в 500 000 рублей.
  2. Дизайнер показывает командe нарисованные на бумаге схемы того, как будет выглядеть главный экран приложения.
  3. Пользователи скачивают приложение из магазина и начинают им пользоваться.
  4. Тестировщик обнаружил, что кнопка «Оплатить» не реагирует на нажатие, и написал отчёт об ошибке.
  5. Аналитик разговаривает с заказчиком и записывает: «Система должна поддерживать регистрацию через Google-аккаунт».

Запишите ответы в тетрадь или текстовый файл. Сверьте с этапами, описанными в теории.


Задание 2. Нарисуйте свой SDLC

Возьмите лист бумаги (или воспользуйтесь любым простым графическим редактором, например, paint.net или даже стандартным «Блокнотом»).

Представьте, что вы создаёте простое приложение — список дел (to-do list). Нарисуйте или опишите все 7 этапов SDLC для этого продукта. На каждом этапе ответьте на вопросы:

  • Кто участвует?
  • Что делается?
  • Какой результат этапа?

Пример для первого этапа:

1. Планирование
   - Кто: я (один разработчик/менеджер)
   - Что: решаю, что приложение нужно, определяю, что в нём должно быть
   - Результат: решение делать приложение + список основных функций

Задание 3. Найдите ошибку в требовании

Прочитайте эти требования к приложению. Найдите как минимум три проблемы — места, где требование написано нечётко, противоречиво или неполно.

Требования к приложению «Погода»:

1. Приложение должно быстро загружаться.
2. Пользователь может узнать погоду.
3. Интерфейс должен быть красивым и удобным.
4. Приложение работает на телефонах.
5. Температура отображается в нужном формате.

Для каждой найденной проблемы запишите:

  • В чём проблема?
  • Какой вопрос нужно задать, чтобы уточнить требование?

Пример:

Требование 1: «Приложение должно быстро загружаться»
Проблема: «Быстро» — это субъективное слово, нет конкретного числа.
Вопрос: За сколько секунд должно загружаться приложение?

Задание 4. Размышление: Waterfall или Agile?

Прочитайте описание двух проектов и решите, какая методология подходит лучше — Waterfall или Agile. Обоснуйте свой ответ.

Проект А: Правительство заказывает систему для ведения реестра недвижимости. Требования утверждены законом, изменить их нельзя. Срок — 2 года.

Проект Б: Стартап создаёт новое приложение для знакомств. Требования постоянно меняются в зависимости от отзывов первых пользователей. Нужно быстро проверять новые идеи.

Запишите свои ответы и аргументы. Нет единственно верного ответа — важна ваша аргументация.


Ключевые выводы

  • SDLC (жизненный цикл разработки программного обеспечения) — это структурированный процесс создания программы, состоящий из 7 этапов: планирование → анализ требований → проектирование → разработка → тестирование → развёртывание → сопровождение.
  • Тестировщик нужен не только на этапе тестирования — он участвует на всех этапах и помогает находить проблемы как можно раньше.
  • Ошибки дорожают со временем: найти проблему в требованиях во много раз дешевле, чем исправлять её после выпуска продукта.
  • Waterfall — последовательная модель, подходит для проектов с чёткими и неизменными требованиями.
  • Agile — гибкая модель с короткими итерациями, подходит для проектов, где требования меняются, и нужна быстрая обратная связь.
  • Smoke-тестирование — быстрая базовая проверка после развёртывания. Регрессионное тестирование — проверка того, что исправления не сломали то, что уже работало.
  • Знание SDLC — это фундамент профессии тестировщика. Без него сложно понять, где, когда и почему важна ваша работа.

📚 Следующий урок: «Что такое баг и как его правильно описать: руководство для начинающего тестировщика»

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.