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

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

    Тест-план і стратегія тестування

    Зміст

    «Скільки часу треба на тестування цього релізу?» — питання, яке рано чи пізно прилітає кожному QA. Відповідь «ну, тижня два, мабуть» перетворює тебе на виконавця, якому дедлайн спустять згори. Відповідь «за нашою оцінкою 9±2 дні, за умови що стенд готовий у понеділок, а критичних багів буде не більше п'яти» — це вже розмова інженера, який керує своєю частиною проєкту. Різниця між цими двома відповідями і є тест-план: не документ на тридцять сторінок, а набір продуманих і зафіксованих рішень — що тестуємо, що ні, хто, коли, чим і за якими критеріями зупиняємось.

    На співбесідах рівня middle цю тему питають не заради означень. Інтерв'юер перевіряє, чи мислиш ти на рівень вище виконання тест-кейсів: чи вмієш обрізати скоуп, назвати ризики, дати оцінку з допущеннями і пояснити, чому «протестувати все» — не план. Формулювання типове: «уяви, що тобі дали нову фічу і два тижні — розкажи, як спланував би тестування».

    Стратегія, план і підхід: що є що

    Три терміни постійно плутають, бо в побуті всі вони звучать як «як ми будемо тестувати». Насправді вони живуть на різних рівнях і мають різний термін життя.

    Тестова політика (test policy)
    рівень організації: навіщо ми тестуємо

    Тестова стратегія (test strategy)
    рівень організації чи програми:
    як ми тестуємо будь-який проєкт

    Тестовий підхід (test approach)
    адаптація стратегії
    під конкретний проєкт

    Тест-план (test plan)
    рівень проєкту/релізу/рівня тестування:
    хто, що, коли і чим тестує саме тут

    Тестова політика (test policy)
    рівень організації: навіщо ми тестуємо

    Тестова стратегія (test strategy)
    рівень організації чи програми:
    як ми тестуємо будь-який проєкт

    Тестовий підхід (test approach)
    адаптація стратегії
    під конкретний проєкт

    Тест-план (test plan)
    рівень проєкту/релізу/рівня тестування:
    хто, що, коли і чим тестує саме тут

    АртефактРівеньЖивеВідповідає на питання
    Тестова політикаОрганізаціяРокамиНавіщо ми взагалі тестуємо, чого хочемо від якості
    Тестова стратегіяОрганізація / програмаРокамиЗагальні правила: рівні, види, інструменти, автоматизація
    Тестовий підхідКонкретний проєктПоки живе проєктЯк загальна стратегія гнеться під наш контекст
    Тест-планПроєкт / реліз / рівеньТижні–місяціКонкретика: скоуп, люди, строки, критерії, ризики

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

    ISTQB (класифікація з силабусу CTFL 2018 і Advanced Test Manager) розрізняє кілька типів стратегій, і на співбесіді корисно вміти назвати дві-три:

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

    У реальних командах стратегія майже завжди гібридна: автоматизована регресія + ризик-орієнтований скоуп нових фіч + exploratory там, де вимоги тонкі.

    Ще одне розрізнення, яке питають: майстер-тест-план vs плани рівнів. На великих проєктах буває один загальний план (master test plan), який описує картину цілком, і окремі плани для рівнів — системного тестування, приймального, перформансу. У продуктовій команді з одним релізним потоком це зазвичай схлопується в один документ — і це нормально.

    Що всередині тест-плану і навіщо він

    Головна пастка теми: думати, що тест-план — це документ. Насправді це рішення, а документ — лише спосіб їх зафіксувати й показати іншим. Класика від Ейзенхауера: «Plans are worthless, but planning is everything». Половина цінності плану виникає в момент написання: щоб заповнити розділ «ризики», доводиться подумати про ризики; щоб написати «поза скоупом» — свідомо вирішити, чого ми не робимо.

    Силабус ISTQB CTFL 4.0 (розділ 5.1.1) описує типовий вміст тест-плану так:

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

    Історично структуру тест-плану диктував стандарт IEEE 829 (редакція 1998 року) з його 16 розділами (test items, features to be tested, features not to be tested, suspension criteria тощо) — його ще можна зустріти в шаблонах компаній. Сучасний спадкоємець — ISO/IEC/IEEE 29119-3, стандарт тестової документації з шаблонами під різні процеси. Знати назви цих стандартів варто; заучувати 16 розділів — ні. Важливіше розуміти, які питання план закриває: що тестуємо (і що ні), як (рівні, види, техніки), хто і коли, на чому (середовища й дані — див. «Тестові середовища і виконання тестів»), коли зупиняємось (критерії) і що може піти не так (ризики).

    Розділ «Features not to be tested» («поза скоупом») — найнедооціненіший. Саме він захищає команду в ретроспективі релізу: якщо баг вилетів у зоні, яку явно виключили зі скоупу і це погодили стейкхолдери, — це усвідомлено прийнятий ризик, а не провал QA.

    Критерії входу, виходу і призупинення

    Критерії входу (entry criteria) та виходу (exit criteria) детально розібрані в главі про STLC — коротко: перші кажуть, коли фазу можна починати (білд задеплоєний, вимоги тестопридатні, дані готові), другі — коли її можна вважати завершеною (тести виконані, покриття досягнуте, немає відкритих критичних дефектів). В Agile-командах роль entry-критеріїв грає Definition of Ready, а exit-критеріїв — Definition of Done.

    У тест-плані до них додається третя пара, яку часто пропускають: критерії призупинення і відновлення (suspension and resumption criteria). Вони відповідають на питання «коли продовжувати тестування безглуздо». Типові критерії призупинення:

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

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

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

    Оцінка тестування: скільки це триватиме

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

    Силабус CTFL 4.0 (розділ 5.1.4) називає чотири техніки оцінки; для практики зручно групувати їх у три родини.

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

    Експертна оцінка. Оцінюють ті, хто робитиме роботу, або досвідчені колеги. Канонічний формат — Wideband Delphi: експерти оцінюють незалежно й анонімно, потім порівнюють оцінки, обговорюють розбіжності та повторюють раунд, поки оцінки не зійдуться. Його полегшена командна версія — planning poker зі стандартних Agile-практик (див. «Agile для QA: Scrum і Kanban»). Сенс анонімності першого раунду — прибрати тиск авторитету: якщо сеньйор перший скаже «три дні», решта підлаштується.

    Триточкова оцінка (three-point estimation). Замість одного числа даємо три: оптимістичне O (все йде ідеально), найімовірніше M і песимістичне P (усе, що могло піти не так, пішло). Далі зважена формула:

    E  = (O + 4×M + P) / 6     — очікувана оцінка
    SD = (P − O) / 6           — стандартне відхилення (розкид)

    Приклад: тестування фічі оцінили як O = 5, M = 8, P = 17 людино-днів. Тоді E = (5 + 32 + 17) / 6 = 9, а SD = (17 − 5) / 6 = 2. Відповідь менеджеру: «9±2 дні» — тобто чесний діапазон від 7 до 11. Формула навмисно тягне оцінку до найімовірнішого значення (вага 4), але песимістичний хвіст не дає їй бути наївною.

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

    Планування ресурсів

    Оцінка відповідає на «скільки», планування ресурсів — на «чим і ким». Класичний чеклист ресурсів у плані:

    • Люди: скільки, з якими скілами (мануальні перевірки, автоматизація, перформанс), хто резервує кого при відпустках і лікарняних. Тут же — розподіл ролей: хто пише кейси, хто виконує, хто тріажить баги.
    • Середовища: які стенди потрібні, коли вони мають бути готові, хто їх готує. Найчастіше зривається саме це — тому дата готовності середовища має стояти в плані як явна залежність.
    • Тестові дані: звідки беруться, чи потрібна деперсоналізація, хто їх готує і коли.
    • Інструменти: TMS, баг-трекер, генератори даних, ліцензії, доступи. Банальний невиданий доступ до стенду з'їдає день роботи.
    • Календар і залежності: дата постачання білда, вікна регресії, дедлайн релізу, а між ними — буфер на цикли «баг → фікс → ретест».

    Окремий пункт, який ISTQB 4.0 виносить явно (розділ 5.1.2), — участь тестувальника в плануванні релізу та ітерації. У Scrum-команді тест-план у класичному вигляді часто не існує, але його зміст нікуди не зникає: скоуп тестування обговорюється на plannings, ризики — на refinement, критерії виходу живуть у Definition of Done. Тестувальник, який мовчить на плануванні, а потім скаржиться, що «на тестування не залишили часу», — сам пропустив момент, коли цей час закладався.

    Формальний документ чи сторінка у вікі

    Форма плану — функція контексту, а не якості команди.

    Формальний документ потрібен там, де його читає зовнішня сторона: регульовані домени (медичне ПЗ, авіоніка, фінанси), аутсорс-контракти, де план — частина угоди, сертифікаційні аудити. Тут доречні шаблони ISO/IEC/IEEE 29119-3, версіонування, підписи погодження. Документ у цих умовах — юридичний і аудиторський артефакт.

    Сторінка у вікі (Confluence, Notion) — норма для продуктових команд. Одна сторінка на реліз: скоуп, поза скоупом, ризики, підхід, оцінка, критерії, відповідальні. Типовий вигляд:

    Тест-план: реліз 2.14 (промокоди)
    
    Скоуп:        застосування промокоду в кошику, комбінації зі знижками,
                  API валідації коду; регресія чекауту (сюїта smoke + checkout)
    Поза скоупом: адмінка створення промокодів (фіча-флаг вимкнено до 2.15)
    Ризики:       перетин зі знижками лояльності — логіка нова, вимоги мінялись;
                  стенд staging ділимо з командою платежів (вікна після 14:00)
    Оцінка:       9±2 л/д (three-point; допущення: білд у пн, стенд наш після 14:00)
    Критерії виходу: сюїти виконані на 100%, критичних/високих багів — 0 відкритих,
                  відомі середні баги погоджені з PO
    Призупинення: фейл смоуку або недоступність API валідації понад 2 год
    Люди:         Оля — функціональні перевірки, Макс — регресія + API

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

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

    • Виглядає як ретельність: «план на 30 сторінок за повним шаблоном». А насправді — write-only документ: рішень у ньому на півсторінки, решта — копіпаст із шаблону, і жоден стейкхолдер його не читав. Цінність плану міряється прийнятими рішеннями, а не обсягом.
    • Виглядає як синоніми: «стратегія — це просто розділ плану». А насправді вони живуть на різних рівнях: стратегія — довгожитель організації і не знає про ваш реліз; план — короткоживучий і конкретний. На співбесіді підміна цих понять — маркер, що кандидат документів не писав.
    • Виглядає як точність: «оцінка — 12 днів». А насправді одне число без допущень — це обіцянка, яку порушить перший блокер. Чесна оцінка — діапазон плюс допущення, за яких вона валідна.
    • Виглядає як амбітний exit-критерій: «усі тести пройдені, багів немає». А насправді це недосяжний критерій, який доведеться порушити, — і тоді він не критерій, а декорація. Робочі критерії вимірні й реалістичні: «0 відкритих критичних, відомі середні погоджені з PO».
    • Виглядає як одне й те саме: критерії призупинення і критерії виходу. А насправді призупинення — це «пауза, тестувати далі безглуздо» (фейл смоуку, стенд лежить), а вихід — «фаза завершена». Плутанина між ними означає, що людина не розрізняє «не можемо працювати» і «закінчили роботу».
    • Виглядає як завершена робота: «план написали на старті й поклали». А насправді неоновлюваний план гірший за відсутній: він упевнено повідомляє застарілі скоуп і строки всім, хто його відкриє.

    Підсумок

    • Ієрархія: політика (навіщо) → стратегія (як взагалі, рівень організації) → підхід (як у цьому проєкті) → план (хто, що, коли конкретно). Стратегія живе роками, план — до кінця релізу.
    • Тест-план — це зафіксовані рішення (скоуп, ризики, ресурси, критерії), а не документ заради документа; половина цінності — у самому процесі планування.
    • Критеріїв у плані три пари: входу (коли починати), виходу (коли завершено) і призупинення/відновлення (коли продовжувати безглуздо). В Agile перші дві — це DoR і DoD.
    • Оцінка тестування — завжди діапазон з допущеннями: історичні дані (ratios, екстраполяція), експертні методи (Wideband Delphi) і three-point E = (O + 4M + P) / 6 дають число, але контекст дає чесність.
    • Форма плану залежить від читача: аудитор і регулятор — формальний документ за 29119-3; продуктова команда — жива сторінка у вікі. Нечитаний план не працює в жодній формі.

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

    • «Що таке тест-план і що в ньому має бути?» — інтерв'юер чекає не перелік 16 розділів IEEE 829, а розуміння питань, які план закриває: скоуп/анти-скоуп, підхід, ресурси, строки, критерії, ризики. Сильна відповідь згадує «поза скоупом» і ризики — саме їх найчастіше пропускають.
    • «Чим тест-план відрізняється від тестової стратегії?» — перевірка рівнів абстракції: стратегія — організація/довгий горизонт, план — проєкт/реліз. Бонус — назвати типи стратегій (аналітична, регресійно-обережна, реактивна) з прикладом, коли яка доречна.
    • «Як ти оціниш, скільки часу треба на тестування фічі X?» — дивляться на структуру мислення: декомпозиція на перевірки, врахування циклів баг-фікс-ретест, оцінка діапазоном, явні допущення. Назвати three-point з формулою — плюс; дати одне число без питань про контекст — мінус.
    • «Коли б ти зупинив тестування?» — тут насправді два питання: критерії виходу (коли завершено) і критерії призупинення (коли продовжувати безглуздо). Кандидат, який розрізняє їх і наводить приклади обох, виглядає сильно.
    • «У вас Scrum і немає тест-планів. Планування тестування теж немає?» — пастка на розуміння суті: зміст планування нікуди не зникає, він живе в plannings, refinement, DoR/DoD і risk-based скоупі регресії. Відповідь «в Agile план не потрібен» — червоний прапорець.

    Джерела

    • ISTQB CTFL Syllabus v4.0 — глава покриває розділ 5.1 «Test Planning»: вміст тест-плану (5.1.1), участь тестувальника в плануванні ітерації та релізу (5.1.2), критерії входу і виходу (5.1.3), техніки оцінки (5.1.4).
    • ISTQB Glossary — канонічні означення test policy, test strategy, test approach, test plan, suspension criteria.
    • ISO/IEC/IEEE 29119-3:2021 — Software testing, Part 3: Test documentation — сучасний стандарт тестової документації з шаблонами тест-планів, спадкоємець IEEE 829.