vyvchy
    Теми розділу

    01 · Основи тестування

    SDLC: моделі розробки ПЗ

    Зміст

    Модель розробки — це відповідь на запитання «у якому порядку команда проходить шлях від ідеї до релізу». Для тестувальника це не абстракція з підручника: саме модель визначає, коли ти вперше побачиш вимоги, скільки часу матимеш на перевірки, як часто доведеться ганяти регресію і чи будеш ти «останнім рубежем» перед релізом, чи рівноправним учасником команди з першого дня фічі.

    На співбесідах тема стабільно в топі для trainee і junior: «чим V-модель відрізняється від waterfall», «як змінюється робота QA в Agile». Інтерв'юер перевіряє не завчені назви, а розуміння наслідків: що модель робить із вартістю дефекту і з місцем тестування в процесі. Саме це розуміння й будуємо в цій главі.

    Фази SDLC і місце тестування

    SDLC (software development lifecycle, життєвий цикл розробки ПЗ) — це набір фаз, через які проходить будь-який продукт, незалежно від процесу в конкретній команді:

    1. Збір і аналіз вимог — з'ясовуємо, що саме треба побудувати і навіщо.
    2. Проєктування (дизайн) — вирішуємо, як це буде влаштовано: архітектура, інтерфейси, дані.
    3. Реалізація (кодування) — пишемо код.
    4. Тестування — перевіряємо, що побудоване відповідає вимогам і придатне до використання.
    5. Впровадження (деплой) — віддаємо продукт користувачам.
    6. Підтримка (супровід) — виправляємо знайдене в експлуатації, розвиваємо далі.

    Ключова думка: фази є в кожній моделі, а моделі відрізняються тим, у якому порядку і скільки разів ці фази проходяться. Один прохід від початку до кінця — послідовні моделі (waterfall, V-модель). Багато коротких проходів — ітеративні й інкрементні, включно з Agile.

    Друга ключова думка — про місце тестування. У главі про базові поняття ми бачили, що вартість виправлення дефекту зростає з кожною фазою: помилка у вимогах, знайдена на проді, коштує на порядки дорожче, ніж знайдена на рев'ю документа. Тому силабус ISTQB формулює хороші практики, які працюють у будь-якій моделі:

    • для кожної активності розробки існує відповідна тестова активність;
    • кожен рівень тестування має власні цілі (докладно — у главі «Рівні тестування»);
    • аналіз і проєктування тестів для рівня починаються під час відповідної фази розробки, а не після неї.

    Третій пункт — це принцип раннього тестування з семи принципів у дії: тести можна проєктувати задовго до того, як з'явиться код, який можна виконувати. Далі побачимо, що різні моделі дають цьому принципу дуже різний простір.

    Waterfall: послідовна класика

    Каскадна модель (waterfall) — найстаріша й найпростіша з формалізованих: фази йдуть строго одна за одною, наступна починається після повного завершення попередньої, а результат кожної фази — затверджений документ. Назад «проти течії» повертатися не передбачено, звідси й метафора водоспаду. Показово, що вже Вінстон Ройс, який описав цю схему у статті 1970 року, вважав її в чистому вигляді ризикованою — але індустрія на десятиліття взяла на озброєння саме її.

    Сильні сторони в моделі є, і вони пояснюють, чому вона досі жива:

    • Передбачуваність. Обсяг, бюджет і терміни зафіксовані на старті — зручно для контрактів із фіксованою ціною.
    • Документація. Кожна фаза лишає по собі артефакт, за яким можна відновити будь-яке рішення.
    • Простота управління. Зрозуміло, на якій фазі проєкт і що далі.

    Плата за це — пізній зворотний зв'язок. Працюючий продукт з'являється наприкінці, і якщо у вимогах була помилка (а вимоги — одне з найчастіших джерел дефектів), знайдеться вона тоді, коли все вже спроєктовано, написано й «протестовано». Зміни на цьому етапі максимально дорогі.

    Для QA waterfall означає:

    • тестувальник підключається пізно — коли код уже готовий;
    • тестування — окрема фаза в кінці, і саме її стискають першою, коли розробка з'їла терміни (класичний біль: «реліз через тиждень, тестуй що встигнеш»);
    • зате є час і підстави писати докладні тест-плани й тест-кейси за затвердженими вимогами ще до отримання білда.

    V-модель: тести проєктуються разом із системою

    V-модель — розвиток каскадної ідеї, який виправляє її головну ваду щодо тестування. Ліва гілка «V» — ті самі послідовні фази розробки, від вимог до коду. Права гілка — рівні тестування, і кожен із них парний до конкретної фази розробки:

    тести проєктуються тут

    тести проєктуються тут

    тести проєктуються тут

    тести проєктуються тут

    Вимоги

    Системний дизайн

    Архітектурний дизайн

    Детальний дизайн

    Кодування

    Модульне тестування

    Інтеграційне тестування

    Системне тестування

    Приймальне тестування

    тести проєктуються тут

    тести проєктуються тут

    тести проєктуються тут

    тести проєктуються тут

    Вимоги

    Системний дизайн

    Архітектурний дизайн

    Детальний дизайн

    Кодування

    Модульне тестування

    Інтеграційне тестування

    Системне тестування

    Приймальне тестування

    Пунктирні зв'язки — суть моделі: приймальні тести проєктуються на фазі вимог, системні — на фазі системного дизайну, і так далі. Поки розробка спускається лівою гілкою, тестувальники вже працюють: аналізують вимоги на тестопридатність, пишуть тест-кейси, готують дані. Виконання тестів усе ще пізнє, але проєктування — раннє, і воно саме по собі знаходить дефекти у вимогах і дизайні, коли їх виправлення майже безкоштовне.

    V-модель також зручно ілюструє пару верифікація/валідація: ліва гілка й нижні рівні правої відповідають на питання «чи будуємо ми продукт правильно» (верифікація, відповідність специфікаціям), а приймальне тестування нагорі — «чи правильний продукт ми будуємо» (валідація, відповідність потребам користувача).

    Де це застосовують сьогодні: проєкти з жорсткою регуляторикою і високою ціною помилки — медичне ПЗ, авіоніка, автомобільні системи, банківський core. Там, де регулятор вимагає простежуваності «вимога → тест → результат», послідовна модель із документацією — не архаїзм, а типова відповідь на вимоги середовища.

    Ітеративні й інкрементні моделі

    Послідовні моделі ламаються там, де вимоги нестабільні. Відповідь індустрії — різати роботу на цикли. Тут важливо розрізняти дві осі, які часто плутають:

    • Інкрементна розробка — продукт нарощується частинами: кожен інкремент додає нову працюючу функціональність до вже готової. Метафора: будуємо будинок кімната за кімнатою, кожна одразу житлова.
    • Ітеративна розробка — продукт уточнюється повторними проходами: перша версія груба, кожна наступна ітерація її переробляє і покращує. Метафора: спершу ескіз олівцем, потім кольори, потім деталі.

    На практиці підходи майже завжди поєднуються: команда і додає нове, і переробляє старе за фідбеком. Класичні представники родини — прототипування (швидка чорнова версія заради уточнення вимог), RUP (Rational Unified Process) і спіральна модель Баррі Боема, де кожен виток спіралі включає аналіз ризиків: спершу будуємо те, що найризикованіше, щоб дорогі сюрпризи спливли якомога раніше.

    Планування ітерації

    Дизайн і розробка

    Тестування: нове + регресія

    Працюючий інкремент

    Фідбек

    Планування ітерації

    Дизайн і розробка

    Тестування: нове + регресія

    Працюючий інкремент

    Фідбек

    Для QA цикл на діаграмі означає фундаментальну зміну: тестування перестає бути фазою і стає повторюваною активністю. І головний наслідок — регресія: кожна ітерація може зламати те, що працювало в попередній, тож перевіряти доводиться не лише нове, а й старе — щоциклу. Обсяг регресійних перевірок зростає з кожним інкрементом, і саме тому в ітеративних моделях автоматизація з «приємного бонуса» перетворюється на умову виживання (що і в якому обсязі ганяти — у главі «Смоук, саніті, регресія і ретест»).

    Agile оглядово

    Agile — не окрема модель, а сімейство ітеративно-інкрементних підходів, об'єднаних цінностями Agile-маніфесту (2001): люди і взаємодія важливіші за процеси й інструменти; працюючий продукт — за вичерпну документацію; співпраця із замовником — за узгодження контракту; реакція на зміни — за дотримання плану. Важливо читати це як пріоритети, а не заперечення: праві частини теж мають цінність, просто ліві — більшу.

    Практично це виглядає як робота короткими циклами (у Scrum — спринти, зазвичай 1–4 тижні) з працюючим інкрементом продукту наприкінці кожного. Для тестувальника Agile змінює майже все:

    • QA всередині команди. Немає «відділу тестування», якому передають білд: тестувальник сидить у тій самій команді, що й розробники, і залучений від обговорення вимог до релізу.
    • Тестування безперервне. Перевірки йдуть паралельно з розробкою в межах одного циклу: аналіз user story, тестування фічі щойно вона готова, регресія перед закриттям спринту.
    • Легша документація. Замість багатосторінкових специфікацій — user story з acceptance criteria (розбір — у главі «Вимоги, user story та acceptance criteria»); тест-дизайн частіше спирається на чеклисти, ніж на детальні кейси.
    • Регресія щоспринту. Той самий наслідок ітеративності, тільки в найгострішій формі: без автоматизованого регресійного набору команда або сповільнюється, або релізить наосліп.

    Механіка Scrum і Kanban — ролі, події, артефакти, WIP-ліміти — розібрана окремо в главі «Agile для QA: Scrum і Kanban». А зв'язка коротких циклів із безперервною інтеграцією і деплоєм (CI/CD) чекає на тебе в розділі про Git і CI/CD.

    Критерії вибору моделі

    «Яка модель найкраща?» — некоректне питання; коректне — «найкраща для яких умов?». Основні критерії:

    КритерійТягне до послідовних моделейТягне до ітеративних / Agile
    Стабільність вимогВимоги зрозумілі й зафіксованіВимоги розмиті, будуть змінюватися
    Ціна помилкиКритична (медицина, авіація) — потрібні формальність і простежуваністьПомилку можна швидко виправити наступним релізом
    РегуляторикаАудит вимагає документованих фаз і підписівЗовнішніх вимог до процесу немає
    ЗамовникНедоступний після підписання контрактуГотовий дивитися демо і давати фідбек щоциклу
    Терміни виходуДата фіксована, обсяг зафіксованийВажливо випустити щось цінне якнайшвидше
    КонтрактФіксована ціна і обсягОплата за часом/ітераціями

    Два чесні застереження. По-перше, критерії часто суперечать один одному (регульований домен і мінливі вимоги одночасно — буденність), тож рішення — завжди компроміс. По-друге, чисті моделі в природі майже не трапляються: реальні процеси — гібриди на кшталт «Scrum усередині, але релізи раз на квартал із формальною регресією» або «waterfall по фазах, але з проміжними демо». На співбесіді фраза «у нас був гібрид: ось що з чого» звучить достовірніше, ніж «у нас був канонічний Scrum».

    Як модель змінює роботу QA

    Зведемо головне — саме цю таблицю варто вміти відтворити словами на співбесіді:

    АспектWaterfall / V-модельІтеративні / Agile
    Коли QA підключаєтьсяПізно (waterfall) або рано на рівні аналізу (V-модель)З першого дня, до появи коду
    Тестування — це...Окрема фаза наприкінціБезперервна активність у кожному циклі
    Документація тестівФормальні тест-плани і докладні кейсиЧеклисти, AC, легкі кейси
    РегресіяОдин великий цикл перед релізомЩоітерації, обсяг постійно росте
    АвтоматизаціяБажанаКритична: без неї цикл не замикається
    Роль тестувальникаНезалежний контролер якостіУчасник команди, що вбудовує якість у процес

    Незмінним лишається ядро професії: аналізувати, проєктувати перевірки, виконувати їх і звітувати. Модель змінює коли, як формально і як часто це відбувається — але не що саме робить тестувальник. До речі, ця внутрішня логіка роботи тестування — окремий цикл STLC, і він живе всередині будь-якої моделі SDLC; це тема наступної глави: «STLC: життєвий цикл тестування».

    Типові помилки

    • Виглядає як «waterfall мертвий, його ніхто не використовує», а насправді в регульованих доменах із фіксованим обсягом послідовні моделі — досі поширена практика, і питання «коли waterfall доречний» на співбесіді перевіряє саме це.
    • Виглядає як «V-модель — це waterfall, тільки з тестуванням», а насправді її суть — у парності: тести для кожного рівня проєктуються під час відповідної фази розробки, і це раннє проєктування само собою ловить дефекти вимог і дизайну.
    • Виглядає як «Agile — це коли без документації», а насправді маніфест каже «працюючий продукт важливіший за вичерпну документацію», а не «замість неї»: user story, AC і чеклисти — теж документація, просто легша.
    • Виглядає як «ітеративний та інкрементний — синоніми», а насправді це різні осі: інкрементність — про нарощування продукту частинами, ітеративність — про повторні проходи з уточненням; Agile поєднує обидві.
    • Виглядає як «в Agile тестувальники не потрібні, бо всі тестують», а насправді зникає окрема фаза тестування, а не роль: експертиза тест-дизайну й нюх на ризики нікуди не діваються — вони просто працюють усередині команди з першого дня.

    Підсумок

    • Фази SDLC однакові всюди; моделі відрізняються порядком і кількістю проходів — один довгий (послідовні) чи багато коротких (ітеративні).
    • У будь-якій моделі діє правило: кожній активності розробки відповідає тестова активність, і аналіз тестів починається разом із відповідною фазою розробки, а не після неї.
    • Що пізніше модель дає зворотний зв'язок, то дорожчий дефект: пізнє тестування — головна ціна waterfall, раннє проєктування тестів — головна ідея V-моделі.
    • Що коротші цикли, то більша вага регресії — і тим швидше автоматизація перетворюється з бонуса на необхідність.
    • Чистих моделей майже не буває: описуй на співбесіді реальний процес свого проєкту і його наслідки для тестування, а не назву з підручника.

    Що питають на співбесіді

    Типові формулювання:

    • «Назви фази SDLC. Де в них місце тестування?» — перевіряють, чи розумієш ти, що тестування не зводиться до фази після кодування.
    • «Чим V-модель відрізняється від waterfall?» — чекають слова про парність рівнів тестування і фаз розробки та про раннє проєктування тестів; відповідь «там тестування є, а там немає» — червоний прапорець.
    • «Чим ітеративна модель відрізняється від інкрементної?» — класична перевірка точності означень.
    • «Як змінюється робота тестувальника в Agile порівняно з waterfall?» — найчастіше питання блоку; сильна відповідь іде через наслідки: безперервність, регресія щоспринту, автоматизація, робота без детальних вимог.
    • «Коли waterfall кращий за Agile?» — перевіряють зрілість мислення: чи вмієш ти міркувати критеріями (регуляторика, стабільність вимог, ціна помилки), чи просто повторюєш «Agile — це добре».
    • «Яка модель була на твоєму проєкті і як вона впливала на твою роботу?» — інтерв'юер дивиться, чи бачив ти процес зсередини: конкретика («регресію ганяли останні два дні спринту, тому ми автоматизували смоук») цінується вище за теорію.

    Інтерв'юер на цьому блоці майже ніколи не хоче означень напам'ять — він хоче почути причинно-наслідкові зв'язки: модель → момент початку тестування → вартість дефекту → роль автоматизації. Будуй відповідь цим ланцюжком, і навіть просте питання прозвучить на рівень вище.

    Джерела

    • ISTQB CTFL Syllabus v4.0 — глава покриває розділ 2.1 «Testing in the Context of a Software Development Lifecycle» (рівні тестування з 2.2 — в окремій главі).
    • ISTQB Glossary — канонічні означення термінів: SDLC, incremental/iterative development, verification, validation.
    • Agile Manifesto — чотири цінності й дванадцять принципів; є українська версія.
    • Scrum Guide — первинне джерело зі Scrum, знадобиться в главі про Agile для QA.