Мнение и тематическое исследование

Моментальные снимки хороши на бумаге. По моему опыту, на практике это не работает так хорошо. Цель тестирования моментальных снимков - доказать, что изменения вашей логики не вызывают побочных эффектов вывода, как правило, для пользовательского интерфейса. Когда я добавляю функцию, существующие функции не должны нарушаться. Когда я оптимизирую или реорганизую, мой пользовательский интерфейс не должен стать недоступным. Замечательно!

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

Моя команда отказалась от тестирования снимков, когда мы обнаружили, что снимки содержат явные ошибки. Например, вместо ожидаемого текста был отображен undefined. Разработчики не читали снимок. Они внесли изменения пользовательского интерфейса, такие как реализация функции или исправление ошибок, запустили тесты, увидели, что моментальный снимок изменился должным образом, и обновили моментальный снимок, не прочитав результат. Тот факт, что он изменил на представление с ошибками, не стал предметом проверки, потому что «конечно, я не напортачил», «изменение ожидалось, так что это просто предполагаемое изменить »и« у кого есть время, чтобы прочитать весь этот скомпилированный, сжатый, запутанный или нечитаемый человеком код? »

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