Что такое QA (Quality Assurance)?
QA (Quality Assurance) — обеспечение качества продукта: работа над тем, чтобы дефекты не появлялись, а не только находились. QA охватывает весь процесс разработки — от анализа требований до выпуска версии.
На практике QA-инженер участвует в проекте задолго до появления кода: разбирает требования, задаёт вопросы о неочевидных сценариях, проектирует тестовую документацию. Многие ошибки дешевле всего исправлять именно на этом этапе, пока они существуют только в постановке задачи.
Дальше начинается проверка: ручное тестирование новых функций, регрессия перед релизом, работа с багами и их приоритетами, коммуникация с разработчиками и аналитиками. Со временем добавляется автоматизация рутинных проверок.
QA и тестирование — не синонимы
Тестирование — это поиск дефектов в уже сделанном продукте, одна из активностей. QA шире: это выстраивание процесса так, чтобы дефектов возникало меньше — требования без двусмысленностей, критерии готовности, автоматические проверки в конвейере сборки. Тестирование отвечает на вопрос «работает ли?», QA — «почему ломается и как перестать».
Связанные термины
Тестирование ПО — проверка того, что программа работает так, как задумано: соответствует требованиям, корректно ведёт себя при неожиданных данных и не ломается там, где раньше работала. Цель — найти дефекты до того, как их найдёт пользователь.
Manual TestingРучное тестирование — проверка продукта человеком без запуска автотестов: тестировщик сам проходит сценарии, изучает поведение интерфейса и фиксирует расхождения с ожидаемым результатом.
Test CaseТест-кейс — описание одной проверки: при каких условиях, какие шаги выполнить, с какими данными и что считается правильным результатом. По хорошему тест-кейсу проверку может выполнить любой человек в команде и получить тот же вывод.
Test AutomationАвтоматизация тестирования — написание программ, которые сами выполняют проверки и сравнивают результат с ожидаемым. Такие тесты запускают при каждом изменении кода, чтобы быстро замечать поломки в уже работающей функциональности.
Regression TestingРегрессионное тестирование — повторная проверка уже работавшей функциональности после изменений в коде. Его цель — убедиться, что новая функция или исправление бага не сломали ничего из того, что раньше работало.