SlideShare a Scribd company logo
Software quality assurance days
20 Международная конференция по вопросам качества ПО
sqadays.com
Минск. 24–26 ноября 2016
Сергей Иванов
Харьков, Украина
Тестирование PhoneGap-приложений:
специфика + опыт
О чем пойдет речь
Виды кроссплатформенных приложений
Особенности Phonegap (и в целом HTML) приложений
К чему быть готовым при тестировании
Какие инструменты могут помочь
Пара слов про автоматизацию
Тестирование PhoneGap-приложений: специфика + опыт
Тестирование PhoneGap-приложений: специфика + опыт
Какие бывают?
Тестирование PhoneGap-приложений: специфика + опыт
Gamedev
Тестирование PhoneGap-приложений: специфика + опыт
Compile to Native
C++ Ruby or C# JS JS
Тестирование PhoneGap-приложений: специфика + опыт
Hybrid (HTML + JS)
http://propertycross.com/
Тестирование PhoneGap-приложений: специфика + опыт
Где можно пощупать и сравнить?
Тестирование PhoneGap-приложений: специфика + опыт
В чем соль?
?
Приложение работает в мини-браузере (webview)
Тестирование PhoneGap-приложений: специфика + опыт
WTFview?
iframe или вкладка браузера
И в нем приложение
Web-приложение
И скучно как-то
Тестирование PhoneGap-приложений: специфика + опыт
В чем соль?
Приложение работает в мини-браузере (webview),
но есть (ограниченный) доступ к Native API
Камера
Файловая система
Компас
GPS
Медиа
Уведомления
Cеть
Тестирование PhoneGap-приложений: специфика + опыт
Native API?
Акселерометр
Контакты
Сканер отпечатков
пальцев
Любые. От простых до сложных.
Ограничение - плагины
Тестирование PhoneGap-приложений: специфика + опыт
Какие приложения возможны?
Тестирование PhoneGap-приложений: специфика + опыт
Подбор тестового окружения
SPA js приложение, работающее
в специфическом браузере
(webview)
Нативные плагины
Свежатина
с приходом 7.0
Тестирование PhoneGap-приложений: специфика + опыт
Прекрасный мир webview на Android
Страх и ужас
до 4.4
Немножко
стабильности
и отладки с 4.4
Красота (нет!)
начиная с 5.0
Android default (webkit)
Надстройки производителей
Нет возможности дебага
Тестирование PhoneGap-приложений: специфика + опыт
Android webviewS до 4.4
Одинаковое (почти) на разных девайсах
(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!
Android System WebView
Одинаковое (ну совсем почти) на всех девайсах
Внезапно обновляется и ломает что-то
Внезапно обновляется и чинит что-то
Можно подписаться на betа (на гугл акк)
Комменты :)
Тестирование PhoneGap-приложений: специфика + опыт
5.0 - auto updating
Берется напрямую из chrome.apk
Т.е. зависит от версии хрома на
девайсе
Можно брать из chrome dev или beta,
выбирается в dev settings
Тестирование PhoneGap-приложений: специфика + опыт
7.0 - choose your own
Crosswalk project:
Одинаковое webview
+25 мб к apk
Незаменим для поддержки Android <4.4
Два apk (arm/Intel)
Тестирование PhoneGap-приложений: специфика + опыт
Сильно много? Упростим)
“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
WKWebView
Быстрее, выше, сильнее (60FPS scrolling, поддержка жестов)
Обновляется с обновлением ОС
Минорные апдейты почти ничего не ломают
Мажорные - могут убить всё нафиг (iOS 9 App Transport Security)
Тестирование PhoneGap-приложений: специфика + опыт
iOS 8+
Тестирование PhoneGap-приложений: специфика + опыт
Совет
Читайте what’s new
и смотрите betа
Краши, ANR, зависят от девайса - всё как всегда)
Тестирование PhoneGap-приложений: специфика + опыт
А нативные плагины?
Какие версии ОС поддерживаем?
Есть ли плагины?
В итоге выборка может быть существенно меньше, чем для натива,
если мало используем system API, а webview - одинаковые
Тестирование PhoneGap-приложений: специфика + опыт
Выводы по тестовому окружению
В JS
Большая часть
В логике JS (не зависит от webview)
В работе JS в разных webview
Нет крашей
Есть “белый экран”
Тестирование PhoneGap-приложений: специфика + опыт
Какие ошибки могут быть?
● В HTML
○ Верстка
● В нативной части
○ Меньшая часть
○ Краши
Опять плагин - NetworkStatus
Можем хранить данные в:
Файловой системе
Local storage
Тестирование PhoneGap-приложений: специфика + опыт
Ну и сеть, куда без нее
Тестирование PhoneGap-приложений: специфика + опыт
Ошибки поинтереснее-поспецифичнее
Тестирование PhoneGap-приложений: специфика + опыт
Скорость работы и плавность анимаций
Сильно зависит от девайса
Грустно-печальная не так хороша
как в нативе
Hardware acceleration
Click vs touch
300 ms delay
Touchstart - touchend -
300 ms wait for tap - no tap -> click
UI изменяется -> ghostclick
Тестирование PhoneGap-приложений: специфика + опыт
Ghost clicks
Клавиатура - плагин)
Может вызвать window.resize
Тестирование PhoneGap-приложений: специфика + опыт
Инпуты + клавиатуры
В приложении реализуются
посредством верстки (html/css)
1 CSS Pixel = ~1.5 Device Pixel (для
High-DPI)
Проблемы с размерами отдельных
элементов
(e.g. шрифтов)
Сплеши, иконки приложения - через
config.xml
Тестирование PhoneGap-приложений: специфика + опыт
Различные разрешения/dpi
Тестирование PhoneGap-приложений: специфика + опыт
Галактеко опасносте!
Одно webview, вся навигация - внутри
iOS - только кнопки в приложении
А в Android есть Back
должен возвращать на прошлый экран
(а не закрывать приложение)
должен закрывать приложение
(а не делать ничего)
Тестирование PhoneGap-приложений: специфика + опыт
Навигация внутри приложения
Одно webview, вся навигация -
внутри.
Что происходит при смене
ориентации в Android?
Тестирование PhoneGap-приложений: специфика + опыт
Смена ориентации
Одно webview, вся навигация - внутри
Сложно вернуться на текущий скрин
Тестирование PhoneGap-приложений: специфика + опыт
Восстановление приложения
Скоро рассвет...
Тестирование PhoneGap-приложений: специфика + опыт
InAppBrowser
Тестирование PhoneGap-приложений: специфика + опыт
Что есть полезного?
Надо допиливать, но работать
будут
Тестирование PhoneGap-приложений: специфика + опыт
Встраиваемые фреймворки-инструменты
Менее полезные
Тестирование PhoneGap-приложений: специфика + опыт
Инструменты для тестирования нативных
Пример: Logcat - краши редки -> информации мало,
важнее - то, что в JS происходит
iOS:
xCode
Safari remote Debugging
with Web Inspector
Тестирование PhoneGap-приложений: специфика + опыт
Debugging
Android:
Chrome remote Debugging
(chrome://inspect)
Нет доступа к плагинам
Вообще не то webview где
в итоге все будет работать
Тестирование PhoneGap-приложений: специфика + опыт
А еще можно поднять Web-версию
● Быстро
● Доступно
Но логику JS проверить можно)
Ну….есть ripple)
Вернее был)
Тестирование PhoneGap-приложений: специфика + опыт
Специальные инструменты
Доступные инструменты
собраны в одном месте
Удобненько
Mac’овские штучки под виндой
Тестирование PhoneGap-приложений: специфика + опыт
GapDebug
Тестирование PhoneGap-приложений: специфика + опыт
Пара слов об автоматизации
driver.switch_to.context(context_name)
Тестирование PhoneGap-приложений: специфика + опыт
Разбейте по уровням
* картинка с пирамидой уровней тестирования *
JS - автоматизируйте Web-версию с помощью Selenium.
Быстрее, стабильнее.
Services - автоматизируйте с помощью soapUI или python +
requests или что угодно.
Native - ручками
Тестирование PhoneGap-приложений: специфика + опыт
Такой себе последний слайд
WebView - своенравно
Платформы - разные
Развивается - быстро
Разделяйте native и JS части
Тестирование PhoneGap-приложений: специфика + опыт
Спасибо за внимание
s.ivanov@mobidev.biz

More Related Content

PPTX
Мобильные браузеры: очевидное-невероятное
PPTX
Анализ инструментов автоматизации мобильного тестирования
PPTX
Тестирование мобильных API: Behind The Scenes
PPTX
Использование Fiddler для эмуляции различных сетевых условий в автотестах
PDF
Mobile testing. Tips and tricks
PPTX
Провокации автоматического тестирования
PPTX
Поиск багов при тестировании переходов с веба в мобильное приложение
PDF
Автоматизация тестирования базы на примере PostgreSQL
Мобильные браузеры: очевидное-невероятное
Анализ инструментов автоматизации мобильного тестирования
Тестирование мобильных API: Behind The Scenes
Использование Fiddler для эмуляции различных сетевых условий в автотестах
Mobile testing. Tips and tricks
Провокации автоматического тестирования
Поиск багов при тестировании переходов с веба в мобильное приложение
Автоматизация тестирования базы на примере PostgreSQL

What's hot (20)

PPT
Подходы к тестированию андроид приложений
PPTX
Тестируем мобильные приложения в облаках с appium
PDF
Особенности тестирования мобильных приложений (Android, iOS)
PPTX
Все твои ходы записаны
PPTX
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
PDF
Тестирование трафика мобильных приложений: кейсы и инструменты
PPT
Appium для народа
PPT
Тестирование мобильных приложений
PPT
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
PPTX
Mobile testing: Android, iOS, BlackBerry
PPT
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
PPT
До зеленых человечков: исследовательское тестирование мобильных приложений
PPTX
Appium confet qa
PPT
Автоматическое тестирование мобильных приложений на основе скриншотов
PDF
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
PDF
Mobile automation uamobile
PPT
Автоматизированное тестирование мобильных приложений
PPTX
Автоматизация тестирования ролей и привилегий
PPTX
Виртуализация и автоматизация тестирования мобильных приложений
PPTX
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Подходы к тестированию андроид приложений
Тестируем мобильные приложения в облаках с appium
Особенности тестирования мобильных приложений (Android, iOS)
Все твои ходы записаны
Monkey Talk - кросс-платформенное средство автоматизации тестирования мобильн...
Тестирование трафика мобильных приложений: кейсы и инструменты
Appium для народа
Тестирование мобильных приложений
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Mobile testing: Android, iOS, BlackBerry
Антон Семенченко, Никита Беликов "Инструменты автоматизации тестирования моби...
До зеленых человечков: исследовательское тестирование мобильных приложений
Appium confet qa
Автоматическое тестирование мобильных приложений на основе скриншотов
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестирования
Mobile automation uamobile
Автоматизированное тестирование мобильных приложений
Автоматизация тестирования ролей и привилегий
Виртуализация и автоматизация тестирования мобильных приложений
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Ad

Viewers also liked (17)

PPTX
Экосистема Selenium
PPTX
Тестирование отклика Web-интерфейса с JMeter и Selenium
PPTX
Psychology and testing
PPTX
Examples how to move towards Zero Defects
PDF
Automatizacia 2014
PDF
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
PPTX
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
DOC
anvesh resume
PPT
Hum spring house ppt
PPTX
Risikobasiertes testen
PPTX
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
PPTX
Роль тестирования в сертификации ПО систем с высокими требованиями к надежнос...
PPTX
QA Fes 2016. Иван Пашко. Теория Дарвина в тестах. Эволюция Wait-ов.
PPTX
EL NUEVO MILENIO Y LAS TECNOLOGIAS
PDF
Марина Широчкина - Тестирование
Экосистема Selenium
Тестирование отклика Web-интерфейса с JMeter и Selenium
Psychology and testing
Examples how to move towards Zero Defects
Automatizacia 2014
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
anvesh resume
Hum spring house ppt
Risikobasiertes testen
QA Fes 2016. Александр Хотемской. Обзор ProtractorJS как фреймворка для брауз...
Роль тестирования в сертификации ПО систем с высокими требованиями к надежнос...
QA Fes 2016. Иван Пашко. Теория Дарвина в тестах. Эволюция Wait-ов.
EL NUEVO MILENIO Y LAS TECNOLOGIAS
Марина Широчкина - Тестирование
Ad

Similar to Тестирование PhoneGap-приложений: специфика + опыт (20)

PPTX
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
PPTX
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
PDF
Разработка мобильных приложений на HTML5
PDF
Кроссплатформенная разработка
KEY
PhoneGap + Sencha
PDF
Lviv MD Day 2015 Меляницький Владислав "Гібридні програми на JavaScript"
PDF
Lviv mobile development day. Hybrid application
PDF
DUMP-2013 Frontend - Свой PhoneGap за 15 минут! - Охрименко Алексей
PPT
Mobile development
PDF
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PPTX
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
PPT
Эффективная архитектура мобильной автоматизации
PPTX
Introduction to Mobile applications testing
PDF
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
PDF
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
PPT
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
PPT
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
PPTX
Кросс-платформенная мобильная разработка
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Solit 2014, Appium. Тестируем гибридные мобильные прирложения в стиле webdriv...
Разработка мобильных приложений на HTML5
Кроссплатформенная разработка
PhoneGap + Sencha
Lviv MD Day 2015 Меляницький Владислав "Гібридні програми на JavaScript"
Lviv mobile development day. Hybrid application
DUMP-2013 Frontend - Свой PhoneGap за 15 минут! - Охрименко Алексей
Mobile development
[Russian] Прогрессивные веб-приложения: по-настоящему кросс-платформенный опыт
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PhoneGap для мобильного разработчика - глубокое погружение без ОЗК
Эффективная архитектура мобильной автоматизации
Introduction to Mobile applications testing
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Веб 3.0. Есть ли будущее у Java в RIA и Mobile?
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Кросс-платформенная мобильная разработка

More from SQALab (20)

PDF
Готовим стажировку
PPTX
Куда приводят мечты? или Искусство развития тестировщика
PPT
Оптимизация Selenium тестов и ускорение их поддержки
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
PPTX
Continuous performance testing
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
PPT
Команда чемпионов в ИТ стихии
PPTX
API. Серебряная пуля в магазине советов
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PPT
Делаем автоматизацию проектных KPIs
PDF
Вредные привычки в тест-менеджменте
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Стили лидерства и тестирование
PPT
"Давайте не будем про качество"
PDF
Apache.JMeter для .NET-проектов
PPTX
Тестирование геолокационных систем
PPTX
Лидер или босс? Вот в чем вопрос
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Готовим стажировку
Куда приводят мечты? или Искусство развития тестировщика
Оптимизация Selenium тестов и ускорение их поддержки
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Continuous performance testing
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Команда чемпионов в ИТ стихии
API. Серебряная пуля в магазине советов
Добиваемся эффективности каждого из 9000+ UI-тестов
Делаем автоматизацию проектных KPIs
Вредные привычки в тест-менеджменте
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Стили лидерства и тестирование
"Давайте не будем про качество"
Apache.JMeter для .NET-проектов
Тестирование геолокационных систем
Лидер или босс? Вот в чем вопрос
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...

Тестирование PhoneGap-приложений: специфика + опыт

Editor's Notes

  • #22: Apps built using Xcode 7 will use the iOS 9 SDK. iOS 9 implements a new feature called App Transport Security (ATS). By default, ATS does not allow apps built with Xcode 7 to make Ajax connections to servers that are not secured by SSL. Many developers are coming across this for the first time at the same time as they upgrade their stack to use Cordova 5, meaning it is common to incorrectly assume that this is a Cordova version issue
  • #32: CSS Pixels vs Device Pixels Some browsers on some devices (mostly High-DPI android devices or retina displays) don’t make CSS Pixels same as Device Pixels when width of viewport is set to device width. They make 1 CSS Pixel equal to around 1.5 Device Pixel. Which means images, fonts and other things are zoomed by 150%. This default configuration mostly effects images and fonts as they are zoomed they loose quality. There are basically three solutions to this problem: 1. We can make viewport width same as device width with in terms of pixels and then using responsive media queries supply different images and font size according to the resolution. index.html <meta name="viewport" content="target-densitydpi=device-dpi" /> ______________ The screen density The WebView class and most web browsers on Android convert your CSS pixel values to density-independent pixel values, so your web page appears at the same perceivable size as a medium-density screen (about 160dpi). However, if graphics are an important element of your web design, you should pay close attention to the scaling that occurs on different densities, because a 300px-wide image on a 320dpi screen will be scaled up (using more physical pixels per CSS pixel), which can produce artifacts (blurring and pixelation).
  • #33: CSS Pixels vs Device Pixels Some browsers on some devices (mostly High-DPI android devices or retina displays) don’t make CSS Pixels same as Device Pixels when width of viewport is set to device width. They make 1 CSS Pixel equal to around 1.5 Device Pixel. Which means images, fonts and other things are zoomed by 150%. This default configuration mostly effects images and fonts as they are zoomed they loose quality. There are basically three solutions to this problem: 1. We can make viewport width same as device width with in terms of pixels and then using responsive media queries supply different images and font size according to the resolution. index.html <meta name="viewport" content="target-densitydpi=device-dpi" /> ______________ The screen density The WebView class and most web browsers on Android convert your CSS pixel values to density-independent pixel values, so your web page appears at the same perceivable size as a medium-density screen (about 160dpi). However, if graphics are an important element of your web design, you should pay close attention to the scaling that occurs on different densities, because a 300px-wide image on a 320dpi screen will be scaled up (using more physical pixels per CSS pixel), which can produce artifacts (blurring and pixelation).