Ответ
Здравый смысл в тестировании — это применение логики и пользовательской перспективы для оценки функциональности, особенно когда формальные требования неполны или неочевидны.
Когда это применяется:
- Оценка юзабилити: Проверка, интуитивно ли понятен интерфейс.
- Проверка граничных случаев: Выявление сценариев, не описанных в требованиях, но возможных в реальности.
- Приоритизация дефектов: Решение, является ли проблема критичной для пользователя, даже если она технически не нарушает спецификацию.
Пример: Требование: "Поле 'Пароль' должно принимать от 6 до 20 символов". Здравый смысл подсказывает проверить:
- Что происходит при вводе 5 или 21 символа? (Ясное сообщение об ошибке).
- Можно ли вставить 20+ символов через копирование? (Защита от обхода).
- Видны ли вводимые символы (маскируются ли они)? (Безопасность).
# Пример теста, выходящего за рамки строгой спецификации
def test_password_field_common_sense():
form = RegistrationForm()
# Проверка на потенциальную уязвимость: вставка слишком длинного пароля
form.password_field.paste("a" * 100)
assert len(form.password_field.value) <= 20, "Поле должно обрезать или блокировать слишком длинный ввод"
Ключевой принцип: Задавайте вопрос: "Будет ли это поведение логичным и удобным для конечного пользователя?" Это помогает находить дефекты, которые формальные тест-кейсы могут пропустить.
Ответ 18+ 🔞
А, слушай, вот эта тема про здравый смысл в тестировании — это ж, блядь, чистая правда жизни, а не какая-то там методология! Это когда у тебя в требованиях написана хуйня, а ты должен догадаться, что на самом деле хочет пользователь, который будет это ебашить.
Когда это вылезает на первый план, ёпта:
- Оценка юзабилити: Смотришь на интерфейс и думаешь: "А не пойдёт ли сюда юзер тыкать пальцем в монитор, сука, с криком 'где же эта кнопка, блядь?'". Если сам не можешь найти за три секунды — пиши пропало.
- Проверка граничных случаев: В ТЗ написали "от 1 до 10". А здравый смысл орёт: "А нулевое значение, уёбок? А отрицательное? А если пользователь — долбоёб и введёт букву 'Ы'? А если он скопирует туда целую 'Войну и мир'?" Вот это всё и есть работа.
- Приоритизация дефектов: Вот смотри: баг есть, но по бумажке он не нарушает ничего. А по факту это пиздец, который заставит пользователя вырвать себе остатки волос. Что делаем? Правильно, орем "ПИЗДЕЦ!" и лепим высший приоритет. Потому что бумажка — бумажкой, а пользователь — царь и бог, ебать его в сраку.
Пример, чтобы было понятнее, как мыслю я: Вот тебе требование, сука: "Поле 'Пароль' должно принимать от 6 до 20 символов". Человек с мозгами (то есть мы с тобой) сразу думает:
- Ладно, 5 или 21 символ — должно ругнуться. А как оно ругнётся? Криком "НЕПРАВИЛЬНО, МУДАК!" красным цветом или просто тихо сломается?
- А если я, хитрая жопа, скопирую туда текст в 100500 символов? Поле его сожрёт или, как маньяк, отрубит на 20-м?
- И, главное, символы-то маскируются звёздочками? А то будет видно всем, какой у меня пароль — 'qwerty123', ядрёна вошь!
# Вот пример теста, который написан не по бумажке, а по зову сердца и здравого смыслища
def test_password_field_common_sense():
form = RegistrationForm()
# Проверяем неочевидную хуйню: а что, если вставить текст дохуя длинный?
form.password_field.paste("a" * 100)
# Если поле проглотило все 100 символов — это пиздец, а не валидация.
assert len(form.password_field.value) <= 20, "Поле должно обрезать или блокировать слишком длинный ввод, а то пользователь — лох, сам не догадается"
А главный принцип, блядь, один, и он проще пареной репы: В любой непонятной ситуации задавай себе один вопрос: "А ебал ли бы я это в жизни, если бы был тем самым юзером, который уже накосячил три чашки кофе?" Если ответ "да, ебал бы в сраку такое поведение" — поздравляю, ты только что здравым смыслом нашёл баг, который формальные тест-кейсы благополучно просрали. Вот и вся магия, хули.