Найти тему
Мир IT технологий

Отладка мобильных приложений

С распространением мобильных устройств и магазинов специальных приложений разработка их приобретает беспрецедентную популярность. В 2013 году Google Play Store загрузил более 50 миллиардов приложений.

  • Несмотря на огромное множество доступных мобильных приложений, качество этих приложений сильно варьируется.
  • К сожалению, конечные пользователи часто сталкиваются со сбоями и ошибками в работе некоторых приложений, установленных на их устройствах, что подтверждается отзывами пользователей.

Большинство жалоб пользователей связаны со сбоями в работе приложений.

https://pixabay.com/ru/photos/%D1%84%D0%BE%D0%BD%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F-iphone-%D0%B1%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-624712/
https://pixabay.com/ru/photos/%D1%84%D0%BE%D0%BD%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F-iphone-%D0%B1%D0%B8%D0%B7%D0%BD%D0%B5%D1%81-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-624712/

Хотя разработчики мобильных приложений могут использовать широкий спектр инструментов тестирования для обнаружения таких сбоев еще до выпуска, многие из них могут появиться после установки конечным пользователям. Когда пользователи сообщают о дорожно-транспортном происшествии, разработчики должны быстро выявлять и устранять проблемы.

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

  • В качестве примера можно привести недавние сбои в работе приложения Android Wikipedia, которое произошло при нажатии кнопки меню. Однако это падение произошло только на устройствах LG под управлением Android 4.1.

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

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

Мы выбрали платформу Android, потому что, согласно недавнему исследованию, 70% разработчиков мобильных приложений нацелены на Android.
https://pixabay.com/ru/photos/%D1%81%D0%BC%D0%B0%D1%80%D1%82%D1%84%D0%BE%D0%BD-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD-1894723/
https://pixabay.com/ru/photos/%D1%81%D0%BC%D0%B0%D1%80%D1%82%D1%84%D0%BE%D0%BD-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%82%D0%B5%D0%BB%D0%B5%D1%84%D0%BE%D0%BD-1894723/

Для оценки MOTIF мы случайным образом выбрали 5 приложений для Android, для которых пользователи сообщали о сбоях. Мы предварительно установили MOTIF и набор тестируемых приложений на 5 различных устройствах Android с различными характеристиками, чтобы имитировать разнообразную толпу.

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

В итоге в конкурсе приняли участие 10 человек.

Каждый раз, когда появляется необработанное исключение, трассировка исключения и информация о состоянии передается на сервер MOTIF вместе с событиями взаимодействия с пользователем, произошедшими до аварии. Участники смогли сгенерировать 52 сбоя в пяти приложениях, распределенных по различным устройствам. Кроме того, для оценки воздействия шума мы используем прибор для тестирования обезьян для увеличения количества следов. Обезьяна генерирует псевдослучайные пользовательские события (т.е. клики, касания) в приложениях, запущенных на устройстве.

  • Мы позволили Monkey отправить 50 000 событий в одно из приложений из нашего набора данных, и мы повторили этот процесс 50 раз.

Третий и заключительный этап MOTIF заключается в обновлении приложений во избежание сбоев. Мы случайным образом выбрали одно из багги-приложений, использовавшихся в эксперименте - приложение PocketTool. Для того чтобы автоматически избежать отмеченных сбоев, мы реализовали базовую стратегию исправления, которая заключается в вставке блоков try/catch в код приложения в различных подозрительных местах.

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

В данном примере мы сгенерировали два патча, и только один из них фактически предотвращает аварию.

  • Хотя этот подход фокусируется на ошибках, которые проявляются при авариях, концептуальные основы нашего подхода могут быть расширены для решения других типов проблем (например, ошибки в работе или энергопотреблении).

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