APP測試 - android os6,7 新增特性測試

YatHo發表於2016-11-28

背景

  android os6,7推出後,公司的APP在市場上面反映的一些問題。初始方案在7月份已經整了一份,但是郵件發出大部分同學都看不到,這裡在部落格裡面整理後再在部門內郵件發出來。

 

android os6

  對於6.0的幾個主要的變化,檢視檢視官網的這篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.htm 

  這裡主要說下跟測試相關的,執行時許可權處理方面的內容 

  推薦閱讀官網許可權相關文章:

執行時許可權的變化及特點

  6.0以下

    APP在安裝的時候,根據許可權宣告產生一個許可權列表,使用者只有在同意之後才能完成app的安裝,造成了我們想要使用某個app,就要默默忍受其一些不必要的許可權(比如是個app都要訪問通訊錄、簡訊等)。

  6.0以後

    我們可以直接安裝,當app需要我們授予不恰當的許可權的時候,我們可以予以拒絕。當然你也可以在設定介面對每個app的許可權進行檢視,以及對單個許可權進行授權或者解除授權。

    新的許可權機制更好的保護了使用者的隱私,Google將許可權分為兩類,一類是Normal Permissions,這類許可權一般不涉及使用者隱私,是不需要使用者進行授權的,比如手機震動、訪問網路等;另一類是Dangerous Permission,一般是涉及到使用者隱私的,需要使用者進行授權,比如讀取sdcard、訪問通訊錄等。

  

  android許可權可以自行通過adb shell pm list permissions -d -g進行檢視。

  • Normal Permissions

  以下是普通許可權,只需要在AndroidManifest.xml中申請即可。(這塊對測試不會有太大影響) 

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
  android.permission.ACCESS_NETWORK_STATE
  android.permission.ACCESS_NOTIFICATION_POLICY
  android.permission.ACCESS_WIFI_STATE
  android.permission.ACCESS_WIMAX_STATE
  android.permission.BLUETOOTH
  android.permission.BLUETOOTH_ADMIN
  android.permission.BROADCAST_STICKY
  android.permission.CHANGE_NETWORK_STATE
  android.permission.CHANGE_WIFI_MULTICAST_STATE
  android.permission.CHANGE_WIFI_STATE
  android.permission.CHANGE_WIMAX_STATE
  android.permission.DISABLE_KEYGUARD
  android.permission.EXPAND_STATUS_BAR
  android.permission.FLASHLIGHT
  android.permission.GET_ACCOUNTS
  android.permission.GET_PACKAGE_SIZE
  android.permission.INTERNET
  android.permission.KILL_BACKGROUND_PROCESSES
  android.permission.MODIFY_AUDIO_SETTINGS
  android.permission.NFC
  android.permission.READ_SYNC_SETTINGS
  android.permission.READ_SYNC_STATS
  android.permission.RECEIVE_BOOT_COMPLETED
  android.permission.REORDER_TASKS
  android.permission.REQUEST_INSTALL_PACKAGES
  android.permission.SET_TIME_ZONE
  android.permission.SET_WALLPAPER
  android.permission.SET_WALLPAPER_HINTS
  android.permission.SUBSCRIBED_FEEDS_READ
  android.permission.TRANSMIT_IR
  android.permission.USE_FINGERPRINT
  android.permission.VIBRATE
  android.permission.WAKE_LOCK
  android.permission.WRITE_SYNC_SETTINGS
  com.android.alarm.permission.SET_ALARM
  com.android.launcher.permission.INSTALL_SHORTCUT
  com.android.launcher.permission.UNINSTALL_SHORTCUT
  • Dangerous Permissions:

  以下是危險許可權,許可權的處理跟APP測試會相關,請注意!  

group:android.permission-group.CONTACTS
  permission:android.permission.WRITE_CONTACTS
  permission:android.permission.GET_ACCOUNTS
  permission:android.permission.READ_CONTACTS

group:android.permission-group.PHONE
  permission:android.permission.READ_CALL_LOG
  permission:android.permission.READ_PHONE_STATE
  permission:android.permission.CALL_PHONE
  permission:android.permission.WRITE_CALL_LOG
  permission:android.permission.USE_SIP
  permission:android.permission.PROCESS_OUTGOING_CALLS
  permission:com.android.voicemail.permission.ADD_VOICEMAIL

group:android.permission-group.CALENDAR
  permission:android.permission.READ_CALENDAR
  permission:android.permission.WRITE_CALENDAR

group:android.permission-group.CAMERA
  permission:android.permission.CAMERA

group:android.permission-group.SENSORS
  permission:android.permission.BODY_SENSORS

group:android.permission-group.LOCATION
  permission:android.permission.ACCESS_FINE_LOCATION
  permission:android.permission.ACCESS_COARSE_LOCATION

group:android.permission-group.STORAGE
  permission:android.permission.READ_EXTERNAL_STORAGE
  permission:android.permission.WRITE_EXTERNAL_STORAGE

group:android.permission-group.MICROPHONE
  permission:android.permission.RECORD_AUDIO

group:android.permission-group.SMS
  permission:android.permission.READ_SMS
  permission:android.permission.RECEIVE_WAP_PUSH
  permission:android.permission.RECEIVE_MMS
  permission:android.permission.RECEIVE_SMS
  permission:android.permission.SEND_SMS
  permission:android.permission.READ_CELL_BROADCASTS

  dangerous permissions都是一組一組的。對於授權機制是這樣的:如果你申請某個危險的許可權,假設你的app早已被使用者授權了同一組的某個危險許可權,那麼系統會立即授權,而不需要使用者去點選授權。

  比如你的app對READ_CONTACTS已經授權了,當你的app申請WRITE_CONTACTS時,系統會直接授權通過。此外,對於申請時彈出的dialog上面的文字說明也是對整個許可權組的說明,而不是單個許可權(ps:這個dialog是不能進行定製的)。

  android內部處理:

  • (1)checkSelfPermission:檢查是否擁有這個許可權
  • (2)requestPermissions:請求許可權,一般會彈出一個系統對話方塊,詢問使用者是否開啟這個許可權。
  • (3)shouldShowRequestPermissionRationale:Android原生系統中,如果第二次彈出許可權申請的對話方塊,會出現“以後不再彈出”的提示框,如果使用者勾選了,你再申請許可權,則shouldShowRequestPermissionRationale返回true,意思是說要給使用者一個 解釋,告訴使用者為什麼要這個許可權。然而,在實際開發中,需要注意的是,很多手機對原生系統做了修改,比如小米,小米4的6.0的shouldShowRequestPermissionRationale 就一直返回false,而且在申請許可權時,如果使用者選擇了拒絕,則不會再彈出對話方塊了。。。。 所以說這個地方有坑,可行的解決方法有,在回撥裡面處理,如果使用者拒絕了這個許可權,則開啟本應用資訊介面,由使用者自己手動開啟這個許可權。
  • (4)每個應用都有自己的許可權管理介面,裡面有本應用申請的許可權以及各種狀態,即使使用者已經同意了你申請的許可權,他也隨時可以關閉

  重點:

  為什麼android的dangerous permissions處理會跟APP測試相關呢?

  1.許可權false完全沒做處理,使用者拒絕後應用直接崩潰!

  2.許可權禁用後無對應提示,一些核心功能無法正常使用!

 

android os7

  針對android os7 目前整理了兩套選擇方案

  1.使用android 模擬器測試,android avd已支援建立 android N模擬器

                        android SDK獲取,環境配置及AVD建立,可聯絡@偉林
                        (模擬器測試可判斷系統與APP的相容性問題,但不能代表最終真實環境產出結果,)
    2.使用谷歌親兒子(Nexus6 | Nexus 5X | Nexus 6P | Nexus 9(LTE) | Nexus Player |Pixel C |一加3)刷機測試。
 
  安卓7.0已知新特性及測試關注點彙總:
  • 分屏多工
    進入後臺多工管理頁面,然後按住其中一個卡片,然後向上拖動至頂部即可開啟分屏多工,支援上下分欄和左右分欄,允許拖動中間的分割線調整兩個APP所佔的比例。從目前的情況來看,部分應用在分屏時會自動更改本身的佈局,但也只能做到最簡單的分屏。據開發人員所說,要想更好的支援分屏的相關功能,還是需要將SDK升到24。屆時將可以支援畫中畫以及跨應用拖拽等新功能。
  
從使用者的角度而言,使用該模式的場景非常多。比如一邊開啟瀏覽器,一邊播放視訊;一邊開啟瀏覽器,一邊開啟郵件類app;一邊開啟瀏覽器,一邊使用社交類app。

那麼作為測試,主要關注的是:
1)我們的產品分屏時是否能正常顯示?
2)頁面縮放、無圖模式等功能能否正常使用?
3)分屏時,和其他產品互動(drag & drop)時是否會出錯?

  • 全新下拉快捷開關頁

    在安卓7.0中,下拉開啟通知欄頂部即可顯示5個使用者常用的快捷開關,支援單擊開關以及長按進入對應設定。

該特性對APP測試無影響

  • 主屏擁有兩種設計風格可選:經典及摩登

    經典風格並沒有變化;摩登風格則類似iOS。其實這個摩登風格,就是當時號稱”要去掉應用抽屜”的風格。

  

目前,部分app會在應用抽屜和桌面上同時生成兩個圖示,圖示的名字還有可能不一致。
1)那麼7.0是兩套桌面分開管理從而切換,還是通過調整UI進行切換? 2)如果使用者裝了這樣的應用,從經典模式切換為摩登模式的時候,圖示會不會出現重複? 3)切換時能否存在後臺app? 4)如果能,是否會導致後臺執行的app出錯? 這些都是可能出現錯誤的場景。

  • 通知訊息快捷回覆和歸攏

  7.0加入了全新的API,支援第三方應用通知的快捷操作和回覆。來電會以橫幅方式在螢幕頂部出現接通或結束通話;資訊/社交類應用通知可以開啟鍵盤,在輸入欄裡進行快捷回覆。同一應用的多條通知和提示訊息將歸攏為一項,點選該項可展開此前的全部通知,允許使用者對每個通知執行單獨操作。

比如在瀏覽器裡,回覆/評論某個新聞,別人給你點贊或者回復時,你會收到通知訊息。
1)那麼這個通知能否正確的歸攏和單獨操作? 2)歸攏是否有上限? 3)歸攏太多時會不會造成響應緩慢或app的崩潰? 這些使用者場景的模擬,也是測試需要關注的。

  • DataSaver

  該功能可以限制App的後臺流量偷跑。使用者通過設定名單,當Data Saver開啟後,名單中的App將會受到流量限制措施。同時谷歌也減少了一些影象傳輸的解析度,限制移動流媒體服務的位元速率,限制一些軟體的預快取功能(自動讀取使用者並未請求的資料)。

  

這個功能的出發點挺不錯,但是可以想象的到,將會帶來一系列的問題:

1)比如使用者後臺下載,流量被限制了,可能過了幾個小時還沒下載好。
2)比如app需要在後臺接收資料、推送通知,被限制後無法正常推送。
3)比如遊戲掛在後臺時掉線。
那麼產品是否應該彈出視窗或進行推送,請使用者不要對其進行限制呢?
從彈出視窗到推送,再至不限制之後能否在後臺正常執行,這都將會增加一系列的測試點。

  • 夜間模式

  該功能依然需要在系統調諧器中開啟,從頂部下劃開啟快捷設定頁,然後長按其中的設定圖示,齒輪旋轉10秒鐘左右即可提示已開啟系統調諧器,之後使用者在設定中即可找到“系統調諧器”設定項。點開其中的“色彩和外觀”,即可找到夜間模式,開啟後即可使用全域性的深色主題模式,同時亮度和色彩也會進行一定的調整,該功能可以基於時間或地理位置自動開啟。另外,系統調諧器中也提供了RGB紅綠藍三色調節滑動條,允許使用者手動精細調節,例如減少藍色或增加紅色以提供類似護眼模式的效果。

這個功能的出發點挺不錯,但是可以想象的到,將會帶來一系列的問題:

1)比如夜晚開啟APP,APP未做暗色調處理,看不清。

實際系統可能會自行處理,但測試的時候還是需要關注。

  • 全新設定樣式

  安卓7.0啟用了全新的設定樣式,首先每個分類下各個子項之間的分割線消失了,只保留分類之間的分割線。另外,你還可以看到,全新的設定選單還提供了一個綠色的頂欄,允許使用者通過後方的下拉箭頭,快速設定勿擾模式等。除了勿擾模式外,頂欄選單還可以顯示諸多其他的設定狀態,例如資料流量的使用情況,自動亮度是否開啟等。

該特性對APP測試無影響

  • 改進的Doze休眠機制

  只要手動在後臺刪掉應用卡片,關屏後該應用就會被很快深度休眠。目前谷歌尚未透露Doze的更多細節,該特性可能會閹割

未確定特性

  • 系統級電話黑名單功能

  在安卓7.0中,谷歌將電話攔截功能變成了一個系統級功能。其它應用可以呼叫這個攔截名單,但只有個別應用可以寫入,包括撥號應用、預設的簡訊應用等。

該特性對APP測試無影響

  • 選單鍵快速應用切換

  雙擊選單鍵,就能自動切換到上一個應用。如果你不停地點選選單鍵的話,就會在所有應用中不間斷地輪換,應用視窗會自動放大,頂部還會出現倒數計時條,停止點選且倒數計時結束後,當前應用會自動放大並返回到前臺。

該特性對APP測試無影響

  • 超快應用安裝速度

  在安卓6.0中需要幾分鐘時間才能安裝和優化完成的,在安卓7.0中僅僅需要幾秒鐘就可以搞定

該特性對APP測試無影響

  • 緊急個人救護資訊功能

   項功能可以在Android 7.0的“設定”——“使用者”下面找到,當點選之後,系統就會要求你填寫一些個人緊急救護資訊,比如你的姓名、家庭住址、血型、藥物過敏史、正在服用的藥物、以及過往疾病史等資訊,還可以填寫數個緊急聯絡人資訊。

   緊急資訊視窗僅在當你設定了安全鎖屏且在緊急撥號皮膚下才會顯示出來,畢竟當遇到突發急症等險境時,如果在手機上設定了鎖屏,別人就無法主動通過手機聯絡家人或朋友。如果你設定了個人緊急資訊,在鎖屏下進入緊急撥號皮膚時,你就會看到上方會有紅色的緊急資訊提示框,連續點選兩次便可看到此前輸入的個人資訊和緊急聯絡人,點選可以直接進行撥叫。

好東西,但該特性對APP測試無影響

  

  android N或者叫Android 7.0 ,從今年7月已有專案披露BUG並直接通知公司進行修復,相應的相容測試需要引起注意!

  專案問題詳情可瞭解:國元理財OTC【華為 Android N版本三方應用相容性問題反饋

相關文章