Android 6.0 測試指南

Android 6.0 可讓您確保應用程式可搭配下一個平台版本運作。這個版本包含幾個對應用程式造成影響的 API 和行為變更,請參閱「API 總覽」和「行為變更」一文。利用這個版本測試應用程式時,請著重於某些系統變更,確保使用者享有良好體驗。

本指南將說明應用程式測試 Android 6.0 功能的相關事項和方法。建議您優先測試這些特定功能,因為這些功能可能對應用程式行為有極大影響:

測試權限

新的權限模型會變更使用者分配應用程式權限的方式。應用程式不應在安裝程序期間授予所有權限,而是在執行階段要求使用者授予個別權限。如此一來,使用者就能更精細地控管各個應用程式的活動,也能進一步瞭解應用程式要求特定權限的原因。使用者隨時可以個別授予或撤銷授予應用程式的權限。這個版本極有可能對應用程式的行為造成影響,也可能使部分應用程式功能無法正常運作,或是可能處於降級狀態。

這項變更會影響在新平台上執行的所有應用程式,即使未指定新平台版本的應用程式也不例外。這個平台對舊版應用程式而言,相容性有限,但您應該立即開始規劃應用程式要遷移至新的權限模式,而且的目標是在官方平台推出時發布新版應用程式。

測試訣竅

您可以運用下列測試提示,使用新的權限行為規劃及執行應用程式測試。

  • 找出應用程式目前的權限和相關程式碼路徑。
  • 針對受權限保護的服務和資料測試使用者流程。
  • 使用授予/撤銷權限的各種組合進行測試。
  • 使用 adb 工具,透過指令列管理權限:
    • 依群組列出權限和狀態:
      adb shell pm list permissions -d -g
    • 使用以下語法授予或撤銷一或多個權限:
      adb shell pm [grant|revoke] <permission.name> ...
  • 針對會使用權限的服務進行應用程式分析。

測試策略

權限變更會影響應用程式的結構和設計,以及為使用者提供的使用者體驗和流程。您應評估應用程式目前的權限使用情況,並開始規劃新流程。平台的官方版本提供相容性行為,但您應規劃更新應用程式,不要仰賴這些行為。

找出應用程式實際需要及使用的權限,然後找出使用受權限保護服務的各種程式碼路徑。方法是結合使用新平台和程式碼分析功能的測試。在測試中,您應著重將應用程式的 targetSdkVersion 變更為 API 級別 23,以便選擇加入執行階段權限。

使用撤銷及新增各種權限組合進行測試,突顯需要權限的使用者流程。如果依附元件不明顯或不符合邏輯,則應考慮重構或分離該流程,藉此消除依附元件,或清楚說明需要該權限的原因。

如要進一步瞭解執行階段權限、測試和最佳做法的行為,請參閱「使用系統權限」開發人員。

測試打盹和應用程式待命功能

打盹和應用程式待命的省電功能會限制應用程式在裝置處於閒置狀態或非處於焦點狀態時,能夠執行的背景處理作業量。系統對應用程式可能會設下的限制包括有限或完全沒有網路存取權、暫停背景工作、已暫停通知、忽略的喚醒要求,以及鬧鐘。為確保應用程式在這些省電效能最佳化的情況下正常運作,您應模擬這些低耗電狀態來測試應用程式。

使用打盹功能測試應用程式

如何使用應用程式測試打盹功能:

  1. 使用 Android 7.0 (API 級別 24) 系統映像檔設定硬體裝置或虛擬裝置。
  2. 將裝置連結至開發機器,並安裝應用程式。
  3. 執行應用程式,並讓應用程式保持啟用狀態。
  4. 執行下列指令,模擬裝置進入打盹模式:
    $ adb shell dumpsys battery unplug
    $ adb shell dumpsys deviceidle step
    $ adb shell dumpsys deviceidle -h
    
  5. 在裝置重新啟動時觀察應用程式的行為。確保裝置在離開「打盹」時可正常復原。

使用「應用程式待命」功能測試應用程式

如何使用應用程式測試應用程式待命模式:

  1. 使用 Android 7.0 (API 級別 24) 系統映像檔設定硬體裝置或虛擬裝置。
  2. 將裝置連結至開發機器,並安裝應用程式。
  3. 執行應用程式,並讓應用程式保持啟用狀態。
  4. 執行下列指令,模擬應用程式進入待機模式:
    $ adb shell am broadcast -a android.os.action.DISCHARGING
    $ adb shell am set-idle <packageName> true
    
  5. 使用下列指令模擬喚醒應用程式:
    $ adb shell am set-idle <packageName> false
  6. 觀察應用程式喚醒時的行為。請務必將其從待機模式正常復原。請特別注意,應用程式的通知和背景工作是否仍能正常運作。

自動備份應用程式和裝置專屬 ID

如果應用程式會將任何裝置專屬 ID (例如 Google Cloud Messaging 註冊 ID) 保留在內部儲存空間,請務必按照最佳做法從自動備份中排除儲存位置,如使用自動備份功能備份使用者資料所述。