Sobes.tech
Middle+

Разкажете за случаи на проверка на повторно свързване в мобилното приложение.

sobes.tech AI

Отговор от AI

Тестовете за повторно свързване проверяват как мобилното приложение се държи при загуба и възстановяване на връзката със сървъра или други мрежови ресурси.

Сценарии за тестове:

  • Превключване на мрежата:
    • Wi-Fi -> Мобилен интернет (LTE/5G).
    • Мобилен интернет (LTE/5G) -> Wi-Fi.
    • Wi-Fi (един точка) -> Wi-Fi (друга точка).
  • Загуба на сигнал:
    • Влизане в зона без покритие (асансьор, метро).
    • Включване/изключване на режим "Самолет".
    • Принудително изключване на мрежовите интерфейси (Wi-Fi, Мобилни данни) чрез настройките на устройството.
  • Проблеми със сървъра:
    • Временна недостъпност на API.
    • Рестартиране на сървъра.
    • Забавяния в мрежата (симулирани чрез прокси сървъри).

Какво проверяваме:

  • Поведение на UI/UX:
    • Показване на индикатори за зареждане или грешки.
    • Запазване на текущото състояние на потребителя (например, незавършен въвеждане, позиция в списъка).
    • Коректно показване на известия за загуба/възстановяване на връзката.
    • Без сривове или "зависвания" на приложението.
  • Цялостност на данните:
    • Данните, които са били в процес на изпращане/получаване по време на прекъсването, трябва да бъдат коректно обработени след възстановяване.
    • Локално запазените данни трябва да се синхронизират със сървъра.
  • Повторни опити (Retry Logic):
    • Приложението трябва да има логика за повторни опити за изпращане на заявки с експоненциално забавяне (backoff).
    • Лимити за броя на повторните опити и времето за изчакване.
  • Обработка на сесии:
    • Потребителската сесия трябва да се запазва или да се възстановява коректно без принудително излизане.

Инструменти и техники:

  • Мрежови прокси: Charles Proxy, Fiddler. Позволяват симулация на забавяния, загуба на пакети, блокиране на заявки.
  • Мрежови утилити: Инструменти за разработчици в браузъра (за уеб изглед), специализирани мобилни утилити за контрол на трафика.
  • Режим "Самолет": Прост начин за симулиране на пълна загуба на връзка.
  • Изключване на мрежовите интерфейси: Чрез системните настройки на устройството.
  • Емулятори на мрежа: Инструменти, които позволяват симулация на различни мрежови условия (скорост, забавяне, загуба на пакети).
  • Автоматизация: Използване на Appium, Espresso (Android), XCUITest (iOS) за автоматизация на сценарии с превключване на мрежи или извикване на системни функции (включване/изключване на "Самолет" режим).
// Пример за автоматизация на тест за повторно свързване с Appium (Python)

from appium import webdriver
import time

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Android Emulator', # Или реално устройство
    'appPackage': 'com.yourapp.package',
    'appActivity': 'com.yourapp.MainActivity',
    'automationName': 'UiAutomator2'
}

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

try:
    // Извършване на действия, изискващи мрежа
    driver.find_element_by_accessibility_id("some_button").click()
    time.sleep(5) # Изчакване за зареждане

    // Включване на режим "Самолет"
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Затваряне на известия
    print("Режим "Самолет" ВКЛЮЧЕН")
    time.sleep(10) # Изчакване за загуба на връзка

    // Опит за изпълнение на мрежова операция
    driver.find_element_by_accessibility_id("another_button").click()
    // Проверка за показване на индикатор за грешка/липса на мрежа

    // Изключване на режим "Самолет"
    driver.open_notifications()
    driver.find_element_by_accessibility_id("Airplane mode").click()
    driver.back() # Затваряне на известия
    print("Режим "Самолет" ИЗКЛЮЧЕН")
    time.sleep(10) # Изчакване за възстановяване на връзката

    // Проверка за възстановяване на функционалността и коректност на данните
    // ... assert изявления ...

except Exception as e:
    print(f"Грешка: {e}")

finally:
    driver.quit()

Тестването на повторното свързване е критично за осигуряване на стабилност и надеждност на мобилното приложение при нестабилна мрежова среда.