Во время написания вашего плана вы можете захотеть протестировать ситуации, которые сложно воспроизвести. Например, вы можете захотеть проверить, что рассмотренное выше приложение для проверки температуры кофе работает при смене временны́х зон. Будет бессмысленно дорого реально перемещаться из одной временной зоны в другую. Вспомните, что вы повелитель этого мира тестирования! Вы можете просто изменить временную зону системы, в которой запущена программа. Если вы тестируете программу, которая будет работать в России, можете просто поменять настройки локали на Россию вместо того, чтобы срываться на рейс. Если вам нужны десять пользователей в базе данных для тестирования, можете просто добавить их вручную. Хотя эти фейковые ситуации могут не охватить все дефекты, способные произойти в реальности, они помогут обнаружить многие из них.
Скрипт или программа, используемые для перевода тестируемой системы в состояние готовности для тестирования, называется тестовой фикстурой. Текстовые фикстуры могут быть простыми и состоять из последовательности шагов, которые нужно добавить в программу, но ничто не ограничивает их сложность. Аппарат для тренировки посадки на Луну управлялся астронавтами на Земле, и в его работе использовался сложный механизм обратной связи для симуляции лунной гравитации. Для того чтобы изучить больше примеров о том, как тестирование и тестовые фикстуры помогали астронавтам добраться на Луну, обратитесь к книге Дэвида Минделла "Цифровой Аполлон: Человек и машина в космическом полете" (David Mindell "Digital Apollo: Human and Machine in Spaceflight").
Тестовые фикстуры часто используются для симуляции внешних систем. История из личного опыта: я тестировал подсистему, которая взаимодействовала с другими подсистемами через JSON. Поначалу эти другие системы настраивались вручную перед каждым тест-кейсом. Вскоре я осознал, что это отнимало много времени и зачастую приводило к ошибкам. Решением стало использование гема simple_respond языка Ruby, который принимал заданный JSON-файл и в ответ на любой запрос всегда возвращал данные этого файла. Вместо того чтобы заниматься настройкой других подсистем, которые я не тестировал, я мог сконцентрироваться на том, как будет функционировать моя тестируемая подсистема. Это не только сэкономило мне время и уменьшило количество зависящих от человеческого фактора ошибок — тесты перестали зависеть от правильной работы других частей системы. Подобные тестовые фикстуры могут также быть переиспользованы при взаимодействии с внешними системами, когда нельзя модифицировать их состояние для заданного тест-кейса.
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев