Автоматизация тестирования в iOS: кому полезна и какие инструменты использовать в 2023 году
Мы в Форе часто автоматизируем тестирование на наших проектах. В статье делимся опытом: что такое автоматизированное тестирование, как понять, что оно нужно, и расскажем о самых популярных инструментах для автотестирования.
За последние годы всё больше компаний разрабатывают нативные версии веб-приложений. И с ростом скачиваний приложений их разработчикам рано или поздно приходится автоматизировать тестирование, чтобы быстрее выпускать новые версии. Время — деньги, скорость — ключевое преимущество, которое помогает опередить конкурентов.
Согласно данным отчета MarketsAndMarkets рынок автотестов к 2027 году вырастет с $24,7 млрд (2022) до $52,7 млрд при среднем годовом темпе роста 16,4%. Чтобы не отставать, важно регулярно следить за новостями индустрии.
Что такое автоматизация тестирования iOS-приложения?
Автоматизация тестирования — это имитация действий реального пользователя по заранее заданному сценарию. Например, ввод данных, нажатие кнопок, покупка подписки и другие действия. Такие проверки выполняются автоматически с помощью специальных программ, без участия человека.
- Параллельное тестирование на множестве устройств. Это значит, что за один релиз можно провести больше тестов. Например, автоматизированное регрессионное тестирование — проверка, что новая функция или изменения в коде не сломали работу всей системы. Больше тестов — больше найденных и исправленных ошибок — выше качество продукта — лучше пользовательский опыт.
- Более быстрый процесс тестирования. Вы экономите время и деньги и получаете продукт лучшего качества.
- Минимизация влияния человеческой ошибки. Бывает, что баги возникают редко и их трудно поймать. Даже если тестировщик находит баг, он не всегда может понять, в чём именно причина. Автоматизированное тестирование помогает точнее определить источник ошибки в таких случаях.
- Прозрачность тестирования. При смене тестировщика старые скрипты остаются, и приложение продолжают тестировать так же, как и раньше — регресс-тесты не меняются. Если нужно что-то изменить или новый специалист захочет разобраться в логике работы приложения, скрипты помогут — они выполняют роль документации. Это один из главных плюсов.
Минусы:
- При обновлении iOS нужно ждать, пока обновятся инструменты для автотестов.
- Изначальная разработка автотестов требует много времени. Но в долгосрочной перспективе это окупается.
Когда нужно автоматизировать тестирование
А нужно ли вам вообще автоматизировать тестирование? Да, если:
- В вашем приложении много функциональности. При этом вы планируете поддерживать его долго и постоянно добавлять новые возможности или улучшать существующие. Разные функции могут конфликтовать между собой. Поэтому здесь нужны автотесты. Например, вы добавили чат — и перестали работать звонки, или из-за нового поля в профиле сломалась регистрация. Чтобы это заметить, тестировщик должен вручную перепроверить всё приложение. Это занимает много времени, а ещё можно что-то упустить. Автотесты решают эту проблему. Теперь тестировщику не нужно каждый раз вручную проверять всё приложение после новой фичи. То, что не менялось, проверят автотесты — их достаточно просто запустить и посмотреть результаты. Это сокращает время тестирования и снижает стоимость разработки.
- Вы собираетесь адаптировать приложение под каждую новую версию iOS и использовать новые возможности операционной системы. Каждое обновление iOS может что-то сломать в приложении. Даже если вы не планировали обновлять приложение в ближайшее время, это может понадобиться. В таком случае автотесты тоже помогут — достаточно запустить тестирование. После этого вы поймёте, что сломалось, и сможете это исправить. Конечно, ради одной этой задачи внедрять автоматизацию не стоит. Но если у вас уже есть автотесты, они в этом случае окажутся очень полезны.
- В вашей команде должны быть тестировщики, обладающие необходимыми знаниями в этой области. Если вы выберете, например, Appium, они должны уметь работать хотя бы с одним популярным языком программирования. А если вы остановитесь на XCTest, EarlGrey или KIF — им понадобится знание Swift. Также тестировщикам важно понимать все основные подходы к тестированию и уметь пользоваться соответствующими инструментами. Если ваши специалисты умеют тестировать приложения только вручную и не владеют программированием, придётся либо потратить время на их обучение, либо нанять новых специалистов — но уже с более высокой зарплатой.
Когда можно обойтись без автоматизации тестирования
Написание автотестов — это программирование, только вместо новых функций приложения вы пишете программу, которая проходит по продукту и проверяет его работу. Это требует времени и ресурсов.
Будет нецелесообразно добавлять автоматизацию тестирования, если:
- Приложение маленькое. То есть функционал не очень обширный и его легко протестировать вручную. При этом вы не планируете постоянно добавлять новые функции в будущем.
- Вы планируете распространять и поддерживать приложение в течение короткого времени. Например, приложение для Чемпионата мира по футболу 2018 года или Зимних Олимпийских игр 2014 года.
- Приложение быстро и часто меняется. То есть его функционал нестабильный. Например, стартап, который ищет свою аудиторию и постоянно дорабатывает ключевые функции.
Лучшие инструменты для автоматизации тестирования в iOS
Ниже — список самых популярных инструментов для автотестов. Большинство из них open-source, то есть бесплатные.
XCUITest/XCTest
Инструмент, разработанный Apple, полностью нативный. Предназначен только для тестирования iOS-приложений. Так как он нативный, в проекте не будет лишних зависимостей. Тесты пишутся на Swift или Objective-C — это помогает разработчикам и тестировщикам лучше взаимодействовать. Однако работа с этими языками не так проста. Может получиться, что тестировщики будут часто просить помощи у разработчиков, и это нарушит ритм работы.
Также есть test recorder, который позволяет записывать реальные действия в приложении и создавать на их основе тесты, но на практике им пользоваться сложно. Он недостаточно точен, поэтому лучше использовать его как вспомогательный инструмент, а основные тесты писать на Swift или Objective-C. Кроме того, XCUITest/XCTest работает в отдельном потоке, состояние приложения не отслеживается, и задержки при обновлении данных могут помешать обнаружению нужных элементов.
EarlGray
Фреймворк, разработанный Google. Тесты нужно писать на Objective-C или Swift. Фреймворк синхронизирует запросы, UI и потоки — это его преимущество. Однако он не слишком популярен. Причина в том, что с его помощью можно тестировать только iOS-приложения, а по функционалу он мало чем отличается от XCUITest, при этом не является нативным решением. Поэтому тестировщики чаще выбирают XCUITest.
KIF
KIF – фреймворк, который нужно подключить к проекту, чтобы им пользоваться. Язык для тестов – Objective-C или Swift. Главное его преимущество – реалистичность. KIF может имитировать разные действия пользователя, поэтому он очень хорошо подходит для UI-тестов.
Выше были перечислены инструменты только для iOS-приложений, но при мобильной разработке часто создаются приложения и для iOS, и для Android. Поэтому существуют кроссплатформенные инструменты для автоматизации тестирования.
Detox
Язык для написания тестов — JavaScript. Detox умеет обращаться к памяти устройства и отслеживать выполняемые процессы. Фреймворк работает как с эмуляторами, так и с реальными устройствами, используя нативные методы прямо на устройстве. Под капотом используется рассмотренный нами EarlGray. Считается, что Detox отлично подходит для тестирования приложений на React Native, поскольку в React Native также используется JavaScript — как и в Detox. Это позволяет писать одни и те же тесты для iOS и Android.
Appium
Appium — один из самых популярных сегодня инструментов. Он позволяет тестировать приложения практически на любой платформе, независимо от типа и версии системы. Тесты для разных платформ можно писать с помощью единого API, не изменяя приложение под требования фреймворка.
Он не требует внесения изменений в исходный код приложения и работает как отдельный инструмент. Рассмотрим его основные преимущества:
- Большой выбор языков, на которых можно писать тесты: Java, C#, Python, Ruby и другие. То есть он позволяет отказаться от Swift и Objective-C. Это значит, что автотесты смогут писать все тестировщики компании, а не только те, кто работает с iOS-приложениями.
- Не нужно перекомпилировать приложение или изменять его для автоматизации тестирования. Это важно, потому что исходный код тестов и приложения находится в разных проектах и разрабатывается отдельно. Они не зависят друг от друга, поэтому можно избежать многих проблем. Например, если тесты написаны с ошибками и не компилируются, это никак не повлияет на работу приложения.
- Кроссплатформенность. Тестировщики смогут писать тесты для iOS и Android в одной среде, на одном языке и часто использовать один и тот же код повторно. Это сократит время на разработку тестов и, как следствие, их стоимость.
- Обширный функционал. Можно запускать и останавливать приложение, проверять, видны ли элементы на экране, и использовать жесты. Поддерживаются как симуляторы, так и реальные устройства.
Но у Appium есть и недостатки. По сути, это обёртка над нативными драйверами iOS и Android. Тесты могут падать чаще из-за ошибок в коде этой самой обёртки, но стоит отметить, что Appium очень популярен и активно развивается, поэтому многие проблемы, скорее всего, решатся в будущем.
Заключение
Подведем итоги.
Вам точно стоит задуматься об автоматизации тестирования, если:
- у вас сложное приложение со множеством функциональностей
- вы не вносите масштабные изменения слишком часто
- вы хотите сэкономить время и деньги на тестировании базовых функциональностей, таких как логин, бронирование и так далее.
Инструменты и методы:
В списке выше — самые популярные инструменты автоматизации тестирования для iOS. При выборе подходящего учитывайте особенности вашего приложения, проверьте, поддерживает ли инструмент тестирование Android-приложений. И, конечно, не забывайте про предпочтения вашей команды! 🙂
Хотите автоматизировать тестирование мобильного приложения и выйти вперёд? Свяжитесь с нами! Мы ответим в ближайшее время, обсудим детали и предложим оценку по срокам и стоимости.
![Автоматизация тестирования в iOS — кому это нужно + лучшие инструменты [2023] — обложка](https://cdn.prod.website-files.com/647d86e4fc32c113a4d42852/6a4e222c403de55638031005_6a4e2229391ace41db87537f_avtomatizaciya-testirovaniya-v-ios-komu-eto-nuzhno-luchshie-instrumenty-2023_v1.png)
