1. В чем основные отличия в принципах тестирования мобильных и веб-приложений?
Принципы тестирования зависят от тест-кейсов и не зависят принципиально от платформы, особенно в плане логики.
При тестировании мобильных приложений нужно учитывать, что существует большое количество таргет-девайсов (планшетов, телефонов и т. д.) с сильно разными характеристиками, ограничениями по производительности, размеру экранов и плотности пикселей. Необходимость тестировать специфичные для разных сетевых подключений кейсы (LTE, 3G, Wi-Fi), обращать отдельное внимание на LBS\GPS сценарии и на тестирование взаимодействия с нативными приложениями ОС, прерываниями системы и нативными permissions. Важно следить за прохождением приложений ревью Apple \ Google и соответствием их требованиям, также процесс обновления приложений в магазинах требует отдельного тестирования и повышенного внимания. С точки зрения автоматизации тестирования много своей специфики, которой нет у веба и десктопа.
При тестировании приложения нужно учитывать то же, что и для веба, плюс: работу при отсутствии подключения к интернету или при подключении с частыми разрывами, миграцию данных при обновлении версии, поведение приложения при изменении ориентации устройства, включении, выключении экрана, переходе в другое приложение и входящих звонках, возможные утечки памяти, большой «зоопарк» разных версий операционных систем и разрешений экранов.
Одно из отличий — разница в количестве технических платформ для тестирования. В случае веб-приложений достаточно закрыть вопрос по ключевым браузерам и их версиям, в случае с мобильными приложениями получается несколько сложнее. Необходимо проверить работу приложений не только на разных версиях операционных систем, но и на разных устройствах. В результате, если подходить серьезно, получается несколько десятков тестовых устройств, что, конечно же, дорого и долго.
Второе отличие — это пользовательский опыт. Маленький экран мобильного устройства не терпит ошибок UX-проектирования. Это тоже одна из задач тестирования — убедиться, что на этапе проектирования не было допущено подобных ошибок.
Основное отличие в том, что надо тестировать на реальных девайсах. Тестирование в эмуляторах мало результативно и позволяет отловить только самые вопиющие вещи. В этом ключе рост фрагментации платформ дает очень серьезную нагрузку на бюджет лаборатории, и разработчики начинают смотреть в сторону сервисов типа Amazon Device Cloud.
2. Есть ли какие-либо различия в тестировании приложений на различных мобильных платформах?
Каждая мобильная платформа имеет индвидуальное, присущее лишь ей поведение: жесты, анимация, компоновка.
Существуют принципиальные различия в используемых инструментах тестирования, специфике публикации в сторах и большей сегментации Android-девайсов. Есть определенные, накопленные опытом edge cases (пограничные кейсы), которые отличаются от платформы к платформе и находятся за рамками базового набора тестов.
Разница определяется возможностями сред разработки. В последнее время между iOS и Android наметился паритет, но, правда, в основном за счет сторонних средств тестирования.
3. Как распределяются приоритеты в тестировании мобильных приложений?
High — приложение крашится, middle — неверная логика работы (баги), low — кривой UI, новые фичи, улучшения. Зачастую в middle попадают новые фичи, если они действительно нужны в текущей итерации.
Для нас приоритет чаще всего будет следующим: функциональное тестирование, smoke test, bug verification, FT, regression test по тест-кейсам или чек-листу по приоритетам, ad hoc, нефункциональное тестирование (security, performance, UI/UX).
4. Какие тренды вы бы могли отметить в области тестирования мобильных приложений и в развитии сервисов, предлагаемых для него?
Есть несколько методологий тестирования, распространенных среди разработчиков. Особых трендов тут нет. Каждый тестирует в меру своей ответственности, часто это происходит в обход сторонних сервисов. В каждой программной среде есть встроенные утилиты, в Xcode, например, мы проверяем на утечки в памяти, частоту и размер серверных запросов, плавность работы.