Як почати тестувати macOS-застосунки

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Привіт! Мене звати Лєра, і вже близько чотирьох років я працюю QA-інженеркою, спеціалізуючись на тестуванні застосунків для macOS. Мій попередній досвід був тісно пов’язаний з тестуванням web-based-застосунків та API, але згодом я вирішила змінити свій професійний шлях. Рішення було мотивоване бажанням працювати над чимось нетривіальним, що дозволило б мені не тільки розширити свої професійні навички, але й отримати задоволення від роботи над розробкою інноваційних продуктів.

Під час пошуку нових можливостей я натрапила на вакансію macOS QA Engineer у компанії MacPaw. Однак, почавши готуватись до співбесіди, я зіштовхнулась з відсутністю спеціалізованих ресурсів про тестування macOS-застосунків. Інформація, яку я знаходила, була розкидана різноманітними джерелами без чіткої систематизації, а детальні матеріали про сам процес тестування macOS-застосунків були практично відсутні.

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

Операційна система macOS

З чого ж потрібно почати QA-інженерам, які переходять до роботи з macOS-застосунками? У першу чергу, з отримання знань про унікальні особливості операційної системи.

Розуміння самої файлової системи APFS (Apple File System) є фундаментальними знаннями, що дозволять QA-інженерам розробляти більш точні та ефективні тестові сценарії, забезпечить краще розуміння потенційних проблем з продуктивністю і надійністю, які можуть виникнути через взаємодію застосунків з файловою системою. Тому в цьому контексті слід врахувати:

  1. Організацію файлів та каталогів, тобто розуміння того, як macOS організовує файли й каталоги. Це допомагає в аналізі шляхів доступу до файлів та роботі з дозволами.
  2. Alias, symbolic та hard links, які часто використовуються в UNIX-подібних системах, зокрема з macOS. Вони можуть впливати на доступ до файлів і каталогів, що важливо враховувати під час тестування.
  3. Права доступу та управління файлами є досить важливими аспектами в будь-якій операційній системі. Тестування того, як застосунок взаємодіє з файловою системою, зокрема створення, клонування, читання, модифікація і видалення файлів, з урахуванням різних рівнів доступу для користувацьких облікових записів.

macOS має кілька унікальних типів файлів і форматів, які використовуються для встановлення, конфігурації та управління застосунками:

  • bundles — це структуровані каталоги, які дозволяють організувати всі необхідні компоненти застосунку в одному місці, що полегшує розповсюдження, встановлення та запуск програм. Для QA-інженерів є важливим розуміння того, як структуровані і як функціонують бандли в системі;
  • .plist (конфігураційні файли) файли використовуються для зберігання налаштувань користувача та інформації про конфігурацію застосунку. Тестування .plist-файлів зазвичай містить перевірку правильності значень конфігурації, які програма записує і читає під час своєї роботи;
  • інсталяційні файли в macOS, як-от DMG та PKG, вкрай важливі, оскільки визначають, як застосунки розповсюджуються, встановлюються та видаляються з системи.

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

Розуміння того, як ці елементи функціонують в системі, є важливим для QA-інженерів, оскільки це впливає на тестування застосунків з погляду їхнього встановлення, виконання та інтеграції з операційною системою.

Безпека та приватність в macOS

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

Gatekeeper

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

Codesign і notarization

Codesign і notarization — це два ключових механізми безпеки, які допомагають гарантувати, що застосунки, які користувачі завантажують в систему, не були змінені або пошкоджені, і походять від перевіреного розробника. Своєю чергою, QA-інженери мають переконатися, що застосунки правильно підписані та не видають помилок або попереджень при запуску.

FileVault

FileVault забезпечує шифрування всього диска, що допомагає захистити дані користувачів від несанкціонованого доступу. Для QA ключовим є перевірка того, як застосунки взаємодіють з зашифрованими даними та чи не впливає їх функціональність на процес шифрування або дешифрування.

FDA (Full Disk Access)

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

Sandbox

Sandboxing у macOS як технологія безпеки, дозволяє обмежувати дії застосунків до заздалегідь визначених прав доступу, ізолюючи їх від критичних системних ресурсів та даних інших програм. QA-інженери повинні переконатися, що застосунок належним чином функціонує всередині своїх Sandbox-обмежень і що всі очікувані функції доступні без додаткових запитів на дозволи. Також важливо перевірити, як застосунок управляє даними, особливо з погляду витоку інформації, або несанкціонованого доступу до ресурсів.

SIP (System Integrity Protection)

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

Keychain

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

Доступ до системних ресурсів, які можуть містити персональну інформацію

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

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

Чому важливе кросопераційне та кроспроцесорне тестування для macOS-застосунків

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

Кожна окрема версія macOS може мати унікальні особливості або налаштування безпеки, які можуть вплинути на функціональність застосунку. Так, наприклад, у macOS Mojave Apple представила FDA як частину своїх зусиль з підвищення безпеки й приватності користувачів. Це стосувалось доступу до документів, зображень, баз даних пошти та інших даних, які раніше були доступні без спеціальних обмежень.

А з релізом macOS Catalina Apple продовжила розширювати свої заходи безпеки, зокрема зробила деякі уточнення в системі захисту конфіденційності, включаючи FDA. Так, macOS Catalina посилила контроль над тим, як застосунки можуть взаємодіяти з файловою системою і системними компонентами, запровадивши додаткові запити дозволів для доступу до компонентів, таких як теки Documents, Downloads і Desktop. Ці відмінності важливо врахувати під час тестування, але не обмежуватись ними.

Своєю чергою, кроспроцесорне тестування набуло особливої актуальності з появою Apple Silicon, нової лінійки чіпів від Apple, що базується на архітектурі ARM. Ця інновація внесла суттєві зміни у сумісність застосунків із «залізом», оскільки розробники повинні тепер забезпечувати підтримку як традиційних Intel-базованих Macs, так і нових моделей на базі Apple Silicon. Так, застосунки можуть мати різну продуктивність на різних процесорах через архітектурні різниці між x86 (Intel) та ARM (Apple Silicon). Це важливо враховувати під час кроспроцесорного тестування.

Чому варто зважати на перформанс метрики під час тестування macOS-застосунків

Перформанс метрики під час тестування macOS-застосунків мають велике значення для QA-інженерів. Вони дозволяють оцінити ефективність застосунку в розрізі його швидкості, відгуку на дії користувача, використання ресурсів системи, а також стабільності.

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

Для QA-інженерів, моніторинг перформанс-метрик допомагає виявити вузькі місця у продуктивності, як-от витоки пам’яті, неефективні запити до бази даних або погано оптимізовані цикли обробки даних. Виявлення та усунення таких проблем є ключовим для забезпечення стабільності та ефективності застосунку.

Специфіка тестування UI/UX для macOS-застосунків

macOS відома своїм GUI, тому для забезпечення оптимального користувацького досвіду, тестування має враховувати декілька ключових аспектів:

  1. Apple розробила докладні Human Interface Guidelines (HIG), які описують рекомендації та вимоги до дизайну застосунків. Тестування UI/UX повинне забезпечити відповідність цим гайдлайнам.
  2. Доступність (Accessibility) — це не просто важлива характеристика macOS-застосунків, але й обов’язковий стандарт, що забезпечує можливість користування продуктом якомога ширшим колом людей, включаючи осіб з обмеженими можливостями. Так, наприклад, macOS має вбудований скринрідер VoiceOver, який слід використовувати для перевірки того, як застосунки сприймаються і використовуються людьми з порушеннями зору. Не менш важливим є функції збільшення тексту та високий контраст.
  3. Дисплеї Retina та non-retina: macOS підтримує широкий спектр роздільних здатностей, включно з Retina-дисплеями, що мають значно вищу піксельну щільність. Це дозволяє відображати зображення і текст з високою чіткістю та деталізацією. Чому це важливо з думки QA? Якщо застосунок не оптимізований для Retina-дисплеїв, графічні елементи та текст можуть здаватися розмитими або нечіткими, що може погіршити користувацький досвід.
  4. Підтримка темного та світлого режимів. Так, macOS Mojave і новіші версії мають функцію темного режиму, яка змінює зовнішній вигляд оперативної системи та застосунків. Тестування має містити перевірку відповідності UI застосунку обом режимам, а також коректне перемикання між ними.
  5. MacBooks та деякі зовнішні тачпади підтримують жести для взаємодії з застосунками. QA-інженерам необхідно переконатися, що застосунки правильно реагують на жести, такі як прокрутка, збільшення масштабу, свайпи та інші.
  6. Моніторинг розміщення та масштабування UI елементів відповідно до різних роздільних здатностей, які підтримуються на різних пристроях macOS, включно з Retina-дисплеями.
  7. Перевірки того, як застосунок взаємодіє з системними ресурсами, включаючи сповіщення, іконки в Dock, меню бар та інші компоненти системи та їх налаштування.
  8. Перевірка коректності локалізації застосунків, включаючи відображення текстів на різних мовах, дат тощо.

Інструменти для тестування macOS-застосунків

Інструменти для тестування macOS-застосунків надають можливість глибоко аналізувати продуктивність та функціональність. Кожен з наведених далі інструментів має свої унікальні характеристики та призначення у процесі тестування:

Xcode

Офіційне IDE від Apple для розробки на macOS, iOS, watchOS і tvOS. Містить комплект інструментів для розробки, дебагінгу та тестування застосунків. Для QA-інженера досить корисний інструмент для збірки білдів локально, коли на проєкті, наприклад, ще не налаштований CI/CD-процес.

Xcode має вбудований фреймворк для тестування, XCTest (XCUITest). Він дозволяє QA-інженерам ефективно організовувати, писати, та запускати інтеграційні, UI, а також перформанс тести. LLDB (Low Level Debugger) у Xcode є потужним інструментом налагодження помилок. QA-інженери можуть використовувати LLDB для встановлення брейкпойнтів в коді, що дозволяє зупинити виконання програми в певних місцях.

Це особливо корисно для аналізу логіки роботи програми та виявлення умов, які призводять до помилок або неправильної поведінки. Ці й також багато інших вбудованих інструментів Xcode, надають QA-інженерам великі можливості для ефективного тестування та відлагодження macOS-застосунків.

Terminal.app

Дозволяє безпосередньо взаємодіяти з операційною системою за допомогою Unix-команд. У цьому контексті QA-інженеру важливо знати базові Unix-команди та вміти їх застосувати під час процесу тестування.

Console.app

Є лог-менеджером у macOS, який забезпечує доступ до логів та креш-рапортів, як системних, так і тих що відносяться безпосередньо до застосунку. Це допомагає QA-інженерам збирати та аналізувати повідомлення про помилки включно з креш-репортами, а також інші системні події, що важливі для діагностики проблем в застосунках.

Activity Monitor.app

Є інструментом моніторингу, що надає інформацію про використання системних ресурсів: CPU, пам’яті, дискової активності, використання мережі та процесів. Корисний для виявлення проблем із продуктивністю, витоками пам’яті, а також для оцінки впливу застосунку на систему загалом.

Наприклад, однією з особливо корисних функцій Activity Monitor є можливість створення sample для запущеного процесу. Семплінг процесу дозволяє захопити детальний знімок того, що робить процес протягом короткого періоду часу. Sample може бути використаний для аналізу викликів системних функцій і з’ясування, чому процес може споживати надмірні ресурси або поводитись неочікувано.

Network Sniffers (Proxyman, Charles, Fiddler)

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

Висновки та поради

Завершуючи статтю, хочеться зробити акцент на тому, що все вищезазначене є лише базою знань, які закладають фундамент для подальшого розвитку macOS QA Engineer. Ефективність, успіх та подальше розширення власної експертизи у тестуванні macOS-застосунків залежать від глибшого розуміння домену, гнучкості у виборі інструментів та підходів, що найкраще відповідають конкретним вимогам проєкту.

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

Література та ресурси:


Рецензент статті — Геннадій Міщевський.


👍ПодобаєтьсяСподобалось26
До обраногоВ обраному13
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

корисна стаття. дякую 🙏

Підписатись на коментарі