Sobes.tech
Middle+

Pasakokite apie atvejus, kai mobiliojoje programėlėje buvo tikrinama vėl prisijungimo galimybė.

sobes.tech AI

Atsakymas iš AI

Rekonnect testai tikrina, kaip mobilioji programa elgiasi praradus ryšį ir vėl jį atgaunant su serveriu ar kitais tinklo ištekliais:

Testavimo scenarijai:

  • Tinklo perjungimas:
    • Wi-Fi -> Mobilusis internetas (LTE/5G):
    • Mobilusis internetas (LTE/5G) -> Wi-Fi:
    • Wi-Fi (vienas taškas) -> Wi-Fi (kitas taškas):
  • Signalo praradimas:
    • Įėjimas į zoną be aprėpties (liftas, metro):
    • "Lėktuvo režimo" įjungimas/išjungimas:
    • Tinklo sąsajų priverstinis išjungimas (Wi-Fi, Cellular Data) įrenginio nustatymais:
  • Serverio problemos:
    • API laikinai nepasiekiama:
    • Serverio perkrovimas:
    • Tinklo delsimas (simuliuojama per proxy serverius):

Ką tikriname:

  • Vartotojo sąsajos/UX elgsena:
    • Įkėlimo ar klaidų indikatoriai:
    • Dabartinės būsenos išsaugojimas (pvz., nebaigtas įvedimas, sąrašo pozicija):
    • Pranešimų apie ryšio praradimą/atstatymą teisingas rodymas:
    • Programėlės gedimai ar "užšalimai":
  • Duomenų vientisumas:
    • Duomenys, kurie buvo siunčiami/gauti per ryšio nutraukimą, turi būti tinkamai apdoroti po atstatymo:
    • Vietoje išsaugoti duomenys turi būti sinchronizuoti su serveriu:
  • Pakartotiniai bandymai (Retry Logic):
    • Programėlė turi turėti pakartotinių bandymų logiką su eksponentiniu delsimu (backoff):
    • Ribojamas bandymų skaičius ir laukimo laikas:
  • Sesijų valdymas:
    • Vartotojo sesija turi būti išsaugota arba tinkamai atstatyta be priverstinio atsijungimo:

Įrankiai ir technologijos:

  • Tinklo proxy: Charles Proxy, Fiddler. Leidžia simuliuoti delsą, paketų praradimą, užblokuoti užklausas:
  • Tinklo įrankiai: Naršyklės kūrimo įrankiai (webview), specializuoti mobiliųjų srauto valdymo įrankiai:
  • "Lėktuvo režimas": Paprastas būdas simuliuoti visišką ryšio praradimą:
  • Tinklo sąsajų išjungimas: Per įrenginio sistemos nustatymus:
  • Tinklo emuliatoriai: Įrankiai, leidžiantys simuliuoti įvairias tinklo sąlygas (greitį, delsą, paketų praradimą):
  • Automatizacija: Naudojant Appium, Espresso (Android), XCUITest (iOS) scenarijų automatizacijai, tinklo perjungimui ar sisteminių funkcijų (įjungti/išjungti lėktuvo režimą):
// Pavyzdys automatinio rekonekto testo naudojant Appium (Python)

from appium import webdriver
import time

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator', # arba tikras įrenginys
    'appPackage': 'com.yourapp.package',
    'appActivity': 'com.yourapp.MainActivity',
    'automationName': 'UiAutomator2'
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

try:
    // Veiksmai, reikalaujantys tinklo
    driver.find_element_by_accessibility_id("some_button").click()
    time.sleep(5) # laukti duomenų įkėlimo

    // Įjungti "Lėktuvo režimą"
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # uždaryti pranešimus
    print("Airplane mode ON")
    time.sleep(10) # laukti ryšio praradimo

    // Bandymas atlikti tinklo veiksmą
    driver.find_element_by_accessibility_id("another_button").click()
    // Patikrinti klaidos/ryšio nebuvimo indikatorius

    // Išjungti "Lėktuvo režimą"
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # uždaryti pranešimus
    print("Airplane mode OFF")
    time.sleep(10) # laukti ryšio atstatymo

    // Patikrinti funkcionalumo ir duomenų tikslumą
    // ... assert teiginiai ...

except Exception as e:
    print(f"Error: {e}")

finally:
    driver.quit()

Rekonnect testavimas yra labai svarbus siekiant užtikrinti mobiliosios programėlės stabilumą ir patikimumą nestabilios tinklo aplinkos sąlygomis.