Ответ
Основные современные мобильные ОС для тестирования:
Доминирующие платформы:
- Android (Google)
- Основа: Модифицированное ядро Linux, открытый исходный код (AOSP).
- Особенности для QA: Множество производителей, фрагментация версий и устройств, кастомные оболочки (One UI, MIUI). Требует тестирования на разных разрешениях, версиях ОС и аппаратных конфигурациях.
- iOS (Apple)
- Основа: Darwin (XNU), закрытая экосистема.
- Особенности для QA: Ограниченный набор устройств, строгие гайдлайны App Store, высокая степень оптимизации. Тестирование преимущественно на симуляторах и реальных устройствах.
Другие значимые ОС:
- HarmonyOS (Huawei)
- Мульти-устройственная ОС, предназначенная для замены Android в экосистеме Huawei, с акцентом на IoT.
- 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+ 🔞
Ну вот, сидишь ты такой, тестируешь приложение, а тут — бац! — и всплывает мысль: «А на какой, собственно, операционке эта хрень работает?». И тут, блядь, начинается самое интересное, потому что мир мобилок — это не просто два варианта, это целый ёперный театр с кучей актёров, и половина из них — мартышлюшки с кастомными оболочками.
Главные герои на сцене, которые всех ебут:
-
Android (от Гугла)
- Что внутри: Под капотом — переделанное ядро Линукса, исходники вроде как открыты (этот ваш AOSP).
- Чем нас, тестировщиков, радует: О, это просто песня! Производителей — дохуя. Версий — овердохуища. У каждого уважающего себя китайца — своя оболочка (One UI, MIUI и прочая хуйня). Так что готовься, дружок: нужно проверить на всех разрешениях экранов, на разных версиях ОС и на таком зоопарке устройств, что волосы дыбом встают. Фрагментация, блядь, её в глаза колет!
-
iOS (от Эппла)
- Что внутри: Основа — Darwin, но вся экосистема — закрытая, как банковский сейф.
- Чем нас радует: Здесь всё чинно-благородно и предсказуемо, как у англичан. Устройств — ограниченный набор. Правила в App Store — строже, чем у тёщи в гостях. Зато оптимизация — высший пилотаж. Тестируешь в основном на симуляторах да на парочке реальных девайсов, и спишь спокойно. Ну, почти.
А ещё есть те, кто пытается вломиться в эту тусовку:
-
HarmonyOS (от Huawei)
- Ну, эти ребята, после того как им намекнули, что с Androidом могут быть проблемы, сделали свою мульти-устройственную ОС. Заточена под интернет вещей, чтобы чайник с холодильником дружили. Посмотрим, что выйдет.
-
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 на айфоне, и будет тебе, чувак, полный писец и удивление.