Автоматизированные тесты iOS – XCTest vs Appium

Я ищу мнения от инженеров-испытателей и разработчиков iOS по конкретному вопросу.

Я использую Appium уже более года, и я столкнулся с различными трудностями при запуске мобильных веб-тестов на реальных устройствах. Каждый раз, когда Apple вносит изменения в XCTest или Safari, Appium оказывает прямое влияние (даже если они что-то исправляют, некоторые другие проблемы появляются на своем месте), и это дошло до того, что я трачу больше времени на решение проблем, связанных с Appium, в отличие от АВ.

Кроме того, вам понадобится компьютер Apple для разработки и выполнения тестов Appium iOS в любом случае. Поэтому я подумал, почему бы не использовать XCTest напрямую для написания тестов с использованием Swift или любого языка, поддерживаемого XCTest?

Я очень благодарен за комментарии и мнения людей, которые имеют опыт работы с автоматическими тестами Appium и XCTest (Swift и т. Д.).

В чем преимущества использования Appium для автоматизации тестов на родные и веб-приложения iOS над XCTest?

Как вы уже выяснили, одним из главных недостатков Appium является то, что это сторонняя структура, и это сильно ломается каждый раз, когда Apple выпускает Xcode. Это вряд ли изменится, так как Apple теперь поддерживает собственную платформу тестирования пользовательского интерфейса.

Есть и другие преимущества использования Appium – вы можете выбирать из нескольких языков (Java, Ruby, Python, C # …), что делает его доступным для всех, кто может программировать на одном из этих очень популярных языков, и вы можете возможно, совместно использовать код между тестами для одного и того же приложения на iOS и Android.

По моему опыту, в то время как в Appium много людей, уровень поддержки сообщества не компенсирует неутешительный уровень обслуживания; кроме хрупкости совместимости Appium с Xcode, я обнаружил, что некоторые ключевые функции остались нереализованными в некоторых привязках, например, прокрутке на Python.

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

С XCTest вам никогда не придется беспокоиться о том, что вы не можете обновить версию Xcode, а рамки поддерживаются стандартами выпуска Apple. Как и во всех инфраструктурах тестирования IOS UI, есть некоторые ошибки (особенно вокруг сборщиков), но я считаю, что стабильность структуры и тот факт, что она принадлежит Apple, перевешивают недостатки нечетной ошибки.

Будучи одобренным Apple, это значительный профессионал для использования XCTest, поскольку Apple может удалить доступ к API, от которых зависит Appium, и Appium может перестать работать навсегда в одночасье. Исторически Apple не просто удаляет поддержку своих собственных фреймворков без как минимум года уведомления.

Чтобы использовать XCTest напрямую, вам нужно использовать Swift (рекомендуется) или Objective-C. Существует не так много выбора языка, как Appium дает, но поддержка обоих языков является последовательной, поскольку они используют одну и ту же реализацию. Swift – это сильный выбор языка, особенно для крупных проектов, потому что его тип безопасности позволяет заметить многие ошибки программирования до выполнения. Оба языка также дают вам отличную поддержку intellisense (автозаполнение) в Xcode, что не предлагается из-за «динамических» языков, таких как Python или Ruby.

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

Обе структуры используют аналогичные концепции – XCUIApplication похож на драйвер Appium, который дает вам доступ к тому, что находится на экране. Уровень функциональности, предлагаемый обеими структурами, пожалуй, очень сходен, поэтому зависит от ваших приоритетов – с надежностью (XCTest) или возможностью повторного использования на других платформах и доступности языка (Appium).

Некоторые плюсы и минусы Appium и XCTest:

В пользу XCTest:

  • У собственного продукта Apple, с меньшей вероятностью которого возникают проблемы с совместимостью, возникают при запуске новых версий Xcode / iOS
  • Тесты выполняются более эффективно (быстрее и менее случайные ошибки)
  • Функция записи / воспроизведения, возможно, упрощает идентификацию объектов для некоторых из тех, кто более сложно идентифицировать объекты
  • Гораздо проще настроить, чем Appium (особенно после iOS 10+)

В пользу Appium:

  • Позволяет больше повторного использования кода в наборах для автоматизации Apple и Android

  • Большой выбор совместимых языков

  • Совместим с кодом интерфейса Cucumber

Существуют и другие плюсы и минусы обоих инструментов, но, используя оба, я считаю, что это основные (по моему личному мнению)

  • Как настроить формат региона в XCTest?
  • Как отправить соответствующий отпечаток в iOS XCTest
  • Xcode: нет такого модуля 'Alamofire'
  • Ошибка тестирования устройства, когда тестируемая функция вызывает приложение AppDelegate + managedObject
  • Тестирование производительности NSURLConnection с помощью XCTestCase
  • ld: фреймворк не найден для архитектуры x86_64
  • Тестирование метода, в котором есть `try-catch` внутри него с помощью XCTest
  • Как использовать XCTestSuite? (Swift 3)
  • Загрузка локального файла для тестирования Alamofire
  • Заголовок тестового просмотра с помощью XCTest
  • Тестирование частных @IBOutlets и @IBActions
  • Давайте будем гением компьютера.