Sobes.tech
Junior

Ispričajte o mobilnom testiranju.

sobes.tech АИ

Одговор од АИ

Мобилno testiranje je proces provere kvaliteta softvera namenjenog za mobilne uređaje (smartphone-ove, tablete). Uključuje testiranje na različitim platformama (Android, iOS), uređajima, verzijama OS-a, rezolucijama ekrana, mrežnim uslovima i scenarijima korišćenja.

Glavni aspekti mobilnog testiranja:

  • Funkcionalno testiranje: Provera usklađenosti aplikacije sa zahtevima i specifikacijama.
  • Testiranje performansi: Procena brzine, potrošnje memorije i baterije.
  • Testiranje upotrebljivosti: Procena intuitivnosti interfejsa, lakoće navigacije i ukupnog korisničkog iskustva.
  • Testiranje kompatibilnosti: Provera rada aplikacije na različitim uređajima, verzijama OS-a i rezolucijama ekrana.
  • Testiranje bezbednosti: Otkrivanje ranjivosti i obezbeđivanje zaštite korisničkih podataka.
  • Testiranje prekida: Provera reakcije aplikacije na dolazne pozive, SMS poruke, obaveštenja i druge događaje.
  • Testiranje instalacije/uklanjanja: Provera ispravnosti instalacije i potpune deinstalacije aplikacije.
  • Testiranje lokalizacije: Provera ispravnosti prikaza teksta, formata datuma i vremena za različite regione.
  • Testiranje pristupačnosti: Provera upotrebljivosti aplikacije za osobe sa ograničenim mogućnostima.

Alati za mobilno testiranje uključuju:

  • Ručno testiranje: Korišćenje fizičkih uređaja ili emulacija/simulacija.
  • Automatizovano testiranje: Korišćenje okvira i alata.

Neki popularni alati za automatizaciju mobilnog testiranja:

  • Appium:
    // Primer jednostavnog testa 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"); // Ime emulatora/uređaja
            cap.setCapability("platformName", "Android");
            cap.setCapability("appPackage", "com.android.calculator2"); // Paket testirane aplikacije
            cap.setCapability("appActivity", "com.android.calculator2.Calculator"); // Aktivnost testirane aplikacije
    
            AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    
            // Primer interakcije: pritisnuti dugme '1'
            driver.findElementById("digit_1").click(); 
            
            // ... dalje radnje
            
            driver.quit(); // Zatvaranje sesije Appium
        }
    }
    
  • Espresso (Android):
    // Primer jednostavnog testa 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); // Aktivnost za pokretanje
    
        @Test
        public void testButtonClick() {
            // Pronaći dugme po ID i kliknuti na njega
            Espresso.onView(withId(R.id.myButton)).perform(ViewActions.click());
    
            // Proveriti tekst u tekstualnom polju
            Espresso.onView(withId(R.id.myTextView)).check(matches(withText("Button clicked!")));
        }
    }
    
  • XCUITest (iOS):
    // Primer jednostavnog testa na XCUITest (Swift)
    import XCTest
    
    class SimpleXCUIITest: XCTestCase {
    
        func testButtonPress() throws {
            // Inicijalizacija aplikacije
            let app = XCUIApplication()
            app.launch()
    
            // Pronaći dugme i kliknuti na njega
            let myButton = app.buttons["MyButtonIdentifier"] // ID ili label dugmeta
            myButton.tap()
    
            // Pronaći tekstualno polje i proveriti njegovu vrednost
            let myLabel = app.staticTexts["MyLabelIdentifier"] // ID ili label tekstualnog polja
            XCTAssertEqual(myLabel.label, "Button Pressed!")
        }
    }
    

Specifičnosti mobilnog testiranja uključuju:

  • Veliki broj uređaja i verzija OS-a, što zahteva obimnu testnu farmu ili cloud servise.
  • Testiranje na različitim mrežnim uslovima (Wi-Fi, 3G, 4G, 5G, offline).
  • Upravljanje prekidima i procesima u pozadini.
  • Potrošnja sistemskih resursa (CPU, RAM, baterija).

Emulatori i simulatore se koriste za početno testiranje, ali završno testiranje treba obaviti na pravim uređajima radi tačne procene performansi i korisničkog iskustva u realnim uslovima.