Prog Academy
RU UA
QA и тестирование

Что такое QA (Quality Assurance)?

QA (Quality Assurance) — обеспечение качества продукта: работа над тем, чтобы дефекты не появлялись, а не только находились. QA охватывает весь процесс разработки — от анализа требований до выпуска версии.

На практике QA-инженер участвует в проекте задолго до появления кода: разбирает требования, задаёт вопросы о неочевидных сценариях, проектирует тестовую документацию. Многие ошибки дешевле всего исправлять именно на этом этапе, пока они существуют только в постановке задачи.

Дальше начинается проверка: ручное тестирование новых функций, регрессия перед релизом, работа с багами и их приоритетами, коммуникация с разработчиками и аналитиками. Со временем добавляется автоматизация рутинных проверок.

QA и тестирование — не синонимы

Тестирование — это поиск дефектов в уже сделанном продукте, одна из активностей. QA шире: это выстраивание процесса так, чтобы дефектов возникало меньше — требования без двусмысленностей, критерии готовности, автоматические проверки в конвейере сборки. Тестирование отвечает на вопрос «работает ли?», QA — «почему ломается и как перестать».

Подробная статья в блоге →

Связанные термины

Software Testing

Тестирование ПО — проверка того, что программа работает так, как задумано: соответствует требованиям, корректно ведёт себя при неожиданных данных и не ломается там, где раньше работала. Цель — найти дефекты до того, как их найдёт пользователь.

Manual Testing

Ручное тестирование — проверка продукта человеком без запуска автотестов: тестировщик сам проходит сценарии, изучает поведение интерфейса и фиксирует расхождения с ожидаемым результатом.

Test Case

Тест-кейс — описание одной проверки: при каких условиях, какие шаги выполнить, с какими данными и что считается правильным результатом. По хорошему тест-кейсу проверку может выполнить любой человек в команде и получить тот же вывод.

Test Automation

Автоматизация тестирования — написание программ, которые сами выполняют проверки и сравнивают результат с ожидаемым. Такие тесты запускают при каждом изменении кода, чтобы быстро замечать поломки в уже работающей функциональности.

Regression Testing

Регрессионное тестирование — повторная проверка уже работавшей функциональности после изменений в коде. Его цель — убедиться, что новая функция или исправление бага не сломали ничего из того, что раньше работало.