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.