QA Interview Hub · База знань · Тести

Manual QA

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

принципи, SDLC, STLC, рівні

Чим відрізняються QA, QC і тестування?

  • Тестування — перевірка продукту: запуск, пошук дефектів, порівняння з очікуваним результатом.
  • QC (Quality Control) — контроль якості готового продукту. Тестування — його головна частина. Фокус на продукті: знайти дефекти.
  • QA (Quality Assurance) — забезпечення якості процесу, щоб дефекти не з'являлися: стандарти, рев'ю вимог, ретроспективи, покращення процесів. Фокус на процесі: запобігти дефектам.

Тобто тестування ⊂ QC ⊂ QA.

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

Назви 7 принципів тестування.

  1. Тестування показує наявність дефектів, а не їх відсутність.
  2. Вичерпне тестування неможливе — тому потрібні пріоритизація і техніки тест-дизайну.
  3. Раннє тестування економить час і гроші: баг у вимогах дешевший за баг у проді.
  4. Скупчення дефектів — більшість багів зосереджена в кількох модулях.
  5. Парадокс пестицидів — ті самі тести з часом перестають знаходити нові баги, їх треба оновлювати.
  6. Тестування залежить від контексту — банкінг і лендинг тестують по-різному.
  7. Хибність відсутності помилок — продукт без багів, який не потрібен користувачам, усе одно провал.
На співбесіді: Тестування показує наявність дефектів, а не їх відсутність. Вичерпне тестування неможливе, тому пріоритизуємо. Тестувати треба якомога раніше. Дефекти скупчуються в кількох модулях. Однакові тести з часом перестають знаходити баги — парадокс пестицидів. Тестування залежить від контексту. І продукт без багів, але не потрібний користувачам, — все одно провал.

Чим верифікація відрізняється від валідації?

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

Валідація — «чи той продукт ми робимо?»: чи вирішує він реальну задачу користувача. Зазвичай динамічна: тестування робочої системи, UAT.

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

Що таке SDLC і STLC?

SDLC — життєвий цикл розробки: вимоги → дизайн → розробка → тестування → реліз → підтримка. Моделі: Waterfall, V-модель, ітеративні, Agile.

STLC — життєвий цикл тестування всередині SDLC:

  1. Аналіз вимог — що тестувати, які ризики, питання до PM.
  2. Планування — стратегія, обсяг, ресурси, критерії входу й виходу.
  3. Тест-дизайн — тест-кейси, чеклісти, тестові дані.
  4. Підготовка середовища.
  5. Виконання тестів і репорти дефектів.
  6. Завершення — звіт, метрики, уроки.
На співбесіді: SDLC — це життєвий цикл розробки продукту від вимог до підтримки. STLC — життєвий цикл тестування всередині нього: аналіз вимог, планування, тест-дизайн, підготовка середовища, виконання тестів і завершення зі звітом. У вакансії, де QA відповідає за весь цикл, це саме ці етапи.

Які є рівні тестування?

  • Модульне (unit) — окремі функції чи класи, зазвичай пишуть розробники.
  • Інтеграційне — взаємодія модулів чи сервісів: API, база, черги.
  • Системне — вся система як ціле, проти вимог. Тут основна робота QA.
  • Приймальне (acceptance) — чи готовий продукт для бізнесу: UAT, alpha і beta.

Пов'язана ідея — піраміда тестування: багато швидких unit-тестів, менше інтеграційних, найменше дорогих e2e.

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

Чим статичне тестування відрізняється від динамічного?

Статичне — без запуску коду: рев'ю вимог, макетів, тест-кейсів, коду, статичний аналіз. Знаходить дефекти найраніше і найдешевше.

Динамічне — із запуском програми: усе, що ми зазвичай називаємо тестуванням.

Вакансія прямо просить «validate requirements and provide early feedback» — це статичне тестування вимог, і його варто згадати з прикладом.

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