Що таке QA (Quality Assurance)?
QA (Quality Assurance) — забезпечення якості продукту: робота над тим, щоб дефекти не зʼявлялися, а не лише знаходилися. QA охоплює весь процес розробки — від аналізу вимог до випуску версії.
На практиці QA-інженер бере участь у проєкті задовго до появи коду: розбирає вимоги, ставить питання про неочевидні сценарії, проєктує тестову документацію. Багато помилок найдешевше виправляти саме на цьому етапі, поки вони існують лише в постановці задачі.
Далі починається перевірка: ручне тестування нових функцій, регресія перед релізом, робота з багами та їхніми пріоритетами, комунікація з розробниками й аналітиками. Згодом додається автоматизація рутинних перевірок.
QA і тестування — не синоніми
Тестування — це пошук дефектів у вже зробленому продукті, одна з активностей. QA ширше: це вибудовування процесу так, щоб дефектів виникало менше — вимоги без двозначностей, критерії готовності, автоматичні перевірки в конвеєрі збірки. Тестування відповідає на питання «чи працює?», QA — «чому ламається і як перестати».
Повʼязані терміни
Тестування ПЗ — перевірка того, що програма працює так, як задумано: відповідає вимогам, коректно поводиться за несподіваних даних і не ламається там, де раніше працювала. Мета — знайти дефекти до того, як їх знайде користувач.
Manual TestingРучне тестування — перевірка продукту людиною без запуску автотестів: тестувальник сам проходить сценарії, вивчає поведінку інтерфейсу й фіксує розбіжності з очікуваним результатом.
Test CaseТест-кейс — опис однієї перевірки: за яких умов, які кроки виконати, з якими даними і що вважається правильним результатом. За хорошим тест-кейсом перевірку може виконати будь-яка людина в команді й отримати той самий висновок.
Test AutomationАвтоматизація тестування — написання програм, які самі виконують перевірки й порівнюють результат з очікуваним. Такі тести запускають за кожної зміни коду, щоб швидко помічати поломки у вже працюючій функціональності.
Regression TestingРегресійне тестування — повторна перевірка вже працюючої функціональності після змін у коді. Його мета — переконатися, що нова функція чи виправлення бага не зламали нічого з того, що раніше працювало.