🔥

Тред #15


Наконец, пришло время поговорить о тестах и инфраструктуре.

Поборов проблемы со временем старта, вы продолжаете работать над приложением, добавлять больше функциональности в проект, обновлять окаменелые куски кода и тд.

Со временем, вы замечаете, что последние переработки функциональности, как и некоторые добавленные фичи, возвращаются назад с ручной регрессии или выливаются в виде очередного инцидента в Crashlytics.

Тут нет ничего удивительного, ваша кодовая база становится все больше и запутанней с каждым днем. Что же делать? Как избавиться от косых взглядов QA и красных глаз менеджера, у которого стоит KPI на стабильность?

Ответов на эти вопросы может быть несколько, но сегодня мы обсудим автоматизацию тестирования. В частности, тестирования связки компонент при помощи UI тестов.

В наши дни существует несколько способов проводить такое тестирование. Многие слышали о стандартном XCTest, с возможностью записи действий в симуляторе, KIF, EarlGrey и прочих подобных фреймворках.

Сегодня мы рассмотрим автоматизацию тестирования на примере стандартных UI тестов в XCTest. По двум причинам:

Во-первых, это классических способ тестирования, рекомендованный Apple. Для того чтобы начать его использовать, не нужно устанавливать и подключать дополнительные зависимости в проект.

Во-вторых, это blackbox тестирование, что подразумевает отсутствие доступа к кодовой базе проекта. Это создает условия, максимально приближенные к реальному взаимодействию пользователя с вашим приложением.

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

Паттерн PageObject зародился в вебе, вот здесь можно посмотреть что это такое: webdriver.io/docs/pageobjec…

И так, представим, что все согласны с тем, что существует проблема проверки качества проекта, менеджмент видит необходимость написания UI тестов для проверки интеграции и совместимости компонент в проекте. Вам даже выделили проект и дали финансирование на создание инфраструктуры.

Так давайте разберемся что из себя эта инфраструктура может представлять. Рассмотрим следующие аспекты такой системы: 🖥 Железо ⚙️ Выполнение 🏋️‍♂️ Масштабирование 📊 Аналитика

Последним, но не по значению аспектом вашей инфраструктуры, является аналитика. Как понять что с выполнением тестов нет проблем? Как узнать время выполнения каждого теста? И на многие подобные вопросы, вам поможет ответить аналитика вашей системы.
Машины twitter.com/mobileunderhoo… Выполнение twitter.com/mobileunderhoo… Масштабирование: twitter.com/mobileunderhoo… Аналитика: twitter.com/mobileunderhoo…