Автоматизированное тестирование iOS с помощью Xcode UI Framework
⚡ Умное резюме
Автоматизированное тестирование iOS с помощью Xcode Записывает и воспроизводит действия пользовательского интерфейса в тестируемом приложении, следуя циклу проектирования, тестирования, реализации и повторного тестирования, пока каждый случай не будет пройден успешно.
Автоматизированное тестирование iOS с использованием Xcode
Для обеспечения качества вашего iOS-приложения следует следовать процессу разработки через тестирование, показанному на рисунке ниже.
Разработка через тестирование (TDD) — это тестов модель, применяемая к тестированию iOS-приложений, и она вписывается в более широкую практику мобильное тестированиеВ этой модели тестировщик должен пройти следующие 4 этапа:
- дизайн: Определите, что именно вы хотите протестировать, и разработайте тестовые сценарии.
- Контрольная работа: Запустите все тесты и проверьте, не возникнут ли какие-либо тестовые случаи.
- Воплощать в жизнь: RevИспользуйте свой код и исправьте ошибки, которые привели к сбою теста.
- Проверьте еще раз: Если тест не пройден, откатитесь к исходному варианту. Если все тестовые случаи пройдены успешно, значит, код соответствует всем проверенным требованиям.
Настройка Xcode Проект по тестированию пользовательского интерфейса
Для создания тестовой программы для iOS вам потребуется Mac. На вашем Mac должны быть уже установлены следующие программы:
- OS X — операционная система для Mac.
- Xcode IDE — Инструмент разработки для iOS.
- Автоматизированная среда тестирования — Автоматизация пользовательского интерфейса, OCUnit и так далее.
- iOS SDK 4 или выше.
⚠️ Примечание к версии: Указанные выше предварительные требования описывают набор инструментов той эпохи, в которой были написаны два следующих пошаговых руководства. На современных компьютерах Mac, Xcode В комплект поставки входят фреймворки XCTest и XCUITest, а отдельный инструмент автоматизации пользовательского интерфейса больше не входит в состав установки. Оригинальные шаги сохранены ниже, поскольку они документируют работу фреймворка, а современный эквивалент описан далее.
Как создать автоматизацию iOS с помощью UI Automation Framework
Описанные ниже восемь шагов позволяют записать скрипт с помощью инструмента автоматизации и воспроизвести его в тестируемом приложении.
Шаг 1) Запуск инструментов
Открыть XCode -> Открыть инструменты разработчика -> Инструменты
Шаг 2) Добавьте инструмент автоматизации
В окне «Инструменты» выберите инструмент «Автоматизация».
Для создания тестового скрипта вы либо записываете тестовый сценарий или вы программируете это вручную.
Шаг 3) Нажмите красную кнопку.
Запускается прибор — немедленно остановите запись. Чтобы начать запись, нажмите красную кнопку.
Шаг 4) Создайте новый скрипт.
В окне «Скрипты» нажмите «Добавить» > «Создать», чтобы создать новый скрипт.
Шаг 5) Выберите цель
Вы сейчас находитесь в Tracокно. Используйте кнопку «Выбрать». Target Потяните вниз, чтобы перейти к отладочной версии вашего приложения.
В данном случае, образец от Apple. SimpleDrillDown В качестве тестируемого приложения используется данное приложение. Его графический интерфейс пользователя показан ниже.
Шаг 6) Начните записывать свой сценарий
Запишите свой сценарий, нажав кнопку записи в верхней или нижней части инструмента.
Теперь вы можете выполнять некоторые действия с пользовательским интерфейсом в тестируемом приложении, и ваш скрипт будет записан.
Шаг 7) Посмотрите свой сценарий
Чтобы увидеть свой сценарий, нажмите кнопку TracВ выпадающем меню e Log / Editor Log переключитесь в режим просмотра журнала сценариев.
Вы увидите записанный сценарий.
Шаг 8) Воспроизведите свой сценарий
Нажмите кнопку воспроизведения. Скрипт запустится, и вы сможете остановить его после появления логов.
⚠️ Историческая справка: Инструмент автоматизации, использованный на этих восьми этапах, был признан устаревшим в Xcode 8, а затем удалено, поэтому оно больше не присутствует в текущей версии. Xcode Установка. Пошаговые инструкции сохранены здесь в качестве записи о том, как работала эта система; для новых задач используйте пошаговое руководство по XCUITest, расположенное ниже на этой странице.
Как создать автоматизацию iOS с использованием платформы OCUnit
Второй вариант предполагает проведение тестов внутри Xcode проект, а не внутри Instruments.
Шаг 1) Начало Xcode IDE, Добавить цель "Пакет модульных тестов"
Шаг 2) Напишите название нового пакета модульных тестов. Как показано на рисунке выше, затем нажмите «Готово».
Шаг 3) Сделайте модульное тестирование активной целью.
Шаг 4) Добавьте группу для тестовых классов.
Шаг 5) Добавьте класс модульного теста.
Шаг 6) Теперь приступайте к реализации.
OCUnit использует язык Objective-C для создания тестовых программ, поэтому разработчик должен знать этот язык. Современный Xcode версии кораблей модульное тестирование Вместо этого используйте XCTest, который поддерживает как Objective-C, так и... SwiftОднако структура «цель-класс», показанная на этих шести этапах, остается неизменной.
UIAutomation против XCUITest: что изменилось?
Поскольку обе упомянутые выше платформы относятся к более раннему поколению инструментария Apple, стоит уточнить, что их заменило и почему.
| Аспект | Автоматизация пользовательского интерфейса (инструменты) | XCUITest |
| Статус | Устарело в Xcode 8 и удален из более поздних релизов | Поддерживаемая Apple платформа для тестирования пользовательского интерфейса |
| Где проводятся тесты | Скрипты внутри Instruments tracэлектронный документ | Цель пакета тестирования пользовательского интерфейса внутри Xcode Проект |
| Язык | JavaСценарий | Swift или Objective-C |
| Тестовый бегун | Инструмент автоматизации | XCTest — тот же инструмент, что и для модульных тестов. |
| Непрерывная интеграция | Неловко — благодаря инструментам | Запускается из командной строки вместе с модульными тестами. |
| запись | Кнопка «Запись» на панели инструментов «Инструменты» | кнопка записи в Xcode редактор, который излучает Swift |
Практическим следствием является то, что набор тестов XCUITest представляет собой обычный исходный код проекта. Он проверяется, версионируется и выполняется так же, как и остальной код, что и является основной причиной записи тестов.tracМодель исчезла.
Как написать тест пользовательского интерфейса iOS с помощью XCUITest
Современный эквивалент восьми шагов Instruments — короткий. Приведенная ниже структура отражает ту же идею записи и последующего воспроизведения, но результатом является исходный файл, а не файл. trace.
- Добавьте цель. In Xcode Выберите Файл > Создать > Target и выберите шаблон "Пакет тестов пользовательского интерфейса" или отметьте опцию включения тестов при создании нового проекта.
- Откройте сгенерированный тестовый класс. Xcode Создает подкласс XCTestCase с пустыми методами настройки и тестирования.
- Запустите тестируемое приложение. Создайте экземпляр XCUIApplication и вызовите на нем метод launch, который запустит приложение в отдельном процессе.
- Запрос и действие. Обращайтесь к элементам через запросы к элементам — кнопкам, таблицам, статическим текстам — и вызывайте на них действия tap, typeText или swipe.
- Утверждать. Используйте XCTAssert, чтобы убедиться, что ожидаемый элемент существует после выполнения действия.
- Запустить. Выполните тест из Xcode с помощью навигатора тестов или из командной строки, чтобы тот же набор тестов запускался в режиме непрерывной интеграции.
Минимальный тест имеет следующую структуру:
import XCTest final class AppUITests: XCTestCase { func testTappingFirstRowShowsDetail() { let app = XCUIApplication() app.launch() // act on the first row of the list app.tables.cells.element(boundBy: 0).tap() // verify that the next screen appeared XCTAssertTrue(app.staticTexts.firstMatch.waitForExistence(timeout: 5)) } }
Функция записи по-прежнему существует: размещение курсора внутри тестового метода и нажатие кнопки записи в редакторе автоматически генерирует эти запросы, что является прямым продолжением шага 6, описанного выше. Более широкие принципы автоматизация тестирования Применять без изменений.
Пример автоматизации пользовательского интерфейса Code
В этой статье приведены примеры исходного кода. Они помогут вам лучше и быстрее понять материал учебного пособия.
Пример автоматизации пользовательского интерфейса — тестовый скрипт для демонстрации автоматизации пользовательского интерфейса.















