Я понимаю разницу так:
Цель Smoke тестирования состоит в том, чтобы убедиться, что критически важные функции системы работают нормально, например что приложение вообще запускается. А sanity это когда мы проверяем часть функционала после исправления незначительных ошибок в нем. Smoke это подмножество приемочного тестирования, а sanity это подмножество регрессионного тестирования.