В каких случаях при тестировании следует опираться на здравый смысл?

Ответ

Здравый смысл в тестировании — это применение логики и пользовательской перспективы для оценки функциональности, особенно когда формальные требования неполны или неочевидны.

Когда это применяется:

  • Оценка юзабилити: Проверка, интуитивно ли понятен интерфейс.
  • Проверка граничных случаев: Выявление сценариев, не описанных в требованиях, но возможных в реальности.
  • Приоритизация дефектов: Решение, является ли проблема критичной для пользователя, даже если она технически не нарушает спецификацию.

Пример: Требование: "Поле 'Пароль' должно принимать от 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, "Поле должно обрезать или блокировать слишком длинный ввод, а то пользователь — лох, сам не догадается"

А главный принцип, блядь, один, и он проще пареной репы: В любой непонятной ситуации задавай себе один вопрос: "А ебал ли бы я это в жизни, если бы был тем самым юзером, который уже накосячил три чашки кофе?" Если ответ "да, ебал бы в сраку такое поведение" — поздравляю, ты только что здравым смыслом нашёл баг, который формальные тест-кейсы благополучно просрали. Вот и вся магия, хули.