Каковы основные различия в тестировании ПО под macOS и Windows?

«Каковы основные различия в тестировании ПО под macOS и Windows?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ключевые различия:

  1. Архитектура и системные API

    • Windows: Использует WinAPI (Windows API) и, для современных приложений, WinRT/UWP.
    • macOS: Использует фреймворки Cocoa (Objective-C/Swift) и Carbon (устаревший C API). Это напрямую влияет на интеграцию, работу с окнами, файловой системой и уведомлениями.
  2. Файловые системы и пути

    • Windows: Основная ФС — NTFS. Разделитель пути — обратный слэш (). Чувствительность к регистру в именах файлов опциональна.
    • macOS: Основные ФС — APFS, HFS+. Разделитель пути — прямой слэш (/). Файловая система по умолчанию нечувствительна к регистру, но может быть настроена как чувствительная. Это частая причина багов в кросс-платформенных приложениях.
  3. Графический стек и рендеринг

    • Windows: Использует DirectX (для игр и мультимедиа) и GDI+/WPF для классических приложений.
    • macOS: Использует Quartz (Core Graphics) и Metal. Различия в рендеринге могут приводить к визуальным артефактам.
      // Пример рисования линии в macOS (Core Graphics)
      let path = NSBezierPath()
      path.move(to: NSPoint(x: 0, y: 0))
      path.line(to: NSPoint(x: 100, y: 100))
      path.stroke()
  4. Модель безопасности и разрешения

    • macOS: Имеет строгий sandbox для приложений из App Store, Gatekeeper для проверки разработчиков, и запросы на доступ к папкам (Documents, Desktop).
    • Windows: Использует Контроль учетных записей (UAC), контроль целостности кода (Code Integrity). Структура разрешений отличается.
  5. UI/UX и гайдлайны

    • macOS: Human Interface Guidelines — акцент на панели меню вверху экрана, соглашения о жестах (например, прокрутка).
    • Windows: Fluent Design System — другое расположение меню, стиль окон, поведение элементов управления.

Для тестировщика: Важно проверять платформо-специфичные функции, пути установки, работу с реестром (Windows) и plist-файлами (macOS), а также корректность отображения UI в соответствии с гайдлайнами.