Ответ
KISS (Keep It Simple, Stupid) — это принцип проектирования, который утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Сложность увеличивает вероятность ошибок и затрудняет понимание, отладку и поддержку.
Применение в коде и автотестах:
- Пишите простые функции и методы. Функция должна делать одну вещь и делать её хорошо.
- Избегайте преждевременной оптимизации и избыточной абстракции. Не добавляйте слои сложности "на будущее".
- Используйте понятные имена переменных и функций.
calculateTotalPrice()лучше, чемcalc(). - Минимизируйте количество шагов и проверок в тестах. Тестируйте ключевую бизнес-логику, а не каждую деталь реализации.
Пример нарушения и следствия принципу в автотесте:
# ПЛОХО: Нарушение KISS. Избыточные проверки, тест хрупкий и многословен.
def test_user_login():
# Лишние проверки состояния UI
assert login_page.header.text == 'Please Sign In'
assert login_page.username_field.is_displayed()
assert login_page.username_field.is_enabled()
assert login_page.password_field.is_displayed()
assert login_page.submit_button.is_enabled()
# Действие
login_page.enter_username('standard_user')
login_page.enter_password('secret_sauce')
login_page.click_submit()
# Лишние и неявные проверки
assert dashboard_page.title == 'Products'
assert dashboard_page.inventory_container.is_displayed()
assert dashboard_page.get_url() == 'https://example.com/inventory.html'
# Проверка, не относящаяся напрямую к логину
assert dashboard_page.shopping_cart_badge.is_displayed() == False
# ХОРОШО: Следование KISS. Тест сфокусирован, краток и устойчив к мелким изменениям UI.
def test_user_login_success():
"""Успешный логин с валидными данными перенаправляет на главную страницу."""
login_page.load()
login_page.login('standard_user', 'secret_sauce')
# Одна ключевая проверка, подтверждающая успех логина
assert dashboard_page.is_loaded(), 'После логина не отобразилась главная страница.'
Выгода: Простые тесты быстрее пишутся, легче читаются коллегами и реже ломаются при рефакторинге кода, не связанном с тестируемой функциональностью.
Ответ 18+ 🔞
А, слушай, смотри, вот этот ваш KISS, блядь! Это ж не просто буквы, это, сука, гениальная мысль, высеченная на скрижалях для всех нас, распиздяев программистов.
Вот смотри, как это бывает. Сидит чувак, пишет тест. И такой: "О, надо проверить, что кнопка не только отрисовалась, но и enabled, а ещё, блядь, проверить заголовок страницы, и URL, и что корзина пустая, и что фон у инпута правильный, и что курсор мигает..." Ёпта, ты что, всю вселенную хочешь в один тест запихнуть? Это ж пиздец, а не тест!
Прикинь, как это в коде выглядит, этот адок:
# ПЛОХО: Нарушение KISS. Избыточные проверки, тест хрупкий и многословен.
def test_user_login():
# Лишние проверки состояния UI
assert login_page.header.text == 'Please Sign In'
assert login_page.username_field.is_displayed()
assert login_page.username_field.is_enabled()
assert login_page.password_field.is_displayed()
assert login_page.submit_button.is_enabled()
# Действие
login_page.enter_username('standard_user')
login_page.enter_password('secret_sauce')
login_page.click_submit()
# Лишние и неявные проверки
assert dashboard_page.title == 'Products'
assert dashboard_page.inventory_container.is_displayed()
assert dashboard_page.get_url() == 'https://example.com/inventory.html'
# Проверка, не относящаяся напрямую к логину
assert dashboard_page.shopping_cart_badge.is_displayed() == False
Смотри на это! Это ж не тест, это, блядь, техническое задание на вёрстку! Ты зачем кнопке is_enabled() проверяешь? Ты её сейчас кликать будешь, она и проявится, enabled она или нет! А этот URL, блядь... А если его поменяют? Весь твой тест накроется медным тазом, а функциональность-то логина будет работать! Зачем ты так живёшь?
А теперь, в рот меня чих-пых, смотри, как надо:
# ХОРОШО: Следование KISS. Тест сфокусирован, краток и устойчив к мелким изменениям UI.
def test_user_login_success():
"""Успешный логин с валидными данными перенаправляет на главную страницу."""
login_page.load()
login_page.login('standard_user', 'secret_sauce')
# Одна ключевая проверка, подтверждающая успех логина
assert dashboard_page.is_loaded(), 'После логина не отобразилась главная страница.'
Вот! Идеально! Вошёл, нажал, ушёл. Проверил ОДНУ, сука, главную вещь: после логина ты оказался там, где надо. Всё! Не надо выебываться.
Выгода-то какая, блядь? Да овердохуища! Такие тесты:
- Пишутся за пять минут, а не за полдня с выпиванием йада.
- Читаются как сказка. Глянул — и сразу ясно, что он делает. Никакой хуйни.
- Не ломаются, если дизайнеру в жопу взбрело поменять цвет кнопки или текст заголовка. Функциональность-то жива!
- Когда он упадёт, ты сразу знаешь — да, вот тут конкретно проблема с логином, а не с тем, что "ой, у нас badge корзины теперь по-другому отображается".
Вот и весь принцип, ёпта. Не умничай, не выёживайся с архитектурами из десяти слоёв абстракции для кнопки "Отправить". Делай просто, тупо и по делу. И будет тебе счастье, а не волнение ебать каждый раз, когда запускаешь свои тысячестрочные тесты.