Види тестування: класифікація
Зміст
«Які види тестування ви знаєте?» — чи не найпередбачуваніше питання співбесіди на trainee/junior QA. І саме на ньому кандидати найчастіше сипляться: перелічують завчений список із двадцяти назв, плутають рівні з видами, а на уточнення «чим exploratory відрізняється від ad-hoc?» відповідають «ну… нічим?». Інтервʼюер перевіряє не памʼять, а систему в голові: чи розумієш ти, що види тестування — це не плаский список, а кілька незалежних осей, за якими можна розкласти будь-яку перевірку.
Практична користь та сама. Коли тобі віддають нову фічу, класифікація — це готовий набір кутів огляду: що вона робить (функціональність), наскільки добре (продуктивність, безпека), що буде на невалідних даних (негативні перевірки), чи зручна вона людям (usability) і чи працює для користувачів поза твоєю локаллю (локалізація, доступність). Пропустив вісь — пропустив цілий клас багів.
Осі, а не список
Рівні тестування відповідають на питання «де в життєвому циклі ми перевіряємо»: компонентне, інтеграційне, системне, приймальне. Види відповідають на інше питання — «що саме і з якого кута ми перевіряємо». Силабус ISTQB CTFL 4.0 (розділ 2.2.2) називає чотири базові види: функціональне, нефункціональне, black-box і white-box — і окремо підкреслює, що будь-який вид можна виконувати на будь-якому рівні.
Найкорисніша ментальна модель — система координат. Одна й та сама фіча розкладається за кількома незалежними осями, і кожна конкретна перевірка має «координату» на кожній із них:
Осі незалежні, тож комбінуються вільно: негативна перевірка логіну може бути мануальною exploratory black-box сесією, а може — автоматизованим скриптованим grey-box тестом. Саме тому «список видів» неможливо вивчити вичерпно — а от чотири-пʼять осей тримаються в голові легко. До того ж вичерпне тестування неможливе в принципі, тому осі — це ще й спосіб свідомо вибрати, куди дивитися, а куди цього разу ні.
Функціональне vs нефункціональне
Функціональне тестування (functional testing) перевіряє, що система робить: чи відповідає її поведінка вимогам. Нефункціональне (non-functional testing) — наскільки добре вона це робить: швидкість, стійкість, безпека, зручність, сумісність. Класифікацію нефункціональних характеристик якості дає стандарт ISO/IEC 25010 — саме на нього посилається і силабус ISTQB.
На прикладі логіну:
| Кут | Перевірка |
|---|---|
| Функціональна | Валідна пара email/пароль пускає в кабінет; невалідна — показує помилку; «забув пароль» надсилає лист |
| Нефункціональна | Форма відповідає швидко під навантаженням; пароль зберігається хешованим; логін працює в Safari і з клавіатури |
Дві пастки. Перша: функціональні вимоги зазвичай написані, а нефункціональні — ні. «Система має бути швидкою» — це не вимога, а побажання; робота QA — довести його до перевірюваного вигляду («сторінка каталогу віддає перший контент до 2 секунд на 4G»). Друга: нефункціональні дефекти часто архітектурні. Падіння під навантаженням не лікується дрібним патчем — тому знайдене перед релізом, воно коштує максимально дорого.
Black-box, white-box і grey-box
Ця вісь — про те, скільки тестувальник знає про внутрішню будову системи і звідки бере тестові ідеї.
- Black-box («чорна скринька») — ідеї беруться з вимог і зовнішньої поведінки; код невидимий. Сюди належать специфікаційні техніки тест-дизайну: класи еквівалентності, граничні значення (детально — в розділі «Тест-дизайн»).
- White-box («біла/прозора скринька») — ідеї беруться зі структури коду: покрити всі гілки, всі умови. Зазвичай територія розробників і SDET; вимірюється покриттям коду.
- Grey-box — часткове знання. Ти тестуєш через UI, але знаєш схему бази, читаєш логи, бачиш запити в мережевій панелі — і завдяки цьому будуєш точніші перевірки.
Приклад grey-box: перевіряєш реєстрацію через форму (black-box кут), але після сабміту заглядаєш у базу і бачиш, що пароль лежить у відкритому вигляді. Через UI цей дефект невидимий у принципі. Ріст із manual QA в AQA — це значною мірою рух уздовж цієї осі: чим більше розумієш, як воно влаштоване всередині, тим дешевше знаходиш глибокі баги.
Позитивні й негативні перевірки
Позитивна перевірка подає валідний вхід і очікує успішний результат. Негативна подає невалідний вхід або неочікувану дію і очікує, що система відреагує контрольовано: зрозуміла помилка, жодного падіння, жодних зіпсованих даних.
Ключовий нюанс, на якому ловлять на співбесідах: негативний тест вважається пройденим, коли система коректно відхилила сміття. Якщо форма мовчки прийняла email без «@» — негативний тест упав.
Для поля email негативних ідей завжди більше, ніж позитивних: порожній рядок, пробіли, відсутній «@», два «@», 300 символів, кирилиця в домені, emoji, HTML-теги. Користувачі роблять неочікуване постійно, тому значна частина продакшн-багів живе саме на негативних сценаріях — а кандидати на співбесідах стабільно називають три позитивні перевірки і зупиняються.
Обидва типи перевірок однаково добре автоматизуються — аби оракул був чіткий (приклад потребує основ JS/TS; можна пропустити без втрати змісту):
import { test, expect } from '@playwright/test';
test('валідні креденшели пускають у кабінет', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('user@example.com');
await page.getByLabel('Пароль').fill('correct-horse-battery');
await page.getByRole('button', { name: 'Увійти' }).click();
await expect(page).toHaveURL(/\/dashboard/);
});
test('невалідний пароль дає зрозумілу помилку, а не 500', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('user@example.com');
await page.getByLabel('Пароль').fill('wrong');
await page.getByRole('button', { name: 'Увійти' }).click();
await expect(page.getByRole('alert')).toContainText('Невірний email або пароль');
});
Скриптоване, exploratory та ad-hoc
Ця вісь — про те, скільки дизайну тестів відбувається до виконання.
| Аспект | Скриптоване | Exploratory | Ad-hoc |
|---|---|---|---|
| Дизайн тестів | Заздалегідь, у кейсах | Під час виконання | Немає |
| Документація | Тест-кейси/чеклисти | Чартер + нотатки сесії | Немає |
| Відтворюваність | Висока | Середня (по нотатках) | Низька |
| Коли доречне | Регресія, приймання, аудит | Нова фіча, пошук нетипових багів | Швидко «потикати» після дрібного фіксу |
Скриптоване (scripted) тестування — перевірки спроєктовані заздалегідь: кроки, дані, очікуваний результат. Плюси: відтворюваність, передаваність, слід для аудиту. Мінус: знаходить лише те, що хтось передбачив.
Дослідницьке (exploratory) тестування — одночасне вивчення продукту, дизайн і виконання тестів. Це не хаотичне тикання: сесійний підхід дає чартер («дослідити імпорт CSV з кута невалідних кодувань»), таймбокс (зазвичай 60–120 хвилин), нотатки і дебриф. Канонічний розбір — окрема глава в розділі «Тест-дизайн»; тут достатньо запамʼятати межу.
Ad-hoc — перевірка без структури й документації: сів, потикав, пішов далі. Найдешевший спосіб зловити очевидне і цілком легітимний у своїй ніші — але результат не відтворити і не передати.
Межа між exploratory і ad-hoc — улюблене питання-фільтр на співбесідах: чартер, таймбокс і нотатки перетворюють одне на інше.
Нефункціональні види: короткий огляд
Кожен із цих видів — окрема дисципліна з власним інструментарієм; тут — рівно стільки, скільки треба для системної картини і співбесіди trainee.
Продуктивність (performance testing). Вимірює час відповіді, пропускну здатність і споживання ресурсів. Класичні підвиди: навантажувальне (load) — поведінка під очікуваним навантаженням; стресове (stress) — за межею очікуваного, шукаємо точку відмови і те, як система деградує; spike — різкий стрибок трафіку; endurance/soak — тривала робота, полювання на витоки памʼяті.
Безпека (security testing). Перевіряє захищеність даних і функцій: автентифікацію й авторизацію, стійкість до інʼєкцій, витоки чутливих даних. Загальновживаний орієнтир — OWASP Top 10, оновлюваний раз на кілька років перелік найкритичніших ризиків безпеки вебзастосунків. Мінімум, який має помічати кожен QA: паролі й токени в URL чи логах, доступ до чужих даних простою підміною id у запиті.
Сумісність (compatibility testing). Чи працює продукт у різних середовищах: браузери та їхні версії, ОС, пристрої, розширення екрана — плюс зворотна сумісність версій API і форматів даних. Перевірити «все всюди» неможливо, тому матрицю сумісності будують від аналітики реальних користувачів і ризиків: топ-3 браузери покривають більшість аудиторії, решта — вибірково.
Usability: евристики Нільсена
Тестування зручності використання (usability testing) відповідає на питання: чи можуть реальні користувачі досягати своїх цілей результативно, ефективно і з задоволенням. Два основні інструменти: спостереження за користувачами, які виконують реальні задачі, та евристична оцінка (heuristic evaluation) — експертний прохід інтерфейсом за списком перевірених принципів.
Найвідоміший такий список — 10 евристик Якоба Нільсена (Jakob Nielsen, 1994):
- Видимість статусу системи — користувач завжди розуміє, що відбувається (спінер, прогрес, підтвердження).
- Відповідність системи реальному світу — мова користувача, а не жаргон розробників.
- Контроль і свобода користувача — є «аварійний вихід»: скасувати, повернутись.
- Послідовність і стандарти — однакові речі виглядають і поводяться однаково.
- Запобігання помилкам — краще не дати помилитись, ніж гарно повідомити про помилку.
- Впізнавання замість пригадування — опції видно, а не треба тримати в голові.
- Гнучкість та ефективність — новачку просто, досвідченому швидко (шорткати, історія).
- Естетичний і мінімалістичний дизайн — нічого зайвого, що конкурує за увагу.
- Допомога в розпізнаванні й виправленні помилок — повідомлення пояснює, що сталося і що робити, а не «Error 0x80004005».
- Довідка й документація — доступна, конкретна, по задачі.
QA рідко проводить повноцінні usability-дослідження, але евристики — готова мова для баг-репортів про UX: замість субʼєктивного «незручно» пишеш «порушена видимість статусу: після кліку "Зберегти" три секунди жодної реакції — користувач клікає повторно і створює дублікат».
Локалізація vs інтернаціоналізація
Пара термінів, яку плутають найчастіше. Інтернаціоналізація (internationalization, i18n) — проєктування продукту так, щоб адаптацію під різні мови й регіони було можливо зробити без переписування коду. Локалізація (localization, l10n) — сама адаптація під конкретну локаль. Числа в скороченнях — кількість літер між першою й останньою в англійському слові.
| i18n | l10n | |
|---|---|---|
| Що це | Готовність до адаптації | Адаптація під конкретну локаль |
| Хто робить | Розробники, архітектура | Перекладачі, LQA-тестувальники |
| Приклади робіт | Рядки винесені з коду, підтримка Unicode, гнучкі шаблони дат/чисел | Переклад, формати дат/валют, культурні норми, юридичні тексти |
| Що тестуємо | Псевдолокалізація, введення не-латиниці, перемикання локалі | Переклад у контексті UI, обрізання, коректність форматів |
i18n тестується до перекладу — зокрема псевдолокалізацією: рядки замінюють подовженими з діакритикою (щось на кшталт [!!! Àççôûñţ Šéţţîñĝš !!!]), і одразу видно захардкоджені тексти й верстку, яка не переживе довших слів. l10n тестується після: переклад у контексті (а не в таблиці рядків), формати — 1,000.50 проти 1 000,50, 07/16/2026 проти 16.07.2026, валюта і напрямок письма (RTL для арабської та івриту), німецькі складені слова, що розносять кнопки.
Доступність (accessibility, a11y): оглядово
Тестування доступності перевіряє, чи можуть продуктом користуватися люди з порушеннями зору, слуху, моторики чи когнітивними особливостями. Канонічний стандарт — WCAG (Web Content Accessibility Guidelines) від W3C: чотири принципи (сприйманість, керованість, зрозумілість, надійність — POUR) і три рівні відповідності A/AA/AAA, де AA — типова ціль команд і законодавств.
Мінімальний набір перевірок, доступний кожному QA без спецпідготовки: пройти ключовий сценарій лише з клавіатури (фокус видно? нічого не «застрягло»?), перевірити alt-тексти зображень, контраст тексту, звʼязку полів форми з підписами. Автоматичні сканери ловлять лише частину проблем — решта вимагає ручної перевірки, в ідеалі зі скрінрідером. Важливо розуміти й мотивацію: у багатьох юрисдикціях доступність — вимога закону, а не «nice to have». Детальний розбір — в окремій главі розділу про веб.
Мануальне vs автоматизоване
Остання вісь — хто виконує перевірку. Правильне питання тут не «що краще», а «яку перевірку дешевше й надійніше виконувати як».
Автоматизація сильна там, де перевірка часта, стабільна і має чіткий оракул — очікуваний результат, який можна порівняти програмно. Тому регресія — перший кандидат на автоматизацію: ті самі перевірки, кожен реліз, відомий результат. Людина незамінна там, де оракул нечіткий: exploratory, usability, «щось тут виглядає дивно». Корисна рамка: автоматизація виконує перевірки (checks) — порівняння з очікуванням; людина виконує тестування — дослідження і судження про якість.
І памʼятай, що автоматизація — інвестиція: тест треба написати, а потім підтримувати при кожній зміні продукту. Автоматизувати одноразову перевірку — збиток; не автоматизувати тисячну регресію — теж.
Типові помилки
- Виглядає як «нефункціональне — другорядне, потестуємо після релізу», а насправді нефункціональні дефекти найчастіше архітектурні: падіння під навантаженням не лікується патчем за вечір і коштує найдорожче саме тому, що знайдене пізно.
- Виглядає як «негативний тест — це тест, який падає», а насправді негативний тест проходить, коли система коректно відхилила невалідний вхід; падає він тоді, коли система мовчки прийняла сміття.
- Виглядає як «exploratory — це коли тикаєш без плану», а насправді без чартера, таймбокса й нотаток це ad-hoc; exploratory — дисциплінована техніка з артефактами.
- Виглядає як «black-box означає, що в код і БД дивитися заборонено», а насправді це лише джерело тестових ідей; заглянути в базу чи логи — перейти в grey-box і зловити те, що через UI невидиме.
- Виглядає як «локалізація — це переклад», а насправді це ще формати дат, чисел і валют, сортування, RTL, довжина рядків у верстці й культурний контекст; переклад — лише перший пункт чеклиста.
- Виглядає як «автоматизуємо все — і мануальне тестування не потрібне», а насправді автоматизація перевіряє відоме, а нові баги здебільшого живуть там, де сценарію ще не існує.
Підсумок
- Види тестування — незалежні осі (мета, знання внутрішньої будови, ступінь підготовки, спосіб виконання), а не плаский список; одна перевірка має координату на кожній осі, і будь-який вид застосовний на будь-якому рівні.
- Функціональне — «що робить система», нефункціональне — «наскільки добре»; нефункціональні вимоги зазвичай неписані, і їх треба явно виявляти й формулювати перевірюваними.
- Негативні перевірки — обовʼязкова половина тест-дизайну: система має контрольовано відхиляти невалідний вхід, і саме там живе значна частина продакшн-багів.
- Exploratory відрізняється від ad-hoc наявністю чартера, таймбокса й нотаток — це керована техніка, а не хаотичне тикання.
- Автоматизація забирає часті перевірки з чітким оракулом (регресію передусім); дослідження, usability і судження про якість лишаються за людиною.
Що питають на співбесіді
Типові формулювання:
- «Які види тестування ви знаєте?» — чекають не на список, а на структуру: назви осі, дай по прикладу на кожну.
- «Чим функціональне тестування відрізняється від нефункціонального? Приклади для однієї фічі.» — перевіряють, чи бачиш обидва кути на одному обʼєкті.
- «Що таке grey-box? Наведіть приклад.» — сильна відповідь містить конкретику: перевірка запису в БД, читання логів, мережева панель.
- «Чим exploratory відрізняється від ad-hoc?» — питання-фільтр; згадай чартер, таймбокс, нотатки.
- «Наведіть негативні перевірки для поля дати народження.» — дивляться, чи не зупинишся на трьох очевидних (майбутня дата, порожнє поле, 30 лютого, вік 150 років, невідповідний формат, вставка тексту).
- «Що б ви автоматизували в першу чергу і чому?» — перевіряють розуміння регресії, повторюваності й ціни підтримки, а не любов до інструментів.
- «Чим локалізація відрізняється від інтернаціоналізації?» — плюс уточнення, що саме перевіряти в кожній.
Інтервʼюер дивиться на три речі: чи є система (осі замість завченого переліку), чи є конкретика (приклади з реальних фіч, а не означення з підручника) і чи розумієш межі (де автоматизація не окупиться, де black-box недостатньо, коли ad-hoc — нормальний вибір).
Джерела
- ISTQB CTFL Syllabus 4.0 — розділ 2.2.2 (види тестування), 2.2.1 (рівні), 4.4.2 (exploratory testing); ця глава покриває розділ 2.2.2 силабусу.
- ISO/IEC 25010 — модель якості продукту, класифікація нефункціональних характеристик.
- 10 Usability Heuristics for User Interface Design — Nielsen Norman Group — канонічний список евристик Нільсена з поясненнями.
- Localization vs. Internationalization — W3C — розмежування i18n/l10n від W3C.
- WCAG overview — W3C WAI — огляд стандарту доступності, принципи та рівні відповідності.
Які види тестування ви знаєте?
Пастка цього питання в тому, що чекають не на завчений список із двадцяти назв, а на структуру. Сильна відповідь: види тестування — це кілька незалежних осей, за якими розкладається будь-яка перевірка. Вісь мети — функціональне (functional) проти нефункціонального (non-functional); вісь знання внутрішньої будови — black-box, grey-box, white-box; вісь ступеня підготовки — скриптоване, exploratory, ad-hoc; вісь способу виконання — мануальне проти автоматизованого. Силабус ISTQB CTFL 4.0 називає чотири базові види (функціональне, нефункціональне, black-box, white-box) і окремо підкреслює: будь-який вид можна виконувати на будь-якому рівні. Осі незалежні й комбінуються вільно: одна й та сама перевірка логіну може бути мануальною exploratory black-box сесією або автоматизованим скриптованим grey-box тестом. Після структури варто дати по одному прикладу на кожну вісь — це показує, що система в голові, а не в шпаргалці.
Чим види тестування відрізняються від рівнів?
Рівні відповідають на питання «де в життєвому циклі ми перевіряємо»: компонентне, інтеграційне, системне, приймальне. Види — на інше питання: «що саме і з якого кута ми перевіряємо». Це ортогональні речі: будь-який вид застосовний на будь-якому рівні — нефункціональна перевірка продуктивності буває і на рівні компонента, і на рівні всієї системи. Найчастіша помилка кандидатів — змішати їх в один список: «функціональне, інтеграційне, регресійне, black-box». Якщо в переліку рівні стоять поруч із видами без розмежування — інтервʼюер бачить завчений список замість системи.
Чим функціональне тестування відрізняється від нефункціонального? Наведіть приклади для однієї фічі.
Функціональне перевіряє, що система робить — чи відповідає поведінка вимогам; нефункціональне — наскільки добре вона це робить: швидкість, стійкість, безпека, зручність, сумісність. Класифікацію нефункціональних характеристик якості дає стандарт ISO/IEC 25010. На прикладі логіну: функціональні перевірки — валідна пара email/пароль пускає в кабінет, невалідна показує помилку, «забув пароль» надсилає лист; нефункціональні — форма відповідає швидко під навантаженням, пароль зберігається хешованим, логін працює в Safari і з клавіатури. Інтервʼюер тут перевіряє, чи бачиш ти обидва кути на одному обʼєкті, а не два окремі списки з підручника. Тому приклади варто давати саме парами для однієї фічі.
Чому нефункціональні вимоги — окремий головний біль QA?
Дві причини. Перша: функціональні вимоги зазвичай написані, а нефункціональні — ні. «Система має бути швидкою» — це не вимога, а побажання; робота QA — довести його до перевірюваного вигляду, наприклад «сторінка каталогу віддає перший контент до 2 секунд на 4G». Друга: нефункціональні дефекти часто архітектурні — падіння під навантаженням не лікується дрібним патчем за вечір. Саме тому знайдений перед релізом нефункціональний дефект коштує максимально дорого, а відкладання «потестуємо продуктивність після релізу» — типова управлінська помилка.
Що таке позитивні й негативні перевірки? Коли негативний тест вважається пройденим?
Позитивна перевірка подає валідний вхід і очікує успішний результат; негативна подає невалідний вхід або неочікувану дію і очікує, що система відреагує контрольовано: зрозуміла помилка, жодного падіння, жодних зіпсованих даних. Ключовий нюанс, на якому ловлять на співбесідах: негативний тест проходить, коли система коректно відхилила сміття. Якщо форма мовчки прийняла email без «@» — негативний тест упав, хоча жодної червоної помилки на екрані немає. Значна частина продакшн-багів живе саме на негативних сценаріях, бо користувачі роблять неочікуване постійно, а тест-дизайн часто зупиняється на трьох позитивних перевірках. Обидва типи однаково добре автоматизуються — аби оракул був чіткий.
Наведіть негативні перевірки для поля email.
Слабка відповідь зупиняється на «порожнє поле і без собачки». Сильна показує, що негативних ідей завжди більше, ніж позитивних: порожній рядок, самі пробіли, відсутній «@», два «@», рядок на 300 символів, кирилиця в домені, emoji, HTML-теги в значенні. Для кожної ідеї важливо розуміти очікування: система має відхилити ввід зі зрозумілою помилкою, а не впасти і не прийняти мовчки. Той самий підхід працює для будь-якого поля — для дати народження це майбутня дата, 30 лютого, вік 150 років, невідповідний формат, вставка тексту замість дати. Інтервʼюер дивиться не на кількість, а на те, чи є в тебе генератор ідей замість трьох завчених прикладів.
Що таке black-box і white-box тестування?
Це вісь про те, звідки тестувальник бере тестові ідеї і скільки знає про внутрішню будову системи. Black-box («чорна скринька») — ідеї беруться з вимог і зовнішньої поведінки, код невидимий; сюди належать специфікаційні техніки тест-дизайну на кшталт класів еквівалентності та граничних значень. White-box («біла/прозора скринька») — ідеї беруться зі структури коду: покрити всі гілки, всі умови; зазвичай це територія розробників і SDET, а міряється воно покриттям коду. Важливо не плутати: black-box — це джерело тестових ідей, а не заборона дивитися в код чи базу. Між ними лежить grey-box — часткове знання внутрішньої будови.
Що таке grey-box тестування? Наведіть приклад.
Grey-box — часткове знання внутрішньої будови: тестуєш через UI, але знаєш схему бази, читаєш логи, бачиш запити в мережевій панелі — і завдяки цьому будуєш точніші перевірки. Класичний приклад: перевіряєш реєстрацію через форму (black-box кут), але після сабміту заглядаєш у базу і бачиш, що пароль лежить у відкритому вигляді — через UI цей дефект невидимий у принципі. Сильна відповідь на співбесіді містить саме таку конкретику: перевірка запису в БД, читання логів, мережева панель DevTools. Ріст із manual QA в AQA — значною мірою рух уздовж цієї осі: чим більше розумієш, як система влаштована всередині, тим дешевше знаходиш глибокі баги.
Чим exploratory тестування відрізняється від ad-hoc?
Це питання-фільтр: на ньому відсіюють кандидатів, які вважають, що «ну… нічим». Exploratory — одночасне вивчення продукту, дизайн і виконання тестів, але дисципліноване: сесійний підхід дає чартер («дослідити імпорт CSV з кута невалідних кодувань»), таймбокс (зазвичай 60–120 хвилин), нотатки і дебриф. Ad-hoc — перевірка без структури й документації: сів, потикав, пішов далі; результат не відтворити і не передати. Межа проходить саме по артефактах: чартер, таймбокс і нотатки перетворюють одне на інше. При цьому ad-hoc цілком легітимний у своїй ніші — найдешевший спосіб зловити очевидне після дрібного фіксу.
Коли скриптоване тестування доречніше за exploratory?
Скриптоване тестування — перевірки, спроєктовані заздалегідь: кроки, дані, очікуваний результат. Його сильні сторони — відтворюваність, передаваність іншій людині та слід для аудиту, тому воно доречне для регресії, приймання і всюди, де потрібен формальний доказ виконання. Слабкість — воно знаходить лише те, що хтось передбачив на етапі дизайну. Exploratory виграє на новій фічі й у пошуку нетипових багів, де сценаріїв ще не існує. Практично команди комбінують: скриптована регресія тримає відоме, exploratory-сесії шукають невідоме.
Які підвиди тестування продуктивності ви знаєте?
Продуктивність (performance testing) вимірює час відповіді, пропускну здатність і споживання ресурсів, а підвиди різняться профілем навантаження. Навантажувальне (load) — поведінка під очікуваним навантаженням. Стресове (stress) — за межею очікуваного: шукаємо точку відмови і те, як система деградує. Spike — різкий стрибок трафіку. Endurance/soak — тривала робота, полювання на витоки памʼяті. На співбесіді достатньо чітко розвести load і stress (очікуване навантаження проти пошуку межі) і памʼятати, що нефункціональні дефекти такого класу зазвичай архітектурні — тому їх шукають якомога раніше.
Що перевіряє тестування безпеки і що з цього має помічати кожен QA?
Security testing перевіряє захищеність даних і функцій: автентифікацію й авторизацію, стійкість до інʼєкцій, витоки чутливих даних. Загальновживаний орієнтир — OWASP Top 10, оновлюваний раз на кілька років перелік найкритичніших ризиків безпеки вебзастосунків. Повноцінний пентест — окрема дисципліна, але є мінімум, який має помічати кожен QA без спецпідготовки: паролі й токени в URL чи логах, доступ до чужих даних простою підміною id у запиті. Приклад із практики grey-box: пароль у відкритому вигляді в базі — знахідка рівня «стоп-реліз», яку видно одним запитом до БД. Сильна відповідь показує, що безпека — не «окрема команда десь там», а кут огляду, який ти тримаєш у кожній фічі.
Як тестувати сумісність, якщо перевірити «все всюди» неможливо?
Сумісність (compatibility testing) — чи працює продукт у різних середовищах: браузери та їхні версії, ОС, пристрої, розширення екрана, плюс зворотна сумісність версій API і форматів даних. Комбінацій нескінченно багато, тому матрицю сумісності будують не з голови, а від аналітики реальних користувачів і ризиків. Практично: топ-3 браузери покривають більшість аудиторії — їх перевіряємо повно, решту вибірково. Це прямий наслідок принципу неможливості вичерпного тестування: осі класифікації допомагають свідомо вибрати, куди дивитися, а куди цього разу ні. На співбесіді слабка відповідь — «тестуємо в усіх браузерах», сильна — «будуємо матрицю від аналітики та ризиків».
Навіщо QA евристики Нільсена, якщо usability-дослідження проводять дизайнери?
Тестування зручності використання (usability testing) відповідає, чи можуть реальні користувачі досягати цілей результативно, ефективно і з задоволенням; два основні інструменти — спостереження за користувачами та евристична оцінка (heuristic evaluation), експертний прохід інтерфейсом за списком принципів. Найвідоміший список — 10 евристик Якоба Нільсена: видимість статусу системи, відповідність реальному світу, контроль і свобода користувача, послідовність, запобігання помилкам, впізнавання замість пригадування, гнучкість, мінімалізм, допомога з помилками, довідка. QA рідко проводить повноцінні дослідження, але евристики — готова мова для баг-репортів про UX. Замість субʼєктивного «незручно» пишеш: «порушена видимість статусу: після кліку "Зберегти" три секунди жодної реакції — користувач клікає повторно і створює дублікат». Такий репорт неможливо закрити з коментарем «а мені норм».
Чим локалізація відрізняється від інтернаціоналізації?
Інтернаціоналізація (internationalization, i18n) — проєктування продукту так, щоб адаптацію під різні мови й регіони було можливо зробити без переписування коду: рядки винесені з коду, підтримка Unicode, гнучкі шаблони дат і чисел; це робота розробників та архітектури. Локалізація (localization, l10n) — сама адаптація під конкретну локаль: переклад, формати дат і валют, культурні норми; це робота перекладачів і LQA-тестувальників. Числа в скороченнях — кількість літер між першою й останньою в англійському слові. Тестуються вони в різний час: i18n — до перекладу (псевдолокалізація, введення не-латиниці, перемикання локалі), l10n — після (переклад у контексті UI, обрізання рядків, формати на кшталт 1 000,50 проти 1,000.50, RTL для арабської та івриту). Типова пастка співбесіди — «локалізація це переклад»: насправді переклад лише перший пункт чеклиста.
Що таке псевдолокалізація і що вона виявляє?
Псевдолокалізація — техніка тестування i18n до того, як існує хоч один переклад: рядки інтерфейсу замінюють подовженими з діакритикою, щось на кшталт [!!! Àççôûñţ Šéţţîñĝš !!!]. Вона одразу виявляє два класи проблем: захардкоджені тексти (рядок лишився англійським — отже, він зашитий у код і перекладачам недоступний) і верстку, яка не переживе довших слів (німецькі складені слова легко розносять кнопки). Цінність у ранньому виявленні: ці дефекти архітектурні для процесу локалізації, і дешевше зловити їх до того, як продукт поїхав перекладачам на двадцять мов. Це типове питання «на глибину» після базового i18n vs l10n.
Що таке тестування доступності і що може перевірити кожен QA без спецпідготовки?
Тестування доступності (accessibility, a11y) перевіряє, чи можуть продуктом користуватися люди з порушеннями зору, слуху, моторики чи когнітивними особливостями. Канонічний стандарт — WCAG (Web Content Accessibility Guidelines) від W3C: чотири принципи POUR (сприйманість, керованість, зрозумілість, надійність) і три рівні відповідності A/AA/AAA, де AA — типова ціль команд і законодавств. Мінімальний набір перевірок, доступний кожному: пройти ключовий сценарій лише з клавіатури (фокус видно? нічого не застрягло?), перевірити alt-тексти зображень, контраст тексту, звʼязку полів форми з підписами. Важливо памʼятати межу автоматизації: сканери ловлять лише частину проблем, решта вимагає ручної перевірки, в ідеалі зі скрінрідером. І мотивація не лише етична: у багатьох юрисдикціях доступність — вимога закону, а не «nice to have».
Що б ви автоматизували в першу чергу і чому?
Правильна рамка відповіді — не «що краще», а «яку перевірку дешевше й надійніше виконувати як». Автоматизація сильна там, де перевірка часта, стабільна і має чіткий оракул — очікуваний результат, який можна порівняти програмно. Тому перший кандидат — регресія: ті самі перевірки, кожен реліз, відомий результат. Далі варто згадати ціну: автоматизація — інвестиція, тест треба написати й підтримувати при кожній зміні продукту, тож автоматизувати одноразову перевірку — збиток, а не автоматизувати тисячну регресію — теж. Інтервʼюер цим питанням перевіряє розуміння повторюваності й ціни підтримки, а не любов до інструментів.
Чому «автоматизуємо все — і мануальне тестування не потрібне» не працює?
Тому що автоматизація перевіряє відоме, а нові баги здебільшого живуть там, де сценарію ще не існує. Корисна рамка: автоматизація виконує перевірки (checks) — порівняння з очікуванням; людина виконує тестування — дослідження і судження про якість. Людина незамінна там, де оракул нечіткий: exploratory, usability, відчуття «щось тут виглядає дивно», яке неможливо закодувати в асерт. Додатковий аргумент — економічний: кожен автотест має ціну підтримки, і тотальна автоматизація нестабільних чи одноразових перевірок генерує збиток замість цінності. Сильна відповідь тримає баланс: регресію і часті перевірки з чітким оракулом — машині, дослідження і судження — людині.
Три кейси, де класифікація працює як інструмент, а не як тема для співбесіди: розкладання нової фічі за осями (щоб не пропустити цілий клас багів), негативні перевірки одного поля з автотестом на контрольовану відмову і таблиця рішень «автоматизувати чи ні». Скрізь — що дивитися і чому.
Кейс 1. Нова фіча «експорт звіту в CSV»: прохід за осями
Тобі віддали фічу без готових тест-кейсів. Замість «потикати, що згадається» — прохід за осями класифікації: кожна вісь — готовий кут огляду, і кожен рядок таблиці нижче ловить окремий клас багів.
| Кут | Що перевіряємо |
|---|---|
| Функціональний | Файл містить саме ті дані, що на екрані; фільтри й сортування застосовані; порожній звіт дає файл із заголовками, а не помилку |
| Негативний | Коми, лапки й переноси рядків усередині значень; кирилиця; звіт, який видалили під час експорту |
| Продуктивність | Звіт на сотні тисяч рядків: скільки триває, чи не блокує UI, що з памʼяттю при тривалій роботі |
| Безпека | Підміна id звіту в запиті — чи не віддає чужі дані; токен не світиться в URL посилання на файл |
| Сумісність | Файл відкривається в Excel і Google Sheets; кодування не ламає кирилицю |
| Локалізація | Формат дат і чисел у файлі відповідає локалі користувача: 16.07.2026 проти 07/16/2026, кома проти крапки в десяткових |
| Доступність | Кнопка експорту досяжна з клавіатури, статус «генерується…» видно і зрозуміло |
Що дивитися і чому:
- Кожен рядок — окремий клас багів. Пропустив вісь безпеки — пропустив доступ до чужих звітів підміною id; пропустив локалізацію — німецький користувач отримає числа, які Excel прочитає неправильно. Класифікація тут не теорія, а чекліст кутів огляду.
- Осі комбінуються. Перевірка «підміна id» — негативна за метою і grey-box за знанням будови (треба розуміти, як формується запит). Це нормально: у перевірки є координата на кожній осі одночасно.
- Не всі осі рівноцінні для цієї фічі. Вичерпне тестування неможливе, тому глибину на кожній осі вибираємо за ризиком: для внутрішнього адмінського звіту локалізація може почекати, для клієнтського експорту рахунків — ні.
Кейс 2. Поле «дата народження»: негативні перевірки і тест на контрольовану відмову
Класика співбесіди: «наведіть негативні перевірки для поля дати народження». Слабка відповідь зупиняється на трьох очевидних. Робочий список ідей:
- майбутня дата;
- порожнє поле;
- 30 лютого — дата, якої не існує;
- вік 150 років — формально валідна дата, що порушує бізнес-межі;
- невідповідний формат (
2026-07-16там, де чекають16.07.2026); - вставка тексту замість дати.
Памʼятай критерій: негативний тест проходить, коли система коректно відхилила сміття. В автотесті це два асерти — є зрозуміла помилка і немає падіння:
import { test, expect } from '@playwright/test';
const invalidBirthdates = [
{ value: '30.02.2000', reason: 'дата не існує' },
{ value: '16.07.2077', reason: 'майбутня дата' },
{ value: 'привіт', reason: 'текст замість дати' },
];
for (const { value, reason } of invalidBirthdates) {
test(`невалідна дата народження (${reason}) відхиляється контрольовано`, async ({ page }) => {
await page.goto('/signup');
await page.getByLabel('Дата народження').fill(value);
await page.getByRole('button', { name: 'Зареєструватися' }).click();
// 1) зрозуміла помилка біля поля, а не 500 чи біла сторінка
await expect(page.getByRole('alert')).toContainText('дату');
// 2) реєстрація НЕ пройшла — сміття не потрапило в систему
await expect(page).toHaveURL(/\/signup/);
});
}
Що дивитися і чому:
- Тест падає, якщо форма мовчки прийняла сміття. Другий асерт — головний: без нього тест «пройде» навіть тоді, коли система пустила користувача з датою 30 лютого далі. Це і є формалізація правила «негативний тест проходить, коли система відхилила невалідний вхід».
- «Вік 150 років» — не те саме, що «30 лютого». Перше — валідна дата, що порушує бізнес-правило; друге — невалідна дата як така. Хороший список негативних ідей розрізняє шари: формат, існування значення, бізнес-межі.
- Оракул тут чіткий, тому перевірка автоматизується добре. Очікування («помилка є, реєстрації немає») порівнюється програмно — це якраз той випадок, коли негативні перевірки заводять у регресію.
Кейс 3. Таблиця рішень: автоматизувати чи лишити людині
Беклог тестування перед релізом. Правильне питання — не «що краще», а «яку перевірку дешевше й надійніше виконувати як». Критерій автоматизації: перевірка часта + стабільна + чіткий оракул.
| Перевірка | Часта? | Стабільна? | Чіткий оракул? | Рішення |
|---|---|---|---|---|
| Регресія логіну (валідні/невалідні креденшели) | Так, кожен реліз | Так | Так: URL кабінету / текст помилки | Автоматизувати першою |
| API-контракт експорту (коди, схема відповіді) | Так | Так | Так: статус і схема | Автоматизувати |
| Нова фіча «шаринг звітів», щойно з розробки | Поки ні | Ні, UI ще міняється | Частково | Exploratory-сесія з чартером |
| «Чи зручний новий онбординг» | Разово | — | Ні: судження про якість | Людина: спостереження + евристики Нільсена |
| Одноразова перевірка міграції старих звітів | Один раз | — | Так | Виконати вручну/скриптом, у регресію не заводити |
Що дивитися і чому:
- Третя колонка вирішальна. «Зручно чи ні» неможливо порівняти програмно — автоматизація виконує перевірки (checks), а судження про якість лишається тестуванням, яке робить людина. Спроба закодувати нечіткий оракул дає або флакі-тест, або асерт, що нічого не перевіряє.
- Нову фічу спершу досліджують, потім скриптують. Поки UI пливе, автотест — це подвійна ціна підтримки; exploratory-сесія з чартером знайде нетипові баги дешевше, а стабілізовані сценарії потім поїдуть у регресію.
- Одноразова перевірка в регресії — чистий збиток. Автоматизація — інвестиція: написати плюс підтримувати при кожній зміні продукту. Міграцію перевірили раз — і тест, який більше ніколи не зловить баг, лише додає ваги пайплайну.
Осі, а не список
- Розумію, що види тестування — незалежні осі (мета, знання внутрішньої будови, ступінь підготовки, спосіб виконання), а не плаский список; одна перевірка має координату на кожній осі, а пропущена вісь — це пропущений клас багів.
- Знаю різницю між рівнями («де в життєвому циклі») і видами («що і з якого кута») і що будь-який вид виконується на будь-якому рівні (ISTQB CTFL 4.0, розділ 2.2.2).
Функціональне vs нефункціональне
- Знаю різницю: функціональне — «що система робить», нефункціональне — «наскільки добре» (класифікація характеристик — ISO/IEC 25010); можу навести обидва кути для однієї фічі.
- Розумію, що нефункціональні вимоги зазвичай неписані, і вмію доводити «система має бути швидкою» до перевірюваного вигляду з числом і умовою.
- Можу пояснити, чому нефункціональні дефекти найдорожчі: вони часто архітектурні й не лікуються дрібним патчем перед релізом.
Black-box, grey-box, white-box
- Знаю різницю black/white/grey-box і памʼятаю, що це джерело тестових ідей, а не заборона дивитися в код чи базу.
- Можу навести конкретний приклад grey-box: перевірка запису в БД після сабміту форми (пароль у відкритому вигляді), читання логів, мережева панель.
Позитивні й негативні перевірки
- Знаю різницю і памʼятаю головне: негативний тест проходить, коли система коректно відхилила невалідний вхід, і падає, коли мовчки прийняла сміття.
- Можу назвати 5+ негативних ідей для будь-якого поля вводу (email: порожній рядок, пробіли, без «@», два «@», 300 символів, кирилиця в домені, emoji, HTML-теги).
Скриптоване, exploratory, ad-hoc
- Знаю різницю трьох підходів за дизайном тестів, документацією і відтворюваністю.
- Можу пояснити, що перетворює ad-hoc на exploratory: чартер, таймбокс (60–120 хв), нотатки сесії і дебриф — улюблене питання-фільтр.
- Знаю нішу кожного: скриптоване — регресія/приймання/аудит, exploratory — нова фіча й нетипові баги, ad-hoc — швидко потикати після дрібного фіксу.
Нефункціональні види
- Розрізняю підвиди performance: load (очікуване навантаження), stress (за межею, точка відмови), spike (різкий стрибок), endurance/soak (тривала робота, витоки памʼяті).
- Знаю, що таке OWASP Top 10, і памʼятаю security-мінімум кожного QA: паролі/токени в URL чи логах, доступ до чужих даних підміною id.
- Розумію, що матрицю сумісності будують від аналітики реальних користувачів і ризиків, а не «все всюди».
Usability, локалізація, доступність
- Можу назвати кілька евристик Нільсена і використати їх як мову баг-репорту: не «незручно», а «порушена видимість статусу: після кліку три секунди без реакції».
- Знаю різницю i18n vs l10n: готовність до адаптації (розробники) проти адаптації під локаль (перекладачі, LQA); до перекладу тестуємо псевдолокалізацією (виявляє захардкоджені рядки і верстку, що не переживе довших слів), після — переклад у контексті, формати, RTL, обрізання.
- Знаю каркас WCAG (принципи POUR, рівні A/AA/AAA, AA — типова ціль) і мінімальні a11y-перевірки: сценарій лише з клавіатури, alt-тексти, контраст, підписи полів; сканери ловлять лише частину проблем.
Мануальне vs автоматизоване
- Знаю критерій автоматизації: перевірка часта, стабільна і з чітким оракулом — тому регресія перший кандидат; памʼятаю, що це інвестиція з ціною підтримки (автоматизувати одноразову перевірку — збиток, не автоматизувати тисячну регресію — теж).
- Можу пояснити рамку checks vs testing: автоматизація виконує перевірки-порівняння, людина — дослідження і судження про якість (exploratory, usability, нечіткий оракул).
Чим рівні тестування відрізняються від видів?
Питання
Рівні тестування і види: на які два різні питання вони відповідають?