Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snapshot Testing- Cons and Pros

Snapshot Testing- Cons and Pros

Roman Tysiachnik

Alexander Saenko

January 26, 2019
Tweet

More Decks by Alexander Saenko

Other Decks in Programming

Transcript

  1. ▪ Что такое Snapshot-тестирование? ▪ Плюсы и минусы в использовании

    подхода ▪ Пример тестирования в нашем проекте ▪ Проблемы в существующих библиотеках
  2. Snapshot Testing ▪ Основная задача - это контроль изменений в

    пользовательском интерфейсе ▪ Контроль происходит как над ожидаемыми изменениями, так и над непредсказуемыми. ▪ Позволяет рассмотреть элемент интерфейса во всех необходимых сненариях
  3. Типичный тест-кейс для мобильного приложения ▪ рендерим компонент интерфейса ▪

    делаем его снимок ▪ сравниваем его с исходным изображением ▪ тест не пройден, если два изображения не совпадают.
  4. Pros ▪ разрабочики и дизайнеры получают возможность контролировать изменения в

    интерфейсе ▪ snapshot’ы являются очень широким подтверждением того, что ваш интерфейс «правильный» ▪ тестирование на разных устройствах, версиях iOS и с разными Trait Collections становится проще. ▪ Snapshot testing побуждает вас писать тестируемые view контроллеры.
  5. Cons ▪ огромное количество увесистых изображений в репозитории ▪ дополнительная

    сложность в настройки ваших билдов ▪ необходимость привязки тестов к версии iOS из за различных изменений со сглаживанием в системе ▪ легко переусердствовать с тестами, проверяя не правильные вещи ▪ необходима реализация просмотра изображений из неудачных тестов на CI
  6. В результате имеем следующий flow ▪ создаем pull-request с изменениями

    ▪ тесты на CI неожиданно упали (о_О) ▪ в pull-request приходит сообщение со всеми упавшими изображениями ▪ при всех последующих перезапусках, будет обновляться одно и то же сообщение
  7. ▪ при запуске теста с параметрами iPad на симуляторе iPhone

    могут быть получены некорректные данные ▪ неправильный scale будет влиять на изображения ▪ идентичные изображения, снятые с разным цветовым диапазоном (sRGB или P3), будут отличатся Отсутствие полноценной поддержки всех Trait Collections (scale, gamut, idiom)
  8. Snapshot Testing frameworks ▪ uber / ios-snapshot-test-case ▪ pointfreeco /

    swift-snapshot-testing ▪ skyweb07/Snap.swift ▪ AndriiDoroshko / SnappyShrimp