QA Interview Hub · База знань · Тести
Manual QA
Основи тестування
принципи, SDLC, STLC, рівні
Чим відрізняються QA, QC і тестування?
- Тестування — перевірка продукту: запуск, пошук дефектів, порівняння з очікуваним результатом.
- QC (Quality Control) — контроль якості готового продукту. Тестування — його головна частина. Фокус на продукті: знайти дефекти.
- QA (Quality Assurance) — забезпечення якості процесу, щоб дефекти не з'являлися: стандарти, рев'ю вимог, ретроспективи, покращення процесів. Фокус на процесі: запобігти дефектам.
Тобто тестування ⊂ QC ⊂ QA.
На співбесіді: Тестування — це пошук дефектів у продукті. QC — контроль якості продукту, і тестування його основна частина. QA ширше: це робота з процесом, щоб дефекти взагалі не з'являлися — рев'ю вимог, стандарти, покращення процесів. Тестування входить у QC, а QC — у QA.
Назви 7 принципів тестування.
- Тестування показує наявність дефектів, а не їх відсутність.
- Вичерпне тестування неможливе — тому потрібні пріоритизація і техніки тест-дизайну.
- Раннє тестування економить час і гроші: баг у вимогах дешевший за баг у проді.
- Скупчення дефектів — більшість багів зосереджена в кількох модулях.
- Парадокс пестицидів — ті самі тести з часом перестають знаходити нові баги, їх треба оновлювати.
- Тестування залежить від контексту — банкінг і лендинг тестують по-різному.
- Хибність відсутності помилок — продукт без багів, який не потрібен користувачам, усе одно провал.
На співбесіді: Тестування показує наявність дефектів, а не їх відсутність. Вичерпне тестування неможливе, тому пріоритизуємо. Тестувати треба якомога раніше. Дефекти скупчуються в кількох модулях. Однакові тести з часом перестають знаходити баги — парадокс пестицидів. Тестування залежить від контексту. І продукт без багів, але не потрібний користувачам, — все одно провал.
Чим верифікація відрізняється від валідації?
Верифікація — «чи правильно ми робимо продукт?»: відповідність специфікації та вимогам. Часто статична: рев'ю вимог, дизайну, коду.
Валідація — «чи той продукт ми робимо?»: чи вирішує він реальну задачу користувача. Зазвичай динамічна: тестування робочої системи, UAT.
На співбесіді: Верифікація відповідає на питання, чи правильно ми робимо продукт, тобто чи відповідає він специфікації. Валідація — чи ми робимо правильний продукт, тобто чи вирішує він задачу користувача. Продукт може повністю відповідати вимогам і при цьому бути непотрібним.
Що таке SDLC і STLC?
SDLC — життєвий цикл розробки: вимоги → дизайн → розробка → тестування → реліз → підтримка. Моделі: Waterfall, V-модель, ітеративні, Agile.
STLC — життєвий цикл тестування всередині SDLC:
- Аналіз вимог — що тестувати, які ризики, питання до PM.
- Планування — стратегія, обсяг, ресурси, критерії входу й виходу.
- Тест-дизайн — тест-кейси, чеклісти, тестові дані.
- Підготовка середовища.
- Виконання тестів і репорти дефектів.
- Завершення — звіт, метрики, уроки.
На співбесіді: SDLC — це життєвий цикл розробки продукту від вимог до підтримки. STLC — життєвий цикл тестування всередині нього: аналіз вимог, планування, тест-дизайн, підготовка середовища, виконання тестів і завершення зі звітом. У вакансії, де QA відповідає за весь цикл, це саме ці етапи.
Які є рівні тестування?
- Модульне (unit) — окремі функції чи класи, зазвичай пишуть розробники.
- Інтеграційне — взаємодія модулів чи сервісів: API, база, черги.
- Системне — вся система як ціле, проти вимог. Тут основна робота QA.
- Приймальне (acceptance) — чи готовий продукт для бізнесу: UAT, alpha і beta.
Пов'язана ідея — піраміда тестування: багато швидких unit-тестів, менше інтеграційних, найменше дорогих e2e.
На співбесіді: Рівні — модульне, інтеграційне, системне і приймальне тестування. Unit пишуть розробники, інтеграційне перевіряє взаємодію компонентів, системне — всю систему проти вимог, а приймальне — готовність для бізнесу. Піраміда тестування каже, що швидких низькорівневих тестів має бути більше, ніж дорогих наскрізних.
Чим статичне тестування відрізняється від динамічного?
Статичне — без запуску коду: рев'ю вимог, макетів, тест-кейсів, коду, статичний аналіз. Знаходить дефекти найраніше і найдешевше.
Динамічне — із запуском програми: усе, що ми зазвичай називаємо тестуванням.
Вакансія прямо просить «validate requirements and provide early feedback» — це статичне тестування вимог, і його варто згадати з прикладом.
На співбесіді: Статичне тестування — без запуску програми: рев'ю вимог, дизайну, коду. Динамічне — коли ми запускаємо систему і перевіряємо поведінку. Статичне дешевше, бо знаходить проблеми до того, як їх закодили: наприклад, суперечність у вимогах я знаходжу ще на грумінгу.