Тестування додатків на iOS для початківців з практичними порадами

У цій статті зібрана базова інформація, яка необхідна для тестування мобільних додатків на iOS

“У кожного є мобільний телефон, але я не знаю жодної людини, яка від нього у захваті. Я хочу зробити телефон, який полюблять усі.” — Стів Джобс.

Стів Джобс мав на увазі iPhone і справді змусив компанію Apple працювати над тим, щоб створити найулюбленіший телефон всіх часів.

Користувачі завжди прихильно ставляться до мобільних пристрої Apple, будь то iPhone, iPod Touch чи iPad. Поточні дані свідчать про те, що у світі працює майже 1 мільярд пристроїв Apple на операційній системі iOS.

1.png

Аналіз частки ринку iPhone у 2016 році:

2.png

iOS —це мобільна операційна система, розроблена компанією Apple для пристроїв власного виробництва, так званих iDevices. Починаючи з 2007 року, коли iOS була розроблена лише для iPhone, операційну систему почали використовувати і для сенсорних пристроїв та iPad.

За поточними дослідженнями, iOS є другою за популярністю мобільною операційною системою на ринку. Враховуючи, що система Android працює на пристроях від різних виробників, а iOS використовується тільки для продукції компанії Apple, можна говорити про її беззаперечну популярність.

За роки існування, для iOS було багато релізів з новими функціями та покращеннями.

3.png

Операційна система iOS славиться своєю зручністю у користуванні, програмами, що працюють без збоїв тощо. Маркет iTunes налічує більше 2,2 мільйонів додатків, а завантаження програм користувачами зросло до колосальних 130 мільярдів.

iOS - це операційна система, яка не обмежена жодним просторовим чи мовним бар’єром. Це одна з основних причин популярності цієї операційної системи, яка підтримує 40 різних мов.

Не лише мови, а й інтерфейс пристроїв iOS дуже привабливий і стильний.

4.png 5.png

Статистика щодо мобільних додатків:

  • Apple iTunes щодня отримує майже 1000 нових заявок.
  • Близько 1/3 всіх додатків в Apple iTunes можна завантажити безкоштовно.
  • Платні iOS додатки в середньому коштують від $1.10 до $1.30.
  • Середня ціна ігрового додатку на iOS від $0.55 до $0.65.

Скільки програм ви використовуєте на своєму iPhone, iPod Touch чи iPad?

Напевно, що дуже багато! Починаючи з Gmail та Facebook, закінчуючи Clash of Clans та Asphalts.

QA інженерам потрібно звертати увагу не лише на функціональність додатку, але і поглиблено перевіряти UI програми на iPhone, iPod та iPad через відмінність у розмірах екрану.

Тестування iOS

iOS може використовуватись лише на обладнанні створеному компанією Apple. З одного боку, це спрощує роботу, з іншого, існує безліч пристроїв з різними версіями.

Систему Apple можна назвати закритою, на відміну від Android, з добре спланованими випусками пристроїв та версій операційних систем.

Це додаткова перевага, оскільки:

  • Існують фіксовані розміри пристроїв, які вже є доступними або плануються для випуску, що полегшує роботу QA
  • Не потрібно проводити глибокий аналіз операційної системи, оскільки вона є закритою системою та вимагає менше часу та зусиль для її вибору
  • В Apple є власні різноманітні автоматичні інструменти
  • iOS має вбудовану функцію для надсилання фейкового GPS для ходьби, бігу, їзди на велосипеді тощо, адже для первинного тестування не рекомендується тестувати реальний GPS, бажано надсилати фіктивні дані для економії часу
  • Apple має чіткі вказівки щодо подання заявки, що підвищує шанси на успішне опублікування додатку, на відміну від інших компаній, де немає таких чітких правил
  • Функціональність самого пристрою та ОС є фіксованою та простою, тож це зменшує можливість пропустити можливі сценарії роботи додатку. Немає способу примусово зупинити програму на iOS, на відміну від Android, тож змінюється специфіка тестування

Це деякі переваги продуктів Apple, але вони не обов’язково присутні у кожній програмі. З додатками, які створені для роботи на кількох платформах, можуть бути складнощі у роботі.

6.png

Першим кроком у тестуванні додатків iOS є визначення типу реалізації:

  1. Веб-програми: додатки, які працюють схоже до вбудованих iOS додатків, це веб-сайти, які доступні через браузер Safari на iPhone
  2. Нативні додатки: додатки розроблені з використанням iOS SDK (Software Development Kit) які працюють і на підтримуваних iOS пристроях, таких як VLC, Flipboard, Uber тощо
  3. Гібридні додатки: мікс вищеназваних типів, що дає можливість доступу до веб контенту і UI елементів для iOS, наприклад Zomato, Twitter, Gmail

Типи тестування iOS додатків

  • Мануальне тестування з використанням девайсів

Системне тестування

Тестування UI / UX

Тестування безпеки

Field тестування

  • Мануальне тестування з використанням емулятора

Модульне тестування

Інтеграційне тестування

Тестування UI

  • Автоматизоване тестування

Регресійне тестування

Тестування BVT

Тестування сумісності

Тестування продуктивності

Приклад додатку на iOS

Розглянемо додаток для збору коштів для спортивної команди з логіном через соціальний акаунт (Google / Facebook) та сторінкою для оплати. Перш ніж перейти на сторінку оплати, має бути можливість вибрати визначені системою суми або відкрити спеціальне поле для введення іншої суми. Після завершення платежу, PDF сертифікат повинен відобразитись на сторінці і одночасно надсилатись на електронну адресу користувача, який наразі ввійшов до системи.

7.png

Мануальне тестування з використанням девайсу

  1. Системне тестування:

Цей тип тестування проводиться, щоб перевірити, чи працюють різні компоненти системи разом. Під час тестування додаток iOS запускається на реальному пристрої Apple з подальшою взаємодією з користувальницьким інтерфейсом для ініціювання певних дій користувача. Типовою дією користувача може бути проведення пальцем по екрану. Фактичний результат порівнюється з очікуваним результатом.

Якщо розглядати приклад з тестовим додатком наведеним вище, типове системне тестування може містити наступні кроки:

  • Увійти в додаток використовуючи акаунт Facebook з відкритою автентифікацію.
  • Вибрати із заданих параметрів заздалегідь визначену системну суму $10.
  • Перейти до платежу.
  • Обрати платіжну систему PayTm для процесу оплати.

Системні тести — це дії які охоплюють більшість End to End процесів у системі. Кожен тест повинен виконуватись з різними доступними конфігураціями. Також, тести залежать від девайсу та версії iOS.

  1. UI тестування на iOS

UI/UX iOS девайсів є однією з причин їх успіху.

Тестування UI/UX на пристроях iOS можна класифікувати за такими категоріями:

  • Тестування функціональності для вхідних даних: до цієї категорії належать тестування функціональності сенсорного екрану (наприклад, довгий / короткий дотик, 3D Touch, прокрутка), розміри кнопок, розташування кнопок, колір шрифтів та їх розмір тощо.
  • Апаратні кнопки: нативні програми взаємодіють з апаратними кнопками на пристрої, такими як Home, кнопки звуку тощо.
  • Програмні кнопки/клавіатура : дуже прикро, коли клавіатура не відображається на сторінці повідомлень в Whatsapp, тому вона повинна коректно відображатись та зникати, підтримувати надсилання смайлів, символів та усіх необхідних знаків. Якщо говорити про наш тестовий додаток з прикладу, клавіатура повинна з’являтись при вводі суми не зазначеної в системі, при вводі облікових даних та картки під час платежу.
  • Екран: якщо додаток підтримується на кількох пристроях, його слід перевірити на них через різні роздільні здатності девайсів. Також, потрібно перевіряти книжкову та альбомну орієнтації та використання клавіатури у цих режимах.

Якщо додаток створений не лише для iOS, то є декілька пунктів, які потрібно спеціально протестувати для iOS, наприклад:

  • Списки : новий список на iOS відображається в новому вікні, на відміну від Android, де з’являється pop-up вікно:

8.png 9.png

  • Повідомлення: коли програма аварійно завершує роботу, повідомлення на iOS відрізняється від Android. Також, на iOS немає таких flash повідомлень як “# Гб звільненої пам'яті ” тощо:

10.png 11.png

  • Діалог підтвердження видалення: опція Cancel на IOS знаходиться справа, на Android зліва:

12.png 13.png

Це деякі приклади, які потребують окремих тестових кейсів та тестування, оскільки UI на iOS змінити неможливо.

  1. Тестування безпеки

В додатку наведеному як приклад, у нас є платіжний шлюз та логін сторінка з інтеграцією соцмережі.

Можна тільки уявити що станеться, якщо у нас є додаток ICICI і при вході в систему, відображається інший акаунт або під час переказу грошей, додаток надсилає OTP на інший номер телефону.

Тому тестування безпеки є таким необхідним. Дані з соцмереж при вході в додаток і платіжний шлюз повинні бути зашифровані або захищені, щоб уникнути злому додатку.

  1. Field тестування

Таке тестування проводиться, щоб перевірити поведінку додатку в мережі мобільного зв’язку. Цей тест зазвичай виконується, коли додаток стабільний і його функціонал працює коректно для перевірки продуктивності програми при повільній швидкості передачі даних в мережі.

Мануальне тестування з використанням емуляторів

  1. Модульне тестування

Таке тестування зазвичай виконується командою розробників/програмістом. Перевіряється чи працює певний модуль вихідного коду належним чином чи ні. Програмісти розробляють модульні тестові кейси для одного компонента, тобто ізольованого модуля, над яким вони працюють. Коли тест показує що окремий модуль функціонує, його вводять у вихідний код для роботи як елемент інтегрованої архітектури. Це переважно мануальний тестовий запуск, виконаний з використанням емуляції.

  1. Інтеграційне тестування

Коли ми впевнені у функціональності окремих блоків / модулів, необхідно перевірити також інтеграцію. Це тестування проводиться для з’ясування проблем, пов’язаних з різними аспектами інтеграції. В додатку наведеному як приклад, можна перевірити вхід в систему як один модуль та платіжний шлюз як інший. Інтеграційне тестування перевіряє цілісність обох модулів та їх взаємодію.

  1. UI тестування

Користувацький інтерфейс є одним з ключових факторів успіху програми. Придбати всі моделі телефонів для тестування практично неможливо, тому найкращим варіантом є використання емулятора для виявлення помилок інтерфейсу.

Автоматизація на iOS

  1. Регресійне тестування

Постійно вносяться зміни для вдосконалення програми або виправлення проблем, виявлених у попередній версії і під час їх впровадження існує ймовірність того, що зміни, внесені в додаток, можуть змінити вже існуючу функціональність. Щоб перевірити, чи працює програма однаково після змін, необхідно провести регресійне тестування. І оскільки це повторювана діяльність, автоматизація стане в нагоді для такого типу тестового запуску.

  1. BVT тестування

Автоматизований запуск нової збірки для тестування економить багато часу, і якщо основні функціональні можливості виходять з ладу, про це негайно повідомляється. Якщо порівнювати з мануальним тестуванням, результати автоматизованих базових тестів для прийняття або відхилення збірки можуть бути отримані за лічені хвилини.

  1. Тестування сумісності

Як вже було сказано, існує безліч пристроїв, випущених Apple. Це означає що програма повинна працювати на всіх цих пристроях, якщо вона є сумісною з ними.

Мануальне тестування на усіх пристроях неможливе, тому в нагоді стає автоматизоване тестування.

  1. Тестування продуктивності:

Сценарії, які перевіряються під час тестування продуктивності:

  • Поведінка програми під час використання
  • Поведінка програми під час тривалої роботи
  • Різне навантаження
  • Передача великого масиву даних

Зазвичай тестові кейси для перевірки продуктивності автоматизуються.

Найкращі підходи для тестування iOS додатків

Тестування iOS додатків може бути дуже складним, тож можна застосовувати такі підходи для проведення коректного тестування:

# 1) Використання одних тільки емуляторів неможливе:

У більшості випадків під час тестування надають перевагу емуляторам, ніж реальним девайсам. Але такі тестові випадки як взаємодія з користувачем, споживання батареї, доступність мережі, ефективність використання, використання пам'яті не можна коректно перевірити на емуляторах. Отже, намагайтеся тестувати і на реальних пристроях.

# 2) Автоматизуйте все що можливо:

Наскільки швидко ви виконуєте конкретне завдання? У сучасному світі всіх в основному турбує витрачений час. Автоматизація не тільки скорочує час виконання, але також підвищує ефективність та охоплення різних сценаріїв для тестування програмного забезпечення.

# 3) Діліться завданнями:

Поділіть тестуванням між командами, включаючи команду розробників для допомоги з автоматизацією кейсів.

# 4)Аналізуйте логи:

Логи відіграють важливу роль для розуміння багів.

Для перевірки логів потрібно:

Для MacOS:

  • Синхронізувати девайс iOS із Mac комп’ютером.
  • На Mac OS утримувати клавішу Option, щоб відкрити панель меню.
  • Перейти до Go Menu і натиснути Library.
  • Перейти до ~/Library/Logs/CrashReporter/MobileDevice/<iOS device name>/.
  • Ім’я файлу з логами повинно починатись з назви програми

Для ОС Windows:

  • Синхронізувати девайс iOS із комп’ютером (Windows).
  • Перейти до C:\Users\AppData\Roaming\Applecomputer\Logs\CrashReporter\MobileDevice\<iOS
  • Ім’я файлу з логами повинно починатись з назви програми

# 5) Логи консолі:

Логи консолі дають загальну інформацію про програми на девайсі iOS.

Це можна зробити за допомогою таких інструментів, як iTools. У програмі iTools натисніть на піктограму “Toolbox”, коли пристрій iOS підключено до системи, на якій запущено iTools. “Real-Time log” надає логи консолі в реальному часі.

# 6) Знімок екрану:

Зрозуміти проблему і виправити її легше з візуальними кроками.

Бажано записати екран або зробити скріншоти проблеми, щоб команда розробників краще її зрозуміла. Знімок екрана можна зробити за допомогою вбудованої функції, одночасно натиснувши кнопку живлення та Home кнопку.

Запис екрану можна здійснити за допомогою Quick time player, коли пристрій iOS підключено до Mac.

Фреймворки для автоматизації

Найбільше використовуються такі фреймворки:

#1) Appium:

Appium використовує драйвер Selenium Web для автоматизації тестування додатків на iOS. Ця платформа є незалежною і може використовуватись для веб та мобільних девайсів як і iOS, так і Android. Це система з відкритим вихідним кодом є незалежною від мови програмування. Зміни в додатку чи доступ до вихідного коду не є обов’язковими для автоматизації з використанням Appium. Appium працює незалежно від типу програми.

#2) Calabash:

Calabash - це багато платформний фреймворк з відкритим вихідним кодом який підтримує автоматизацію для iOS та Android.

Calabash тести написані з використанням Cucumber, який є простим для розуміння. Calabash складається з бібліотек, які дозволяють користувачеві взаємодіяти як із нативними, так і з гібридними додатками і підтримує різні взаємодії.

#3) Earl Grey:

Earl Gray – внутрішній UI фреймворк від Google. Він використовувався для тестування YouTube, Google Photos, Google Play Music, Google Calendar тощо.

Нещодавно Earl Gray став платформою з відкритим вихідним кодом. Головними перевагами Earl Gray є вбудована синхронізація, перевірка видимості перед взаємодією, справжня взаємодія з користувачем (натискання, проведення пальцем по екрану тощо). Система дуже схоже на Espresso від Google, яка використовується для UI автоматизації Android.

#4) UI Automation:

UI Automation розроблена Apple і дуже схожа на UI Automator для Android. API визначаються Apple, а тести написані на JAVA.

#5) KIF:

KIF розшифровується як “Keep it Functional”(“Зберігайте функціональність”). Це сторонній фреймворк з відкритим кодом.

Це iOS integration фреймворк, пов’язаний з XCTest. Його легко налаштувати чи інтегрувати з Xcode, тому немає необхідності для додаткових веб-серверів. Також, KIF сумісний з багатьма версіями iOS.

Підсумок

Тестування iOS додатків може бути дуже складним завданням. Однак вибір правильного підходу, процесу тестування, методологій, інструментів, емуляторів / пристроїв тощо робить тестування набагато простішим та успішнішим.


Джерело

Переклад Лілії Вариводи

Курси та події

Публікації

Відео