Какие автотесты вообще бывают?
Часть 4: скриншот-тесты и end-to-end-тесты
1️⃣ Скриншот-тесты
Я их сам не использовал, знаю понаслышке, и могу где-то ошибаться. Но у меня понимание такое:
Ты делаешь кучу скриншотов экранов своего приложения, со всеми развилками экранов и флоу, и используешь как бенчмарк для скриншот-тестов.
Скорее всего, эти скриншоты можно и автоматически нагенерить, про это я не в курсе. Если знаете – напишите в комментах.
И потом приложение делает новые скриншоты на тестируемой ветке и сравнивает со старыми. Если они не совпадают – значит тест завалился.
Грубо говоря, если при клике на кнопку "Покажи экран с собакой" у тебя показался экран с кошкой, или с наполовину уехавшей вниз собакой, или с собакой, но не с той, что на базовом скрине – то тест завалится.
Здесь, кажется, есть куча подводных камней типа:
"а если экран маленький, и контент не поместился, и просто уехал чуть ниже, а на базовом скрине был экран побольше – чё делать?"
или
"а если у меня динамический контент (например, карта, на которой могут исчезать или появляться строения и меняться их названия), то скрины будут непредсказуемо меняться и фейлиться"
Понятно, что всё это решаемо, и там вроде можно сказать "не смотри на эту часть скрина, она динамическая", но не уверен, насколько это всё будет удобно и стабильно.
Если у вас есть опыт скриншот-тестов – пишите в комментариях, нравятся ли они вам, и какие есть плюсы и минусы.
2️⃣ End-to-end (e2e)-тесты
На самом деле некорректно отделять их от остальных тестов, потому что это концепция другой категории, не противоречащая остальным. То есть, UI-тесты могут быть и e2e и не e2e.
End-to-end-тесты – означает, что мы в тестах ничего не мокаем. Проверяем на реальном сервере (понятно, что вряд ли это будет продовый сервер, но это будет или реальный тестовый сервер, на котором вы обычно тестовые сборки гоняете, или отдельное апи / сервер специально под e2e-тесты).
То есть, e2e UI-тесты максимально приближены к реальности. Никаких замоканных классов, методов, серверов. Всё работает так, как работает у реального ручного тестировщика.
Единственный момент – запускать ли их на эмуляторе или на реальном устройстве / ферме устройств. Первый вариант дешевле, но с ним много гемора, т.к. эмуляторы – неудобная и нестабильная штука, постоянно вставляющая вам палки в колёса. Зато на нём можно программно подменять версии апи и устройства. А на ферме что есть, то и есть – зато устройства реальные.
В следующих постах немного коснусь библиотек и фреймворков для автотестов. Не переключайтесь.
Post #149
705
- 🔥 3
- 👌 2
- ❤ 1
- 🫡 1