APP測試面試題中部分

4.app 測試和 web 測試有什麼區別?android

WEB 測試和 App 測試從流程上來講,沒有區別。ios

都須要經歷測試計劃方案,用例設計,測試執行,缺陷管理,測試報告等相關活動。從技術上來講,WEB 測試和 APP 測試其測試類型也基本類似,都須要進行功能測試、性能測試、安全性測試、GUI 測試等測試類型。web

他們的主要區別在於具體測試的細節和方法有區別,好比:性能測試,在 WEB測試只須要測試響應時間這個要素,在 App 測試中還須要考慮流量測試和耗電量測試。chrome

兼容性測試:在 WEB 端是兼容瀏覽器,在 App 端兼容的是手機設備。並且相對應的兼容性測試工具也不相 同,WEB 由於是測試兼容瀏覽器,因此須要使用不一樣的瀏覽器進行兼容性測試(常見的是兼容 IE6,IE8,chrome,firefox)若是是手機端, 那麼就須要兼容不一樣品牌,不一樣分辨率,不一樣 android 版本甚至不一樣操做系統的兼容。(常見的兼容方式是兼容市場佔用率前 N 位的手機便可),有時候也可 以使用到兼容性測試工具,但 WEB 兼容性工具多用 IETester 等工具,而 App 兼容性測試會使用 Testin 這樣的商業工具也能夠作測試。數據庫

安裝測試:WEB 測試基本上沒有客戶端層面的安裝測試,可是 App 測試是存在客戶端層面的安裝測試,那麼就具有相關的測試點。編程

還有,App 測試基於手機設備,還有一些手機設備的專項測試。如交叉事件測試,數組

操做類型測試,網絡測試(弱網測試,網絡切換)瀏覽器

交叉事件測試:就是在操做某個軟件的時候,來電話、來短信,電量不足提示等外部事件。安全

操做類型測試:如橫屏測試,手勢測試服務器

網絡測試:包含弱網和網絡切換測試。須要測試弱網所形成的用戶體驗,重點要考慮回退和刷新是否會形成二次提交。弱網絡的模擬,聽說能夠用 360wifi 實現設置。

從系統架構的層面,WEB 測試只要更新了服務器端,客戶端就會同步會更新。並且客戶端是能夠保證每個用戶的客戶端徹底一致的。可是 APP 端是不能 夠保證徹底一致的,除非用戶更新客戶端。若是是 APP 下修改了服務器端,意味着客戶端用戶所使用的核心版本都須要進行迴歸測試一遍

還有升級測試:升級測試的提醒機制,升級取消是否會影響原有功能的使用,升級後用戶數據是否被清除了。


5.android 和 ios 測試區別?

App 測試中 ios 和 Android 有哪些區別呢?

1.Android 長按 home 鍵呼出應用列表和切換應用,而後右滑則終止應用;

2.多分辨率測試,Android 端 20 多種,ios 較少;

3.手機操做系統,Android 較多,ios 較少且不能降級,只能單向升級;新的 ios

系統中的資源庫不能徹底兼容低版本中的 ios 系統中的應用,低版本 ios 系統中的應用調用了新的資源庫,會直接致使閃退(Crash);

4.操做習慣:Android,Back 鍵是否被重寫,測試點擊 Back 鍵後的反饋是否正確;應用數據從內存移動到 SD 卡後可否正常運行等;

5.push 測試:Android:點擊 home 鍵,程序後臺運行時,此時接收到 push,點擊後喚醒應用,此時是否能夠正確跳轉;ios,點擊 home 鍵關閉程序和屏幕鎖屏的狀況(紅點的顯示);

6.安裝卸載測試:Android 的下載和安裝的平臺和工具和渠道比較多,ios 主要有 app store,iTunes 和 testflight 下載;

7.升級測試:能夠被升級的必要條件:新舊版本具備相同的簽名;新舊版本具備相同的包名;有一個標示符區分新舊版本(如版本號),

對於 Android 如有內置的應用需檢查升級以後內置文件是否匹配(如內置的輸入法)

另外:對於測試還須要注意一下幾點:

1.併發(中斷)測試:鬧鈴彈出框提示,另外一個應用的啓動、視頻音頻的播放,來電、用戶正在輸入等,語音、錄音等的播放時強制其餘正在播放的要暫停;

2.數據來源的測試:輸入,選擇、複製、語音輸入,安裝不一樣輸入法輸入等;

3.push(推送)測試:在開關機、待機狀態下執行推送,消息先死及其推送跳轉的正確性;應用在開發、未打開狀態、應用啓動且在後臺運行的狀況下是 push 顯示和跳轉是否正確;

推送消息閱讀先後數字的變化是否正確;

多條推送的合集的顯示和跳轉是否正確;

4.分享跳轉:分享後的文案是否正確;分享後跳轉是否正確,顯示的消息來源是否正確;

5.觸屏測試:同時觸摸不一樣的位置或者同時進行不一樣操做,查看客戶端的處理狀況,是否會 crash 等


6.app 出現 ANR,是什麼緣由致使的?

1.主線程執行了耗時操做,好比數據庫操做或網絡編程

2.其餘進程(就是其餘程序)佔用 CPU 致使本進程得不到 CPU 時間片,好比其餘進程的頻繁讀寫操做可能會致使這個問題。

細分的話,致使 ANR 的緣由有以下幾點:

1.耗時的網絡訪問

2.大量的數據讀寫

3.數據庫操做

4.硬件操做(好比 camera)

5.調用 thread 的 join()方法、sleep()方法、wait()方法或者等待線程鎖的時

6.service binder 的數量達到上限

7.system server 中發生 WatchDog ANR

8.service 忙致使超時無響應

9.其餘線程持有鎖,致使主線程等待超時

10.其它線程終止或崩潰致使主線程一直等待。


7.App 出現 crash 緣由有哪些

爲何 App 會出現崩潰呢?百度了一下,查到和 App 崩潰相關的幾個因素:內存管理錯誤,程序邏輯錯誤,設備兼容,網絡因素等,以下:

1.內存管理錯誤:多是可用內存太低,app 所需的內存超過設備的限制,app跑不起來致使 App crash。或是內存泄漏,程序運行的時間越長,所佔用的內存越大,最終用盡所有內存,致使整個系統崩潰。亦或非受權的內存位置的使用也可能會致使 App crash。

2.程序邏輯錯誤:數組越界、堆棧溢出、併發操做、邏輯錯誤。e.g. app 新添加一個未經測試的新功能,調用了一個已釋放的指針,運行的時候就會 crash。

3.設備兼容:因爲設備多樣性,app 在不一樣的設備上可能會有不一樣的表現。

4.網絡因素:多是網速欠佳,沒法達到 app 所需的快速響應時間,致使 app crash。或者是不一樣網絡的切換也可能會影響 app 的穩定性。