Из каких источников вы берете ожидаемый результат для тестирования ПО?

Ответ

Ожидаемый результат определяется на основе:

  • Формальных требований: спецификации, пользовательские истории, техническая документация.
  • Неформальных источников: согласование с заказчиком, аналитиками или разработчиками при отсутствии документации.
  • Эталонных систем: поведение аналогичных продуктов или предыдущих версий.
  • Общепринятых правил: принципы UX, стандарты (например, HTTP-коды) и здравый смысл.

Пример для unit-теста:

# Требование: "Функция сложения должна возвращать корректную сумму"
def test_addition():
    # Ожидаемый результат '4' взят из спецификации
    assert calculate("2+2") == 4

Пример для UI-теста (Cucumber/Gherkin):

Then I should see the "Order Confirmed" message
Then the "Cart" counter should display "0"

В исследовательском тестировании ожидание формируется на основе понимания домена и целей пользователя.

Ответ 18+ 🔞

Да ты послушай, что эти тестировщики выдумали! Сидят, блядь, и думают: "А какого хуя мы вообще ждём от этой штуки?" И ведь не просто так, а по пунктам, сука!

Во-первых, есть бумажки всякие. Спецификации, техдоки, истории пользователя — эта хуйня, которую все пишут, но потом нихуя не читают. Но если она есть, то типа оттуда и надо брать, что должно получиться. Чистая бюрократия, но без неё — пиздец и бардак.

Во-вторых, договорняки. Когда никакой бумаги нет, а есть только базар с заказчиком или аналитиком, который тебе на пальцах объясняет: "Ну сделай так, чтобы вот эта кнопка, блядь, зелёная была, а при нажатии играл звук чпок". Вот это и есть ожидание, ёпта!

В-третьих, как у людей. Смотришь, как работает похожая бандура или старая версия. "Раньше вот так работало, значит и сейчас должно" — логика проще, чем у табуретки, но иногда и она подводит, блядь.

Ну и наконец, здравый смысл, мать его. Это когда ты понимаешь, что если пользователь нажал "Удалить", то запись должна исчезнуть, а не начать ему стихи читать. Или что код ответа 404 — это "не найдено", а не "иди нахуй". Казалось бы, ебанатривиально, но нет же!

Вот тебе пример, как они это в код пихают:

# Требование было чёткое: "Сложи два числа, умник"
def test_addition():
    # И мы тупо ждём, что 2+2 будет 4. Никакой магии, блядь.
    assert calculate("2+2") == 4

А для этих любителей красивых фраз (Cucumber, блядь):

Then I should see the "Order Confirmed" message
Then the "Cart" counter should display "0"

Тут всё ясно: увидел сообщение — молодец, счётчик обнулился — вообще красава.

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

Короче, ожидание — это ответ на вопрос "Как, по-твоему, должно работать?". И если ответ "Хуй его знает", то это уже не тестирование, а гадание на кофейной гуще, ёпта.