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