Рівень 13. Тестування мобільних застосунків
Рівень 13
Тестування мобільних застосунків

Планета Корусант завжди славилася найкращими майстрами мобільного тестування. На цьому рівні ти навчатимешся саме на ній, тож не підведи ім'я майстра. Нехай прибуде з тобою Сила!
Особливості мобільного тестування
- Документація
- Інсталяційне тестування
- Тестування сумісності
- Стрес-тестування
- Навантажувальне тестування
- Функціональне тестування
- Локалізація та юзабіліті
Аналіз документації
Перш ніж приступати до роботи, необхідно уважно вивчити проєкт та його функціонал, пам'ятаючи про вимоги до системи та побажання замовника. Далі розробити тест-план робіт і підготувати всю тестову документацію, відповідно до якої ви й працюватимете надалі.
Важливо пам'ятати, що платформа, на якій буде опубліковано ваш застосунок, також має свої вимоги, без виконання яких застосунок видалять або не допустять до публікації. Під час випуску застосунку потрібно бути впевненим, що він задовольняє всі вимоги платформи.
Інсталяційне тестування
Причина багів під час встановлення — величезна різноманітність як у «начинці» мобільних пристроїв, так і у версіях прошивки, наприклад, того самого Android. Тому під час інсталяційного тестування потрібно пам'ятати про безліч версій кожної окремої системи (чи то Android, iOS, чи навіть BlackBerry).
Мобільний тестувальник має стежити за змінами у світі, наприклад за появою нових мобільних платформ, таких як Win Mobile OS чи Chrome OS.
Дуже важливо пам'ятати про різноманітність пристроїв, які вже є на ринку і можуть бути в користувача, та протестувати:
1. Варіації самих типів пристроїв: планшети, телефони, плеєри;
2. Різні конфігурації заліза в пристроях;
3. Варіації роздільної здатності дисплеїв пристроїв.
4. Різні підверсії прошивок
Як це застосовується на практиці. Для кожного з цих параметрів виконайте тести:
1. Установити застосунок на iPhone/iPod/iPad
2. Установити на «слабкому» і «середньому» за продуктивністю пристрої, з камерою/без камери, із 3G/без 3G тощо...
3. Установити на одному з пристроїв з однієї групи роздільної здатності (докладніше про роздільну здатність буде далі)
4. Установити на пристрої з Android 4.4 і 5.1 (оберіть два найпопулярніші релізи поспіль)
Я теж Android
Тестування сумісності
Тут зазвичай усе досить просто. Продакт-менеджери (керівництво) вашої компанії мають визначити цільову аудиторію застосунку. Ваше ж завдання — протестувати функціонал застосунку на кожній із підтримуваних версій. Наприклад, наразі Apple підтримує версії iOS 8.4.1/ 9.3/ 9.3.1/ 9.3.2
Стрес-тестування
Для мобільних пристроїв стресовими ситуаціями є зовнішні переривання. Вам необхідно перевірити, що застосунок правильно обробляє виняткові ситуації й не збоїть, не крашиться, не втрачає введені дані, не перериває транзакції тощо. Ось мінімальний чек-лист переривань, які
можуть виникнути в користувача під час штатної роботи застосунку:
- Вхідні та вихідні SMS і MMS
- Вхідні та вихідні дзвінки (переконатися, що застосунок
переходить у фоновий режим у разі вхідного дзвінка)
- Виймання акумулятора
- Відключення та підключення USB-кабелю
- Відключення та підключення мережі
- Перехід із режиму Wi-Fi на 3G/4G і назад
- Виймання та вставлення SD-карти
- Вмикання та вимикання програвача
- Заряджання пристрою
- Пуш-сповіщення сторонніх застосунків
- Засинання пристрою
- Підключення навушників
Навантажувальне тестування
Також відоме як тестування продуктивності. Це автоматизоване тестування, яке імітує роботу певної кількості користувачів зі спільним ресурсом. Здебільшого воно актуальне для онлайн-застосунків (особливо мобільних онлайн-ігор). У разі однокористувацького застосунку навантажувальне тестування зводиться до максимального навантаження пристрою всіма можливими операціями в застосунку, додавання максимальної кількості елементів на робочий стіл тощо.

Основні завдання тестування продуктивності:
- Визначити кількість користувачів, які можуть одночасно працювати із застосунком
- Перевірити, як поводиться застосунок за зростання інтенсивності виконання будь-яких операцій
- Перевірити працездатність застосунку за багатогодинного використання на середньому навантаженні
- Перевірити поведінку застосунку за критичного навантаження
- Перевірити роботу в умовах «розрослої» бази даних — наскільки швидко виконуються запити
- Перевірити, як застосунок відновить дані, якщо «покласти» сервер
Ми, дроїди, набагато продуктивніші за людей
Функціональне тестування
Нарешті ми дісталися функціонального тестування! Мабуть, цей найважливіший вид тестування стоїть наприкінці тому, що список найдовший :) Насамперед функціональне тестування проводиться на основі вимог до вашого продукту, а по-друге (або якщо, о жах, вимог немає) — згідно з чек-листом мобільного функціоналу. У цьому чек-листі зібрано основні перевірки й тести, які потрібно виконати над мобільним застосунком. Отже, уперед, до перемоги над мобільним тестуванням.
- Як поводиться застосунок за малої кількості місця на пристрої (нестача місця для встановлення або роботи застосунку)
- За низького заряду акумулятора
- Установлення на SD-карту та у пам'ять пристрою
- Перевірка очищення даних застосунку під час його видалення з пристрою
- Робота з увімкненим/вимкненим GPS
- Підтримка необхідних медіафайлів цією моделлю та ОС
- Локалізація застосунку. Перевірити верстку для кожної мови
- Перевірка адекватності оновлення (зберігаються всі дані користувача). Чи не крашиться застосунок після оновлення.
- Пуш-сповіщення застосунку та їх відкриття
- Гіроскопічний датчик — зазвичай це горизонтальне й вертикальне положення екрана, але бувають застосунки, які реагують на положення в просторі тонше
- Перехід у фон (згорнути й відновити застосунок)
- Переходи в соціальні мережі, реєстрація через соцмережі
- Перевірка роботи одного застосунку з кількома користувачами одночасно (соцмережі) в офлайн/онлайн режимі.
- Верстка — усі елементи мають бути такого розміру, щоб користувач міг однозначно влучити по них пальцем
- Клікабельність — у всіх елементів, на які можна натиснути, має бути натиснутий стан (відгук на дію)
- Жести (особливо на айфонах). Перевірка реакції на зумування двома пальцями, скрол, поворот тощо.
- Робота з фізичною клавіатурою (якщо у списку підтримуваних моделей такі є) – переноси рядків, переміщення по них тощо.
- Відновлення покупки (повторне встановлення в разі видалення)
- Перевірка впливу різних форматів дат, чисел і мов системи
- Переконатися, що пристрій працює в багатозадачному режимі, коли це необхідно
- Перевірити, чи є належна навігація між важливими модулями застосунку
- Перевірити наявність повідомлень про помилки, наприклад повідомлення «Помилка мережі. Будь ласка, спробуйте пізніше» у разі некоректної роботи мережі
- Переконатися, що встановлений застосунок не заважає нормальній роботі інших застосунків і не з'їдає їхню пам'ять
- Переконатися, що автозапуск застосунку працює коректно (якщо він є)
- Переконатися, що є доступний посібник користувача.
Юзабіліті мобільних застосунків і сайтів
Фахівець із юзабіліті Патрік Кокс сформулював 10 принципів, на яких має
ґрунтуватися розробка мобільних застосунків і сайтів.
Тестуючи дизайн мобільної версії сайту чи мобільного застосунку, мисліть не сторінками, а екранами. У своїй статті про мобільний дизайн він пише: «Кожен екран має містити не більше трьох функцій або елементів». Важливо розуміти, що ці й подальші принципи не є чітким критерієм, а лише рекомендацією до дій. Якщо у вашому застосунку на сторінці більше трьох елементів, не потрібно одразу заводити баг. Це просто привід обговорити цей недолік дизайну з продакт-менеджером.
Розгляньмо всі принципи якісного мобільного юзабіліті:
- Немає перевантаження екранів
- Не використовуються виділені стани (підкреслення, яскраві кольори)
- Немає незвичних на вигляд іконок для позначення типів
дій («додати», «змінити», «назад», «вперед» тощо)
- Текст має бути великим шрифтом, написаним просто й зрозуміло
- Прокрутка не використовується без особливої потреби (скрол,
який нічого не прокручує, — це баг)
- Використовуйте елементи вмісту сайту в навігації (наприклад, логотип
містить посилання на головну сторінку)
- Не забудьте перевірити ваш застосунок на наявність зворотного зв'язку з користувачем: Повідомлення під час завантаження контенту / прогрес-бар Повідомлення про помилку доступу до мережі Наявність повідомлень під час спроби видалити важливу інформацію Наявність екрана / повідомлення після завершення процесу / гри Наявність і синхронність звукових та вібраційних сповіщень зі сповіщеннями на екрані.
- Зберігаються порожні місця у верстці. Збільшення висоти рядків робить текст зручнішим для читання на екрані мобільного пристрою.
Що варто не випускати з уваги під час тестування
Для функціонального тестування вам потрібно щонайменше 2 види пристроїв — телефон і планшет, а для повного тестування верстки потрібно щонайменше 4 різні пристрої з екранами в діапазоні форматів (ldpi > mdpi > hdpi > xhdpi). Кожен пристрій тестується у двох орієнтаціях екрана: landscape і portrait. Докладніше про роздільну здатність цих форматів показано на схемі:
Android-пристрої
Android — операційна система для смартфонів, інтернет-планшетів, електронних книг, цифрових програвачів, наручних годинників, ігрових консолей, нетбуків, смартбуків, окулярів Google, телевізорів та інших пристроїв. У майбутньому навіть планується підтримка автомобілів і побутових роботів для android. ОС побудована на ядрі Linux, але має власну реалізацію віртуальної машини Java від Google. Спочатку її розробляла компанія Android Inc., яку згодом купила Google. Згодом Google ініціювала створення альянсу Open Handset Alliance (OHA), який тепер займається підтримкою та подальшим розвитком платформи. Android дає змогу створювати Java-застосунки, що керують пристроєм через розроблені Google бібліотеки.
У 86 % смартфонів, проданих у другому кварталі 2014 року, була встановлена операційна система android. При цьому за весь 2014 рік було продано понад 1 мільярд Android-пристроїв.
Популярні мобільні пристрої: планшет, фаблет, смартфон, плеєр
Роздільна здатність екранів android

Розмір екрана в дюймах
Вид розміру
Щільність зображення (dpi)
Вид щільності

Найпопулярніша роздільна здатність для смартфонів
Найпопулярніша роздільна здатність для планшетів
iOS-пристрої
iOS (до 24 червня 2010 року — iPhone OS) — операційна система для смартфонів, електронних планшетів і носимих програвачів, яку розробляє та випускає американська компанія Apple. Була випущена 2007 року; спочатку — для iPhone та iPod touch, пізніше — для таких пристроїв, як iPad і Apple TV. На відміну від Windows Phone (Microsoft) та Android (Google), випускається лише для пристроїв, які виробляє фірма Apple.
В iOS використовується ядро XNU, засноване на мікроядрі Mach і таке, що містить програмний код, розроблений компанією Apple, а також код з ОС NeXTSTEP і FreeBSD (одна з гілок систем Unix/Linux). Ядро iOS майже ідентичне ядру настільної операційної системи Apple OS X. Починаючи з найпершої версії, iOS працює лише на планшетних комп'ютерах і смартфонах із процесорами архітектури ARM.
Лінійка пристроїв iOS: планшети iPad, iPad mini та смартфони iPhone 6, 5S, 5c, 4S, 4
Роздільна здатність екранів iOS
Запам'ятай: важливо враховувати Retina і не-Retina екрани. На Retina-екранах елементи інтерфейсу й текст будуть у 2 або 4 рази дрібнішими. У свою чергу, зображення для Retina-екрана можуть потрапити в не-Retina версію, і тоді вони будуть дуже великими на звичайних моніторах. Ціла проблема з цими Retina! До речі, у 2016 році планшети на Windows також почали випускати з Retina-дисплеями.
Windows Phone
Windows Phone — мобільна операційна система, розроблена Microsoft, вийшла 11 жовтня 2010 року. Ця операційна система є наступницею Windows Mobile, хоча й несумісна з нею, з повністю новим інтерфейсом і, вперше, з інтеграцією сервісів Microsoft: ігрового Xbox Live та медіаплеєра Zune. На відміну від попередньої системи, Windows Phone більшою мірою орієнтований на споживчий ринок, ніж на корпоративну сферу.
Нова операційна система Windows 10 для мобільних пристроїв отримала назву «Windows 10 Mobile» замість Windows Phone 10 і є продовженням цієї лінійки, хоча й сильно перегукується з десктопною версією. Додатково випущено універсальну Windows 10, яка може працювати як у режимі планшета, так і в режимі десктопа.
Смартфони та планшети з Windows Mobile виробляє дуже багато компаній, наприклад: Samsung, HTC, Nokia, LG, Huawei та інші
Роздільна здатність екранів windows-смартфонів
* оскільки пристрої дуже різношерсті, наведено лише основні формати
Види мобільного тестування
Поки я читав матеріал, у мене накопичилася безліч запитань, давай спробуємо разом відповісти на них.
Як ви проведете Smoke-тестування для мобільного застосунку?
У якому порядку і як виконуватиметься тестування нового функціоналу?
Що ви думаєте щодо Regression-тестування мобільного застосунку?
Як ви виконуватимете Acceptance-тестування?

Перед тестуванням застосунку необхідно завжди складати план роботи:
- Обсяг — що включати в тестування, а що не зачіпається змінами й може бути пропущене
- Як часто проводити регресійне тестування
- На яких пристроях — обрати список підтримуваних пристроїв і підготувати їх до тестування. Встановити застосунки, налаштувати логери тощо.
Допоможи собі сам. Інструменти
До вашої уваги — приклади інструментів, необхідних тестувальнику мобільних застосунків для роботи з тестовими пристроями. Вони потрібні для встановлення тестових застосунків на девайс, роботи з файлами, пам'яттю пристрою тощо.
- Утиліта для роботи з *.apk файлами та перенесення їх на sdcard
- Програма Airdroid, для швидкого перенесення файлів на android через Internet
- DroidExplorer. Ще одна програма для роботи із застосунками без Google Play
Застосунок для тестування на iOS-пристроях. Дає змогу встановлювати тестові версії ПЗ на айфони
Основна програма для роботи з iOS-пристроями
Зняття логів, скриншотів
Дуже часто для встановлення причини бага програмістам необхідно знати код і текст помилки, що виникає під час бага. У браузері для цього передбачено консоль, тому у веб-тестуванні все було просто — відкриваєш консоль і копіюєш помилку в опис бага, справу зроблено! А от із мобільним застосунком інакше: тут логи треба добути, а серед них відшукати потрібну помилку. Зазвичай для цього лог пристрою очищають, а потім потрібно знову відтворити баг. Помилка впаде в лог останньою. Для вас зібрано програми для читання логів мобільних пристроїв.
(розташований у папці tools Android SDK).
CatLog — найпростіший варіант для читання логів, це застосунок, який відображає лог пристрою
Screens (утиліта, що входить до комплекту Android SDK та ddms.bat) дає змогу робити скриншоти підключеного смартфона чи планшета
Android Screenshots and Screen Capture.
Програма для захоплення скриншотів із пристрою, підключеного до ПК
Screen recorder — одна з численних програм для запису відео з екрана. Щоб зробити скриншот, просто натисніть одночасно кнопки «живлення» + «гучність униз». Якщо у вас немає кнопок гучності, погугліть, як зробити скриншот на вашому пристрої
Та сама програма Testflight, що
згадувалася раніше, використовується для читання логів айфонів
Якщо підключити iOS-пристрій до комп'ютера, на якому встановлено Xcode, то логи можна дістати тут: Organizer – Devices
~/Library/Logs/CrashReporter/MobileDevice
Захоплення скриншота на пристрої — затисніть кнопки Home + Power. Однаково для iPhone та iPad
Скриншоти програм, описаних вище



Емулятори та симулятори
Емулятор Android, вбудований в Android SDK. Складний і звивистий метод для наполегливих людей. Вам доведеться погуглити й покопатися, щоб його запустити
Скіни для емулятора Android SDK. Становлять собою код для запуску конкретних моделей: Nexus,Samsung.
GenyMotion — моя улюблена програма для емуляції android. Побудована на програмі VirtualBox (попередній рівень).
GenyMotion — офіційний сайт, а ще можна завантажити програму тут
Симулятор для iOS, вбудований у програму для розробки Xcode. Для роботи з ним вам знадобиться Mac. Наразі не існує офіційної версії для інших ОС. Лише кряки та віртуалки, вони нестабільні й завдадуть багато проблем.
У програмі Xcode емулятор
розташований тут:
~/Library/Application Support/iPhone
Simulator/6/Applications/<файл>
Емулятор, вбудований в android SDK

Ця інформація є додатковою на цьому рівні. На робочому місці вам може знадобитися налаштувати android SDK для дебагінгу android-застосунку. Це можна зробити на windows PC, тому нижче наведено інструкцію, як це зробити.
Завантажуємо та встановлюємо:
- Java SE Runtime Environment
- Android SDK (шлях до папки з установленим SDK не повинен містити літер кирилиці)
В Android SDK Manager обираємо всі необхідні компоненти для встановлення та встановлюємо їх.
Після завершення всіх завантажень необхідно відкрити AVD (Android Virtual
Device Manager) і створити новий віртуальний пристрій.
Обираємо у списку AVD створений пристрій і запускаємо кнопкою “Start”.
(Уперше цей процес займає набагато більше часу й може
тривати кілька хвилин). І так, додамо: цей механізм емуляції потребує великих ресурсів комп'ютера. Безглуздо робити це на пристрої слабшому за Core 2 Duo + 4 Gb RAM.
Скриншоти програми android SDK



Android Debug Bridge
ADB, Android Debug Bridge — це утиліта командного рядка, що входить до Android SDK від Google. За допомогою цієї утиліти можна: копіювати файли на пристрій і назад, встановлювати та видаляти застосунки, виконувати резервне копіювання та відновлення й багато іншого за допомогою команд, виконувати безліч команд Linux, отримувати звіти про помилки тощо.
До речі, android — це гілка систем Linux. Так, тепер ти можеш вважати себе бородатим адміном, власником Linux : ). Докладніша стаття про те, як налаштувати та встановити ADB. Далі наведено популярні команди для роботи в консолі з вашим android через цю програму.
Працює в командному рядку.
- adb shell <cmd> - виконати команду <cmd> в Android
- adb push <local> <remote> - завантажити файл або директорію на пристрій
- adb pull <remote> [<local>] - скопіювати файл або директорію з пристрою
- adb install < package.apk > - встановити пакет
- adb uninstall <package.apk> - видалити програму
- adb connect <ip:port> - з'єднатися з Android через мережу. Потребує певної підготовки пристрою, а саме налаштування ADB через TCP
- adb logcat [filer] - переглянути вивід логів у реальному часі. Можна задати фільтр.
- adb backup - зробити бекап
- adb restore <file> - відновити з бекапу
Інструменти для автоматизованого тестування
Ця тема ще додатковіша. Коли ви заглибитеся в мобільне тестування на роботі й захочете автоматизувати мобільні тести, вам на допомогу прийдуть ці програми:
TestDroid – це плагін для Eclipse, який дає змогу записувати тести
(record&play) у форматі Robotium
MonkeyRunner. Дає змогу виконувати функціональне тестування
застосунку, надаючи API для керування пристроєм.
Robotium – “It's like Selenium, but for Android”. Це фреймворк для створення мобільних автотестів. Він знадобиться вам, коли ви зрозумієте, що означало це речення : )
UIAutomation – дає змогу виконувати тестові сценарії, написані на JavaScript,
як в емуляторі, так і на пристрої iOS
Fonemonkey - рішення Record&Play, цікаве тим, що тести записуються та
редагуються прямо із застосунку, що тестується, на телефоні або
в емуляторі
Приклад автотесту, запущеного в UIAutomation

Настав час практики. Ти вже давно не падаван, а справжній джедай тестування! Для тебе в мене є справжнє бойове завдання.
Учора на базу доставили секретний android-застосунок під кодовою назвою Probid.
Твоє завдання — протестувати його повністю. Ходять чутки, що сіти вплинули на програмістів, і ті припустилися в ньому помилок. Застосунок — це,
Тобі належить установити цей застосунок на свій смартфон, а якщо в тебе немає Android — що ж, доведеться попотіти з емулятором. Магістр пояснював, як ним користуватися, якщо ти любитель складних шляхів у всесвіті.
Оскільки я впевнений, що ти легко з ним упораєшся, ось тобі завдання номер два. Протестуй макети мобільного застосунку, який ще лише розробляється, і знайди в ньому баги. Так, усе вірно: частина багів закладається в застосунок ще на етапі проєктування! Відповідь надішли через форму.
І, як завжди, пройди тест на мобільну придатність від QA Academy. Звіт про тестування впиши в Google Doc і надішли через форму. Для багів достатньо вказати: Summary/ Priority/ Steps to reproduce/Actual result/Expected result
















