Тестирование phonegap-приложений: специфика + опыт
TRANSCRIPT
![Page 1: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/1.jpg)
Software quality assurance days
20 Международная конференция по вопросам качества ПОsqadays.com
Минск. 24–26 ноября 2016
Сергей Иванов Харьков, Украина
Тестирование PhoneGap-приложений: специфика + опыт
![Page 2: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/2.jpg)
О чем пойдет речь
Виды кроссплатформенных приложений
Особенности Phonegap (и в целом HTML) приложений
К чему быть готовым при тестировании
Какие инструменты могут помочь
Пара слов про автоматизацию
Тестирование PhoneGap-приложений: специфика + опыт
![Page 3: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/3.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Какие бывают?
![Page 4: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/4.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Gamedev
![Page 5: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/5.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Compile to Native
C++ Ruby or C# JS JS
![Page 6: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/6.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Hybrid (HTML + JS)
![Page 7: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/7.jpg)
http://propertycross.com/
Тестирование PhoneGap-приложений: специфика + опыт
Где можно пощупать и сравнить?
![Page 8: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/8.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
В чем соль?
?
Приложение работает в мини-браузере (webview)
![Page 9: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/9.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
WTFview?
iframe или вкладка браузера
И в нем приложение
Web-приложение
И скучно как-то
![Page 10: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/10.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
В чем соль?
Приложение работает в мини-браузере (webview),
но есть (ограниченный) доступ к Native API
![Page 11: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/11.jpg)
Камера
Файловая система
Компас
GPS
Медиа
Уведомления
Cеть
Тестирование PhoneGap-приложений: специфика + опыт
Native API?
Акселерометр
Контакты
Сканер отпечатков пальцев
![Page 12: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/12.jpg)
Любые. От простых до сложных.
Ограничение - плагины
Тестирование PhoneGap-приложений: специфика + опыт
Какие приложения возможны?
![Page 13: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/13.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Подбор тестового окружения
SPA js приложение, работающее в специфическом браузере
(webview)Нативные плагины
![Page 14: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/14.jpg)
Свежатина с приходом 7.0
Тестирование PhoneGap-приложений: специфика + опыт
Прекрасный мир webview на Android
Страх и ужас до 4.4
Немножкостабильности
и отладки с 4.4
Красота (нет!) начиная с 5.0
![Page 15: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/15.jpg)
Android default (webkit)
Надстройки производителей
Нет возможности дебага
Тестирование PhoneGap-приложений: специфика + опыт
Android webviewS до 4.4
![Page 16: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/16.jpg)
Одинаковое (почти) на разных девайсах (Chromium 30 on 4.4.0 – 4.4.2,
Chromium 33 on 4.4.3 – 4.4.4)
Можно подебажить
(chrome://inspect/#devices)
Тестирование PhoneGap-приложений: специфика + опыт
4.4 - now Chromium!
![Page 17: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/17.jpg)
Android System WebView
Одинаковое (ну совсем почти) на всех девайсах
Внезапно обновляется и ломает что-то
Внезапно обновляется и чинит что-то
Можно подписаться на betа (на гугл акк)
Комменты :)
Тестирование PhoneGap-приложений: специфика + опыт
5.0 - auto updating
![Page 18: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/18.jpg)
Берется напрямую из chrome.apkТ.е. зависит от версии хрома на девайсе
Можно брать из chrome dev или beta, выбирается в dev settings
Тестирование PhoneGap-приложений: специфика + опыт
7.0 - choose your own
![Page 19: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/19.jpg)
Crosswalk project:
Одинаковое webview
+25 мб к apk
Незаменим для поддержки Android <4.4
Два apk (arm/Intel)
Тестирование PhoneGap-приложений: специфика + опыт
Сильно много? Упростим)
![Page 20: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/20.jpg)
“The web has always been a second-class citizen on iOS (which is ironic, since the iPhone is largely responsible for the mobile web existing as it does today). UIWebView is massive and clunky and leaks memory. It lags behind Mobile Safari, which has the
benefit of the Nitro JavaScript engine.”
Тестирование PhoneGap-приложений: специфика + опыт
iOS до 8.0
UIWEBVIEW
Slow JS
Written by Mattt Thompson — August 24th, 2014
![Page 21: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/21.jpg)
WKWebView
Быстрее, выше, сильнее (60FPS scrolling, поддержка жестов)
Обновляется с обновлением ОС
Минорные апдейты почти ничего не ломают
Мажорные - могут убить всё нафиг (iOS 9 App Transport Security)
Тестирование PhoneGap-приложений: специфика + опыт
iOS 8+
![Page 22: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/22.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Совет
Читайте what’s new и смотрите betа
![Page 23: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/23.jpg)
Краши, ANR, зависят от девайса - всё как всегда)
Тестирование PhoneGap-приложений: специфика + опыт
А нативные плагины?
![Page 24: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/24.jpg)
Какие версии ОС поддерживаем?
Есть ли плагины?
В итоге выборка может быть существенно меньше, чем для натива,если мало используем system API, а webview - одинаковые
Тестирование PhoneGap-приложений: специфика + опыт
Выводы по тестовому окружению
![Page 25: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/25.jpg)
В JS
Большая часть
В логике JS (не зависит от webview)
В работе JS в разных webview
Нет крашей
Есть “белый экран”
Тестирование PhoneGap-приложений: специфика + опыт
Какие ошибки могут быть?
● В HTML
○ Верстка
● В нативной части○ Меньшая часть
○ Краши
![Page 26: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/26.jpg)
Опять плагин - NetworkStatus
Можем хранить данные в:
Файловой системе
Local storage
Тестирование PhoneGap-приложений: специфика + опыт
Ну и сеть, куда без нее
![Page 27: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/27.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Ошибки поинтереснее-поспецифичнее
![Page 28: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/28.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Скорость работы и плавность анимаций
Сильно зависит от девайса
Грустно-печальная не так хороша как в нативеHardware acceleration
![Page 29: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/29.jpg)
Click vs touch
300 ms delay
Touchstart - touchend - 300 ms wait for tap - no tap -> click
UI изменяется -> ghostclick
Тестирование PhoneGap-приложений: специфика + опыт
Ghost clicks
![Page 30: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/30.jpg)
Клавиатура - плагин)
Может вызвать window.resize
Тестирование PhoneGap-приложений: специфика + опыт
Инпуты + клавиатуры
![Page 31: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/31.jpg)
В приложении реализуются посредством верстки (html/css)
1 CSS Pixel = ~1.5 Device Pixel (для High-DPI)
Проблемы с размерами отдельных элементов
(e.g. шрифтов)Сплеши, иконки приложения - через
config.xml
Тестирование PhoneGap-приложений: специфика + опыт
Различные разрешения/dpi
![Page 32: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/32.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Галактеко опасносте!
![Page 33: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/33.jpg)
Одно webview, вся навигация - внутри
iOS - только кнопки в приложении
А в Android есть Backдолжен возвращать на прошлый экран
(а не закрывать приложение)
должен закрывать приложение (а не делать ничего)
Тестирование PhoneGap-приложений: специфика + опыт
Навигация внутри приложения
![Page 34: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/34.jpg)
Одно webview, вся навигация - внутри.
Что происходит при смене ориентации в Android?
Тестирование PhoneGap-приложений: специфика + опыт
Смена ориентации
![Page 35: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/35.jpg)
Одно webview, вся навигация - внутри
Сложно вернуться на текущий скрин
Тестирование PhoneGap-приложений: специфика + опыт
Восстановление приложения
![Page 36: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/36.jpg)
Скоро рассвет...
Тестирование PhoneGap-приложений: специфика + опыт
InAppBrowser
![Page 37: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/37.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Что есть полезного?
![Page 38: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/38.jpg)
Надо допиливать, но работать будут
Тестирование PhoneGap-приложений: специфика + опыт
Встраиваемые фреймворки-инструменты
![Page 39: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/39.jpg)
Менее полезные
Тестирование PhoneGap-приложений: специфика + опыт
Инструменты для тестирования нативных
Пример: Logcat - краши редки -> информации мало, важнее - то, что в JS происходит
![Page 40: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/40.jpg)
iOS:
xCode
Safari remote Debugging with Web Inspector
Тестирование PhoneGap-приложений: специфика + опыт
Debugging
Android:
Chrome remote Debugging (chrome://inspect)
![Page 41: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/41.jpg)
Нет доступа к плагинам
Вообще не то webview где в итоге все будет работать
Тестирование PhoneGap-приложений: специфика + опыт
А еще можно поднять Web-версию
● Быстро
● Доступно
Но логику JS проверить можно)
![Page 42: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/42.jpg)
Ну….есть ripple)
Вернее был)
Тестирование PhoneGap-приложений: специфика + опыт
Специальные инструменты
![Page 43: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/43.jpg)
Доступные инструменты
собраны в одном месте
Удобненько
Mac’овские штучки под виндой
Тестирование PhoneGap-приложений: специфика + опыт
GapDebug
![Page 44: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/44.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Пара слов об автоматизации
driver.switch_to.context(context_name)
![Page 45: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/45.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Разбейте по уровням
* картинка с пирамидой уровней тестирования *
JS - автоматизируйте Web-версию с помощью Selenium. Быстрее, стабильнее.
Services - автоматизируйте с помощью soapUI или python + requests или что угодно.
Native - ручками
![Page 46: Тестирование PhoneGap-приложений: специфика + опыт](https://reader036.vdocuments.site/reader036/viewer/2022062223/58d0ec951a28abba558b636f/html5/thumbnails/46.jpg)
Тестирование PhoneGap-приложений: специфика + опыт
Такой себе последний слайд
WebView - своенравно
Платформы - разные
Развивается - быстро
Разделяйте native и JS части