Мнение и тематическое исследование
Моментальные снимки хороши на бумаге. По моему опыту, на практике это не работает так хорошо. Цель тестирования моментальных снимков - доказать, что изменения вашей логики не вызывают побочных эффектов вывода, как правило, для пользовательского интерфейса. Когда я добавляю функцию, существующие функции не должны нарушаться. Когда я оптимизирую или реорганизую, мой пользовательский интерфейс не должен стать недоступным. Замечательно!
На практике пользовательский интерфейс изменяется так часто, что разработчики обычно обновляют моментальные снимки, не задумываясь о том, нужно ли это делать, или даже не проверяя их действительность. Тестирование снимков, в отличие от других автоматизированных процессов, подвержено человеческим ошибкам.
Моя команда отказалась от тестирования снимков, когда мы обнаружили, что снимки содержат явные ошибки. Например, вместо ожидаемого текста был отображен undefined
. Разработчики не читали снимок. Они внесли изменения пользовательского интерфейса, такие как реализация функции или исправление ошибок, запустили тесты, увидели, что моментальный снимок изменился должным образом, и обновили моментальный снимок, не прочитав результат. Тот факт, что он изменил на представление с ошибками, не стал предметом проверки, потому что «конечно, я не напортачил», «изменение ожидалось, так что это просто предполагаемое изменить »и« у кого есть время, чтобы прочитать весь этот скомпилированный, сжатый, запутанный или нечитаемый человеком код? »
Снэпшот-тестирование не работает по той же причине, по которой не работает ручной процесс контроля качества: человеческая ошибка. Не полагайтесь на лучшие намерения. Автоматизируйте тестирование. Бесполезно определять только то, что пользовательский интерфейс не изменился в мире, где пользовательский интерфейс меняется еженедельно. Если ваши тесты не определяют, что пользовательский интерфейс точен, отбросьте их.