Sobes.tech
Junior

Povězte o mobilním testování.

sobes.tech AI

Odpověď od AI

Mobilní testování je proces kontroly kvality softwaru navrženého pro mobilní zařízení (smartphony, tablety). Zahrnuje testování na různých platformách (Android, iOS), zařízeních, verzích OS, rozlišeních obrazovky, síťových podmínkách a scénářích použití.

Hlavní aspekty mobilního testování:

  • Funkční testování: Kontrola shody aplikace s požadavky a specifikacemi.
  • Výkonnostní testování: Hodnocení rychlosti, spotřeby paměti a baterie.
  • Testování použitelnosti: Hodnocení intuitivnosti rozhraní, snadnosti navigace a celkové uživatelské zkušenosti.
  • Testování kompatibility: Kontrola funkčnosti aplikace na různých zařízeních, verzích OS a rozlišeních obrazovky.
  • Testování bezpečnosti: Odhalení zranitelností a zajištění ochrany uživatelských dat.
  • Testování přerušení: Kontrola reakce aplikace na příchozí hovory, SMS, oznámení a další události.
  • Testování instalace/odinstalace: Kontrola správnosti instalace a úplného odstranění aplikace.
  • Testování lokalizace (pro vícejazyčné aplikace): Kontrola správnosti zobrazení textu, formátů data a času pro různé regiony.
  • Testování přístupnosti: Kontrola použitelnosti aplikace pro osoby se zdravotním postižením.

Nástroje pro mobilní testování zahrnují:

  • Ruční testování: Použití fyzických zařízení nebo emulátorů/simulátorů.
  • Automatizované testování: Použití rámců a nástrojů.

Některé populární nástroje pro automatizaci mobilního testování:

  • Appium:
    // Příklad jednoduchého testu na Appium (Java)
    import io.appium.java_client.AppiumDriver;
    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class SimpleAppiumTest {
        public static void main(String[] args) throws MalformedURLException {
            DesiredCapabilities cap = new DesiredCapabilities();
            cap.setCapability("deviceName", "emulator-5554"); // Název vašeho emulátoru/zařízení
            cap.setCapability("platformName", "Android");
            cap.setCapability("appPackage", "com.android.calculator2"); // Balíček testované aplikace
            cap.setCapability("appActivity", "com.android.calculator2.Calculator"); // Aktivita testované aplikace
    
            AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    
            // Příklad interakce: stisknout tlačítko '1'
            driver.findElementById("digit_1").click(); 
            
            // ... další akce
            
            driver.quit(); // Ukončit relaci Appium
        }
    }
    
  • Espresso (Android):
    // Příklad jednoduchého testu na Espresso
    package com.example.myapp.test;
    
    import androidx.test.ext.junit.rules.ActivityScenarioRule;
    import androidx.test.ext.junit.runners.AndroidJUnit4;
    import androidx.test.espresso.Espresso;
    import androidx.test.espresso.action.ViewActions;
    import androidx.test.espresso.matcher.ViewMatchers;
    import org.junit.Rule;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    
    import static androidx.test.espresso.assertion.ViewAssertions.matches;
    import static androidx.test.espresso.matcher.ViewMatchers.withId;
    import static androidx.test.espresso.matcher.ViewMatchers.withText;
    
    @RunWith(AndroidJUnit4.class)
    public class SimpleEspressoTest {
    
        @Rule
        public ActivityScenarioRule<MainActivity> activityRule =
                new ActivityScenarioRule<>(MainActivity.class); // Aktivita pro spuštění
    
        @Test
        public void testButtonClick() {
            // Najít tlačítko podle ID a kliknout na něj
            Espresso.onView(withId(R.id.myButton)).perform(ViewActions.click());
    
            // Zkontrolovat textové pole podle ID a jeho obsah
            Espresso.onView(withId(R.id.myTextView)).check(matches(withText("Button clicked!")));
        }
    }
    
  • XCUITest (iOS):
    // Příklad jednoduchého testu na XCUITest (Swift)
    import XCTest
    
    class SimpleXCUIITest: XCTestCase {
    
        func testButtonPress() throws {
            // Inicializace aplikace
            let app = XCUIApplication()
            app.launch()
    
            // Najít tlačítko a kliknout na něj
            let myButton = app.buttons["MyButtonIdentifier"] // ID nebo label tlačítka
            myButton.tap()
    
            // Najít textové pole a zkontrolovat jeho hodnotu
            let myLabel = app.staticTexts["MyLabelIdentifier"] // ID nebo label textového pole
            XCTAssertEqual(myLabel.label, "Button Pressed!")
        }
    }
    

Specifika mobilního testování zahrnují:

  • Velké množství zařízení a verzí OS, vyžadujících rozsáhlou testovací farmu nebo cloudové služby.
  • Testování na různých síťových podmínkách (Wi-Fi, 3G, 4G, 5G, offline).
  • Řízení přerušení a procesů na pozadí.
  • Spotřeba systémových zdrojů (CPU, RAM, baterie).

Emulátory a simulátory jsou používány pro počáteční testování, ale finální testování by mělo být prováděno na skutečných zařízeních pro přesné hodnocení výkonu a uživatelského zážitku v reálných podmínkách.