Ответ
Постусловия (Postconditions) описывают ожидаемое состояние системы после выполнения теста, а также действия по приведению среды в порядок.
Обычно включают два аспекта:
- Ожидаемый результат: Конкретное, проверяемое состояние, которое подтверждает успех теста.
- Действия по очистке: Шаги для возврата системы в исходное состояние или удаления тестовых данных.
Что указывают:
- Изменения данных: Новая запись в БД, обновленный статус заказа, списанный баланс.
- Состояние UI: Отображение конкретного сообщения, переход на определенную страницу, скрытие элемента.
- Состояние системы: Запись в лог-файле, отправленное уведомление, изменение состояния сессии.
- Очистка: Удаление созданных в тесте тестовых пользователей, откат транзакций, очистка кэша или cookies.
Пример для теста создания заказа:
**Ожидаемый результат:**
- В БД в таблице `orders` создана запись со статусом `new`.
- На экране отображается сообщение "Заказ №<ID> успешно создан".
- Пользователь перенаправлен на страницу деталей заказа.
**Очистка:**
- Удалить созданный тестовый заказ через API администратора.
- Очистить localStorage браузера от данных сессии заказа.
Четкие постусловия делают тест самодостаточным и предотвращают влияние на последующие тесты.
Ответ 18+ 🔞
А, слушай, вот эта вся хуйня с постусловиями — это, блядь, как после хорошей пьянки, понимаешь? Ты не только должен понять, что ты натворил, но и убрать за собой, чтобы утром не было мучительно стыдно и пиздец.
Вот смотри, ты провёл свой тест, накрутил, нажал, поёрзал. И что? А после этого надо чётко знать две вещи, ёпта:
- Что должно было получиться, если ты не мудак? То есть, какой конкретный, осязаемый пиздец должен был случиться в системе, чтобы все сказали: «О, тест прошёл!».
- И как теперь всю эту созданную хуйню убрать нахуй? Чтобы следующий тест не споткнулся об твои говнокирпичи.
Что там обычно проверяют, блядь?
- Данные: Запись в базу добавилась? Статус поменялся? Баланс списался? Вот это вот всё.
- Рожа системы (UI): Появилось ли нужное сообщение? Страница переключилась? Кнопка исчезла?
- Внутренние дела: В логах что-то записалось? Письмо улетело? Сессия поменялась?
- И главное — уборка: Созданного юзера удали, тестовый заказ сотри, куки почисть. Чтобы было чисто, как в маминой квартире после субботника.
Вот, смотри, пример, как будто тест заказа пиццы:
**Что должно быть, если всё ок:**
- В базе данных, в таблице `orders`, теперь валяется новая запись, и у неё статус `new` (типа, «жду не дождусь свою пепперони»).
- На экране пользователю тычут в лицо сообщением: «Заказ №<ВотТвойНомер> создан, расслабься».
- Браузер его перенаправляет на страницу, где можно следить, как его пицца едет.
**А теперь убери за собой, животное:**
- Удали этот тестовый заказ через админку (или API), чтобы он в статистику не лез.
- Почисти в браузере localStorage от следов этой сессии, чтобы следующий тест начал с чистого листа.
Вот когда ты так расписываешь, тест становится, блядь, самодостаточной единицей. Он сам пришёл, сам всё проверил, сам за собой убрал — идеальный гость. И следующий тест не упрётся рогом в твои вчерашние тестовые данные. Красота, ёпта!