Какие мобильные операционные системы вы знаете?

Ответ

Основные современные мобильные ОС для тестирования:

Доминирующие платформы:

  1. Android (Google)
    • Основа: Модифицированное ядро Linux, открытый исходный код (AOSP).
    • Особенности для QA: Множество производителей, фрагментация версий и устройств, кастомные оболочки (One UI, MIUI). Требует тестирования на разных разрешениях, версиях ОС и аппаратных конфигурациях.
  2. iOS (Apple)
    • Основа: Darwin (XNU), закрытая экосистема.
    • Особенности для QA: Ограниченный набор устройств, строгие гайдлайны App Store, высокая степень оптимизации. Тестирование преимущественно на симуляторах и реальных устройствах.

Другие значимые ОС:

  1. HarmonyOS (Huawei)
    • Мульти-устройственная ОС, предназначенная для замены Android в экосистеме Huawei, с акцентом на IoT.
  2. KaiOS
    • Легкая ОС на базе Firefox OS для кнопочных телефонов (feature phones) с поддержкой 4G, WhatsApp и базовых веб-приложений.

Устаревшие/нишевые: Windows Phone (не поддерживается), BlackBerry OS, Tizen (в основном для телевизоров и носимых устройств Samsung).

Пример проверки ОС в автотесте (Appium/Java):

import io.appium.java_client.AppiumDriver;

public class OSTest {
    public static void main(String[] args) {
        AppiumDriver driver = new AppiumDriver(...);
        // Получение информации о платформе
        String platformName = driver.getCapabilities().getCapability("platformName").toString();
        String platformVersion = driver.getCapabilities().getCapability("platformVersion").toString();

        System.out.println("Testing on: " + platformName + " " + platformVersion);

        // Условная логика для разных ОС
        if (platformName.equalsIgnoreCase("Android")) {
            // Использование Android-specific локаторов или жестов
            driver.findElement(By.id("android.widget.Button"));
        } else if (platformName.equalsIgnoreCase("iOS")) {
            // Использование iOS-specific локаторов (доступность)
            driver.findElement(By.id("LoginButton"));
        }
    }
}

Ответ 18+ 🔞

Ну вот, сидишь ты такой, тестируешь приложение, а тут — бац! — и всплывает мысль: «А на какой, собственно, операционке эта хрень работает?». И тут, блядь, начинается самое интересное, потому что мир мобилок — это не просто два варианта, это целый ёперный театр с кучей актёров, и половина из них — мартышлюшки с кастомными оболочками.

Главные герои на сцене, которые всех ебут:

  1. Android (от Гугла)

    • Что внутри: Под капотом — переделанное ядро Линукса, исходники вроде как открыты (этот ваш AOSP).
    • Чем нас, тестировщиков, радует: О, это просто песня! Производителей — дохуя. Версий — овердохуища. У каждого уважающего себя китайца — своя оболочка (One UI, MIUI и прочая хуйня). Так что готовься, дружок: нужно проверить на всех разрешениях экранов, на разных версиях ОС и на таком зоопарке устройств, что волосы дыбом встают. Фрагментация, блядь, её в глаза колет!
  2. iOS (от Эппла)

    • Что внутри: Основа — Darwin, но вся экосистема — закрытая, как банковский сейф.
    • Чем нас радует: Здесь всё чинно-благородно и предсказуемо, как у англичан. Устройств — ограниченный набор. Правила в App Store — строже, чем у тёщи в гостях. Зато оптимизация — высший пилотаж. Тестируешь в основном на симуляторах да на парочке реальных девайсов, и спишь спокойно. Ну, почти.

А ещё есть те, кто пытается вломиться в эту тусовку:

  1. HarmonyOS (от Huawei)

    • Ну, эти ребята, после того как им намекнули, что с Androidом могут быть проблемы, сделали свою мульти-устройственную ОС. Заточена под интернет вещей, чтобы чайник с холодильником дружили. Посмотрим, что выйдет.
  2. KaiOS

    • А это, блядь, вообще отдельная история! Лёгкая ОС для кнопочных «бабушек-телефонов». Но с поддержкой 4G, WhatsApp и простеньких веб-приложений. Представь, тестируешь интерфейс, где нужно тыкать в цифровую клавиатуру... Ёбушки-воробушки!

Ну и те, кого уже почти похоронили: Windows Phone (упокоился), BlackBerry OS (скончался), Tizen (дышит на ладан, в основном в телевизорах да часах от Samsung).

А вот, смотри, как в автотесте на Appium можно понять, на чём ты сейчас оказался:

import io.appium.java_client.AppiumDriver;

public class OSTest {
    public static void main(String[] args) {
        AppiumDriver driver = new AppiumDriver(...);
        // Вытягиваем инфу о платформе, как сопли
        String platformName = driver.getCapabilities().getCapability("platformName").toString();
        String platformVersion = driver.getCapabilities().getCapability("platformVersion").toString();

        System.out.println("Testing on: " + platformName + " " + platformVersion);

        // И тут начинается магия: разная логика под разные ОС
        if (platformName.equalsIgnoreCase("Android")) {
            // Используем специфичные для андроида локаторы
            driver.findElement(By.id("android.widget.Button"));
        } else if (platformName.equalsIgnoreCase("iOS")) {
            // А тут уже iOS-шные примочки
            driver.findElement(By.id("LoginButton"));
        }
    }
}

Вот и вся магия. Главное — не перепутать, а то начнёшь искать android.widget.Button на айфоне, и будет тебе, чувак, полный писец и удивление.