Что такое тестирование программного обеспечения
Что проверяют
Базовую терминологию и картину в голове. Вопрос открывающий, и слушают не определение из учебника, а то, раскладываете ли вы тестирование по осям и понимаете ли его цель: не найти все дефекты, а дать команде информацию о качестве и рисках для решения о выпуске.
Как отвечать
Начните с определения: тестирование это проверка соответствия продукта требованиям и ожиданиям пользователя плюс поиск ситуаций, в которых он ведёт себя не так, как заявлено.
Дальше покажите структуру, разложив по независимым осям:
По уровням: модульное, интеграционное, системное, приёмочное.
По тому, что проверяем: функциональные проверки и нефункциональные (производительность, безопасность, совместимость, удобство, отказоустойчивость).
По знанию внутреннего устройства: чёрный, белый и серый ящик.
По запуску кода: статическое (ревью, анализаторы, вычитка требований) и динамическое.
По цели в цикле: дымовое, регрессионное, повторное после исправления.
Закончите принципами, которые отличают инженера от кликера: исчерпывающее тестирование невозможно, поэтому проверки приоритизируются по рискам; дефекты кластеризуются; одни и те же тесты со временем перестают находить новое; тестирование показывает наличие дефектов, но не доказывает их отсутствие; чем раньше найден дефект, тем дешевле исправление.
Где спотыкаются
Называют целью поиск всех ошибок. Полный перебор входных данных невозможен даже для одной формы, и сильный ответ звучит как выбор: что проверяем в первую очередь и почему именно это.
Сваливают в один список уровни, виды и техники, ставя рядом регрессионное, юнит-тесты и белый ящик. Это разные оси, и путаница сразу показывает, что знания собраны из статей, а не из работы.
Не разделяют верификацию и валидацию, поэтому не могут объяснить, как продукт, полностью соответствующий спецификации, оказывается бесполезным для пользователя.