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

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

    STLC: життєвий цикл тестування

    Зміст

    «Опишіть, як був побудований процес тестування на вашому проєкті» — це питання звучить майже на кожній співбесіді рівня trainee/junior. Слабка відповідь — хаотичний перелік дій: «дивився таски, клікав, заводив баги». Сильна — структура: з чого починалась робота над фічею, які артефакти зʼявлялися на кожному кроці, як команда розуміла, що тестування можна завершувати. Ця структура має назву: життєвий цикл тестування (Software Testing Life Cycle, STLC).

    Є й практична причина знати STLC, а не лише співбесідна. Якщо вважати, що робота тестувальника починається з моменту «білд викотили на стенд», то половина найдешевших дефектів уже пропущена: суперечність у вимогах, яку можна було зловити за пʼять хвилин читання, тепер вшита в код, і її виправлення коштує в рази дорожче (чому саме — у главі про вартість дефекту). STLC — це, по суті, розгорнута відповідь на питання «а що QA робить, коли білда ще немає».

    Що таке STLC

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

    У силабусі ISTQB CTFL 4.0 (розділ 1.4) це описано трохи інакше — як набір тестових активностей (test activities): планування, моніторинг і контроль, аналіз, дизайн, імплементація, виконання, завершення. Пʼятифазна модель STLC, яку розбирає ця глава, — індустрійна схема, що прямо мапиться на ці активності. Важливий нюанс з силабусу: моніторинг і контроль — не окрема фаза «в черзі», а наскрізна діяльність, що триває весь цикл: порівнюємо фактичний прогрес із планом і коригуємо його.

    тестові умови, питання до вимог

    тест-план, оцінка, entry/exit criteria

    тест-кейси, чеклисти, тестові дані

    результати прогонів, баг-репорти

    підсумковий звіт, lessons learned

    1. Аналіз вимог

    2. Планування

    3. Дизайн тестів

    4. Виконання

    5. Закриття

    Реліз / наступний цикл

    тестові умови, питання до вимог

    тест-план, оцінка, entry/exit criteria

    тест-кейси, чеклисти, тестові дані

    результати прогонів, баг-репорти

    підсумковий звіт, lessons learned

    1. Аналіз вимог

    2. Планування

    3. Дизайн тестів

    4. Виконання

    5. Закриття

    Реліз / наступний цикл

    Пройдімося фазами — з конкретикою, що саме відбувається і що лягає на вихід.

    Фаза 1. Аналіз вимог

    Вхід: вимоги — специфікація, user story, макети, acceptance criteria. Білда немає і не треба.

    Тестувальник читає вимоги інакше, ніж розробник: не «як це зробити», а «як це перевірити і де це зламається». Шукаємо суперечності, неповноту, неоднозначність — і оцінюємо тестопридатність (testability). Вимога «пароль має бути надійним» нетестопридатна: неможливо написати перевірку на «надійність». Після уточнення в аналітика вона перетворюється на «мінімум 8 символів, хоча б одна літера і одна цифра» — і ось із цього вже народжуються тестові умови (test conditions): «пароль із 7 символів відхиляється», «пароль без цифр відхиляється» і так далі.

    Вихід фази: список тестових умов (що саме перевірятимемо, ще без кроків) і зауваження до вимог. Питання аналітику, поставлене на цій фазі, — найдешевший «баг-репорт» у всьому циклі. Докладно про роботу з вимогами — у главі «Вимоги, user story та acceptance criteria», а про те, чому перевірка документів без запуску коду — теж тестування, — у главі «Статичне тестування і ревʼю».

    Фаза 2. Планування тестування

    Тепер вирішуємо, як тестуватимемо. Основні питання цієї фази:

    • Обсяг (scope): що тестуємо, а що свідомо ні — і чому.
    • Підхід: які рівні й види тестування задіюємо, що автоматизуємо, що ганяємо руками.
    • Ресурси й ролі: хто тестує, на яких середовищах, з якими даними.
    • Строки й оцінка: скільки часу займе дизайн і виконання.
    • Ризики: що може піти не так і що робитимемо, якщо часу забракне.
    • Критерії входу і виходу для наступних фаз — про них окремий розділ нижче.

    Вихід фази — тест-план (test plan). Це не обовʼязково 40-сторінковий документ: у більшості Agile-команд це сторінка у вікі або секція в тікеті. Форма не важлива, важливо, що рішення ухвалені й зафіксовані до старту, а не заднім числом. Структуру тест-плану докладно розбирає глава «Тест-план і стратегія тестування».

    Фаза 3. Дизайн тестів

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

    Друга важлива робота цієї фази — пріоритизація: які перевірки критичні й виконуються першими, а які можна відкласти чи зрізати за браку часу. І трасування: кожна вимога має бути покрита хоча б однією перевіркою — звʼязку «вимога → тест» фіксують у матриці трасування вимог (requirements traceability matrix, RTM); тут достатньо знати, що вона існує. Систематичні техніки перетворення вимог на кейси — класи еквівалентності, граничні значення тощо — це окремий розділ «Тест-дизайн».

    Вихід фази: пріоритизований набір кейсів/чеклистів і підготовлені тестові дані.

    Фаза 4. Виконання тестів

    Єдина фаза, для якої потрібен білд. У класичних шестифазних описах STLC перед виконанням стоїть окрема фаза підготовки тестового середовища (test environment setup): розгорнути стенд, налити дані, перевірити доступи. Ми винесли її деталі в окрему главу — «Тестові середовища і виконання тестів», — але на співбесіді згадати її як частину циклу варто.

    Вхід фази — критерії входу виконано (див. нижче): білд розгорнуто, середовище живе, кейси готові. Далі рутина, з якої складається день тестувальника:

    • швидкий смоук — чи взагалі має сенс тестувати цей білд (що таке смоук — у главі «Смоук, саніті, регресія і ретест»);
    • прогін кейсів за пріоритетом, фіксація статусів: passed, failed, blocked, skipped;
    • на кожен failed — баг-репорт (структура й життєвий цикл дефекту — окрема глава);
    • ретест виправлених дефектів і регресія довкола змін.

    Вихід фази: результати прогонів, заведені дефекти, оновлені кейси (реальність часто коригує очікувані результати, написані по вимогах).

    Фаза 5. Закриття

    Фаза, яку найчастіше пропускають — і дарма. Тут відбувається три речі:

    1. Звірка з критеріями виходу: чи виконали все, що обіцяли в плані. Результат — підсумковий звіт (test summary report; у глосарії ISTQB 4.0 — test completion report): що протестовано, що знайдено, які дефекти лишилися відкритими і з якими ризиками команда йде в реліз (метрики і формат звіту — глава «Метрики тестування і звітність»).
    2. Lessons learned: що в процесі зʼїло час, які дефекти прослизнули і чому — щоб наступний цикл не наступав на ті самі граблі.
    3. Актуалізація артефактів: найцінніші з нових кейсів переїжджають у регресійний набір, застарілі — архівуються.

    Без закриття цикл не «завершується» — він просто обривається, і весь накопичений досвід губиться.

    Критерії входу і виходу (entry/exit criteria)

    Критерії входу (entry criteria) — вимірні умови, за яких фазу можна починати. Критерії виходу (exit criteria) — умови, за яких її можна вважати завершеною. Це ворота між фазами, і захищають вони від двох класичних провалів:

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

    Типовий набір для фази виконання виглядає так:

    Критерії входуКритерії виходу
    Білд розгорнуто на тестовому середовищі100% запланованих кейсів виконано
    Смоук-набір пройденоНемає відкритих дефектів рівня critical/blocker
    Тест-кейси готові й проревʼюваніПріоритетні вимоги покриті виконаними тестами
    Тестові дані та доступи підготовленіПідсумковий звіт підготовлено

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

    І чесне зауваження з практики: exit criteria майже ніколи не означають «усі дефекти виправлені». У релізи регулярно їдуть відомі мінорні баги — і це нормально, якщо рішення ухвалене свідомо, з оцінкою ризиків (як саме — глава «Ризик-орієнтоване тестування»). В Agile-командах роль entry/exit criteria виконують Definition of Ready і Definition of Done — ISTQB 4.0 прямо ставить між ними знак відповідності (розділ 5.1.3 силабусу).

    SDLC vs STLC

    Класичне питання на розуміння, а не на завчання. SDLC ви вже знаєте з попередньої глави — це життєвий цикл усього продукту. Порівняймо:

    АспектSDLCSTLC
    Що охоплюєУвесь шлях продукту: від ідеї до підтримкиЛише процес тестування
    МетаСтворити працюючий продуктЗнайти дефекти і дати команді чесну картину якості
    Хто задіянийУся команда: аналітики, розробники, QA, DevOpsНасамперед QA, у співпраці з командою
    Ключові артефактиВимоги, архітектура, код, релізТест-план, тест-кейси, баг-репорти, підсумковий звіт
    ЗвʼязокМістить тестування як одну зі складовихВкладений у SDLC і синхронізований з ним

    Головне слово тут — вкладений. STLC не йде «після розробки» і не існує паралельно сам по собі: кожна його фаза синхронізована з відповідною фазою SDLC. Аналіз вимог у STLC відбувається тоді ж, коли команда працює над вимогами в SDLC; дизайн тестів — поки пишеться код. У V-моделі ця відповідність намальована буквально: кожній фазі розробки дзеркально відповідає свій рівень тестування.

    Окреме питання, на якому валяться кандидати: «а в Agile ваш STLC ще існує?» Існує. Він не зникає — він стискається до масштабу ітерації: у кожному спринті для кожної user story проходять усі ті самі фази, тільки за години й дні, а не тижні, і фази активно перекриваються — поки одна фіча тестується, для наступної вже аналізуються вимоги. Як це виглядає в живому спринті — у главі «Agile для QA: Scrum і Kanban».

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

    Виглядає як «тестування — це виконання тестів», а насправді виконання — лише одна фаза з пʼяти. Аналіз вимог, планування і дизайн відбуваються до появи білда, і саме там ловляться найдешевші дефекти. Кандидат, чия розповідь про процес починається зі слова «білд», сам позначає, що три фази він пропускає.

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

    Виглядає як «entry/exit criteria — бюрократія для документа», а насправді це найпрактичніший інструмент фази планування: entry захищає від спалювання часу на нетестопридатний білд, exit — від тестування «доки не скінчиться час» і релізу наосліп.

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

    Виглядає як «SDLC і STLC — два окремі процеси», а насправді STLC вкладений у SDLC. Відповідь «SDLC — про розробку, STLC — про тестування» без слова про синхронізацію фаз — це половина відповіді.

    Підсумок

    • STLC — пʼять фаз: аналіз вимог → планування → дизайн → виконання → закриття. У кожної є вхід, діяльність і вихід-артефакт: тестові умови → тест-план → тест-кейси → результати й баг-репорти → підсумковий звіт.
    • Тестування починається з вимог, а не з білда: три фази з пʼяти відбуваються до того, як зʼявиться що запускати.
    • Entry/exit criteria — вимірні ворота між фазами, визначені на плануванні заздалегідь; в Agile їхню роль грають Definition of Ready і Definition of Done.
    • STLC вкладений у SDLC і синхронізований з ним; в Agile він не зникає, а стискається до масштабу спринта.
    • Моніторинг і контроль — наскрізна активність: прогрес звіряється з планом протягом усього циклу, а не наприкінці.

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

    «Назвіть фази STLC» / «Опишіть процес тестування на вашому проєкті». Інтервʼюер перевіряє не завчений список, а чи є у вас в голові процес: чи починається розповідь з вимог, чи згадуєте артефакти кожної фази. Найсильніший хід — розповісти фази на прикладі реальної фічі, яку ви тестували.

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

    «Що таке entry/exit criteria? Наведіть приклади». Тут цінують конкретику: «смоук пройдено, кейси готові» проти «немає відкритих critical, усі заплановані кейси виконано». Абстрактна відповідь без прикладів — червоний прапорець.

    «Коли можна завершити тестування?» Питання-пастка: відповідь «коли все перевірено» суперечить принципу неможливості вичерпного тестування. Сильна відповідь — через exit criteria і ризики: тестування завершується, коли виконані заздалегідь визначені критерії, а рішення про реліз ухвалюється з відкритими очима щодо залишкових ризиків.

    «Як STLC виглядає в Agile? Він там взагалі є?» Перевірка на гнучкість мислення: фази нікуди не діваються, вони стискаються до масштабу спринта і перекриваються. Відповідь «в Agile процесів немає» — миттєвий мінус.

    Джерела

    • ISTQB CTFL Syllabus 4.0 — ця глава покриває розділ 1.4 (Test Activities, Testware and Test Roles) і 5.1.3 (Entry Criteria and Exit Criteria).
    • ISTQB Glossary — канонічні означення термінів: test condition, entry criteria, exit criteria, test completion report.
    • Scrum Guide — першоджерело щодо Definition of Done, Agile-аналога exit criteria.