Thử nghiệm 5G

Đối với các thiết bị chạy Android 11 trở lên, Bộ kiểm thử giao tiếp Android (ACTS) hỗ trợ các trường hợp sử dụng chính của 5G NSA cho môi trường một và nhiều thiết bị. Trang này trình bày cách ACTS phát hiện và đảm bảo một thiết bị kết nối với mạng 5G NSA, đồng thời cung cấp cho bạn thông tin tổng quan về cấu trúc đường dẫn kiểm thử

Phát hiện

Từ Android 11 trở đi, khung Android có các API để phát hiện mạng 5G. Để biết thêm thông tin chi tiết, hãy xem phần Phát hiện mạng 5G.

Lớp tập lệnh dành cho Android (SL4A) hỗ trợ phát hiện 5G bằng cách theo dõi các sự kiện LISTEN_DISPLAY_INFO_CHANGED từ PhoneStateListener và ghi đè phương thức onDisplayInfoChanged(). SL4A sử dụng các giá trị sau để phân biệt giữa các loại kết nối NSA (không độc lập), mmWave (sóng milimet) và SA (độc lập) cho 5G:

Loại kết nối Giá trị
NSA 5G TelephonyManager.getDataNetworkType() = LTE

TelephonyDisplayInfo.getNetworkType() = LTE

TelephonyDisplayInfo.getOverrideNetworkType() = NR_NSA

5G mmWave TelephonyDisplayInfo.getOverrideNetworkType() = NR_MMWAVE
5G SA TelephonyManager.getDataNetworkType() = NR

TelephonyDisplayInfo.getNetworkType() = NR

Hoạt động kiểm thử ACTS sử dụng phương thức is_current_network_5g_nsa() để đảm bảo thiết bị kết nối với mạng NSA 5G

Lộ trình thử nghiệm và cấu trúc thử nghiệm

Tất cả hoạt động kiểm thử điện thoại (1400 trở lên) trong ACTS đều thuộc thư mục tel. Các bài kiểm thử 5G nằm trong thư mục tools/test/connectivity/acts\_tests/tests/google/nr/ (nr là viết tắt của new radio). Nhờ sự ra mắt của công nghệ truy cập vô tuyến 5G (RAT), các thử nghiệm 5G sẽ tách biệt với 4G, 3G, 2G và 1 lần đối với các môi trường mạng trực tiếp để cho phép thử nghiệm ACTS có thể mở rộng và độc lập.

Nội dung sau đây mô tả các lớp kiểm thử cho thử nghiệm 5G.

  • Nsa5gActivationTest: Xác minh xem một thiết bị có kết nối đúng cách với NSA 5G ở nhiều trạng thái hay không.

    test_5g_nsa_activation_from_apm test_5g_nsa_activation_from_reboot
    test_5g_nsa_activation_from_3g
    
  • Nsa5gVoiceTest: Xác minh chức năng gọi thoại giữa nhiều thiết bị.

    test_5g_nsa_call_volte_to_volte test_5g_nsa_call_volte_to_3g
    test_5g_nsa_call_volte_mo_hold_unhold
    test_5g_nsa_call_mo_volte_in_active_data_transfer
    test_5g_nsa_volte_in_call_wifi_toggling
    
  • Nsa5gDataTest: Xác minh chức năng của dữ liệu, chẳng hạn như duyệt xem, lưu trữ dữ liệu và đo lượng dữ liệu.

    test_5g_nsa_data_browsing test_5g_nsa_data_stall_recovery
    test_5g_nsa_metered_cellular test_5g_nsa_metered_airplane
    test_5g_nsa_metered_wifi
    
  • Nsa5gSmsTest: Xác minh tính năng gửi và nhận tin nhắn SMS giữa nhiều thiết bị.

    test_5g_nsa_sms_mo_mt test_5g_nsa_sms_mo_mt_volte
    test_5g_nsa_sms_mo_mt_in_call_volte test_5g_nsa_sms_mo_mt_iwlan
    test_5g_nsa_sms_mo_mt_in_call_iwlan
    
  • Nsa5gMmsTest: Xác minh việc gửi và nhận tin nhắn MMS giữa nhiều thiết bị.

    test_5g_nsa_mms_mo_mt test_5g_nsa_mms_mo_mt_in_call_volte
    test_5g_nsa_mms_mo_mt_iwlan_apm_off test_5g_nsa_mms_mo_mt_in_call_iwlan
    test_5g_nsa_mms_mo_mt_in_call_volte_wifi
    
  • Nsa5gTetheringTest: Xác minh hoạt động chia sẻ Internet qua Wi-Fi qua một thiết bị kết nối với mạng 5G NSA.

    test_5g_nsa_tethering_to_5gwifi test_5g_nsa_tethering_to_2gwifi
    

Kết quả kiểm thử mẫu

Để xác nhận một thiết bị đang dùng mạng 5G NSA, hãy kiểm tra các thông điệp nhật ký sau đây trong test_run_info.txt.

INFO [AndroidDevice|<SERIAL_ID>] Current ModePref for Sub 2 is in
NETWORK_MODE_NR_LTE_GSM_WCDMA [tel_test_utils.py:set_preferred_network_mode_pref:7634]
INFO [AndroidDevice|<SERIAL_ID>] Got expected event {'name': 'DisplayInfoChanged',
'data': {'override': 'NR_NSA', 'network': 'LTE', 'subscriptionId': 2147483647},
'time': 1611094526689} [tel_5g_utils.py:is_current_network_5g_nsa:58]

Khắc phục sự cố

Để phân loại phản hồi của API mà không cần chạy kiểm thử ACTS trong trường hợp không thành công, hãy sử dụng các lệnh sau:

>> python3
>> from acts.controllers.android_device import AndroidDevice; ad = AndroidDevice('<SERIAL_ID>'); a, b = ad.get_droid()
>> a.telephonyStartTrackingDisplayInfoChange()
>> b.start()
>> b.wait_for_event("DisplayInfoChanged", lambda _: True, timeout=30)

{'name': 'DisplayInfoChanged', 'data': 'TelephonyDisplayInfo {network=LTE, override=LTE_CA, 'time': 1586483596907}