Ответ
Sanity-тестирование (Sanity Check) — это узконаправленное, поверхностное тестирование, выполняемое для подтверждения того, что конкретное изменение (фикс бага, новая функция) работает в целом корректно и не сломало критически важную, связанную функциональность.
Ключевые характеристики:
- Узкая направленность: Проверяется только измененный модуль или функция.
- Неглубокое погружение: Нет детального тестирования всех сценариев.
- Быстрое выполнение: Занимает минуты или часы.
- Цель: Решить, можно ли передавать сборку на более глубокое (регрессионное) тестирование.
| Отличие от Smoke-тестирования: | Smoke-тестирование | Sanity-тестирование |
|---|---|---|
| Проверка стабильности сборки в целом. | Проверка рациональности конкретного изменения (логики). | |
| Ответ на вопрос: "Запускается ли билд?" | Ответ на вопрос: "Работает ли исправленная функция?" | |
| Выполняется перед sanity-тестированием. | Выполняется после успешного smoke-теста. |
Пример: После исправления бага с расчетом скидки в корзине:
# Sanity-тест для проверки фикса
def test_cart_discount_sanity():
cart = Cart()
cart.add_item(price=1000, quantity=1)
cart.apply_promo_code("SUMMER10")
# Проверяем, что скидка применилась
assert cart.total_price == 900 # 10% скидка
# Проверяем, что базовая функциональность не сломана
assert cart.items_count == 1 Ответ 18+ 🔞
А, ну ты глянь, опять эти ваши мудрёные словечки, блядь. Саньти-тест, ёпта. Ну, слушай, сейчас я тебе на пальцах, как для дебила, объясню, а то ты, я смотрю, уже глаза стеклянные сделал.
Представь, ты починил у себя в квартире розетку. Раньше искрила, пиздец как, а ты её там подкрутил, изолентой обмотал, красота. Так вот, саньти-тест — это когда ты после ремонта не всю проводку в доме начинаешь прозванивать, а просто воткнёшь в эту розетку зарядку от телефона и посмотришь: заряжает? Не дымит? Не бьёт током? Вот и всё, ебать мои старые костыли! Работает — и хуй с ним, дальше жить можно.
Короче, суть:
- Сфокусирован на одном: Ты чекаешь только то, что вот прям щас поменял. Не лезешь в соседние комнаты проверять, работает ли там холодильник.
- Поверхностный: Не копаешься, не пытаешься сломать. Просто убедился, что основная заявленная фича жива — и свободен.
- Быстрый, как удар молнии: Минуты, ну максимум часик. Не неделю же, блядь.
- Цель проще некуда: Решить, можно ли эту сборку отдавать дальше, на полный разбор полётов (регресс), или она сразу в пизду полетела.
А теперь, чтобы ты не путал, как последний мудак, вот тебе разница с дымовым тестом (smoke):
| Smoke-тест (Дымовой) | Sanity-тест (Вменяемость) |
|---|---|
| Это как поджечь бумажку под новой машиной. Дымится? Не взрывается? Ну, вроде можно заводить. | Это как после замены колодок проехать 10 метров и нажать на тормоз. Машина остановилась? Отлично, логика ремонта верна. |
| Вопрос: "Сборка вообще запускается, блядь, или это просто куча битого кирпича?" | Вопрос: "А та херня, которую мы чинили, теперь работает так, как мы задумали, или опять какая-то хуйня?" |
| Делается ПЕРВЫМ, прямо после сборки. | Делается ПОСЛЕ того, как дымовой прошёл. |
Ну и пример, чтобы совсем пиздец стало понятно. Пофиксили баг со скидкой в корзине. Раньше, если ввести промокод "ЛЕТО15", счёт становился минус пятнадцать тысяч, и магазин тебе ещё доплачивать должен был, хитрая жопа.
Вот саньти-тест:
# Саньти-тест для проверки фикса
def test_cart_discount_sanity():
cart = Cart()
cart.add_item(price=1000, quantity=1)
cart.apply_promo_code("SUMMER10")
# Проверяем, что скидка применилась (а не наебка какая-то)
assert cart.total_price == 900 # 10% скидка
# И заодно глянем, что мы вообще не сломали базовую хуйню
assert cart.items_count == 1
Видишь? Мы не проверяем все 150 промокодов, не пытаемся применить скидку к уже скидочному товару, не проверяем корзину на 500 позиций. Мы просто смотрим: ага, фикс в принципе работает, и корзина не рассыпалась в пыль. Всё, sanity check пройден, можно нести эту версию тестерам, пусть они её уже ебут как хотят.