一、appium實現原理
========================================
二、app測試中遇到的問題
(一)app出現ANR(無響應),是什麼原因導致的?
那麼導致ANR的根本原因是什麼呢?簡單的總結有以下兩點:
1.主執行緒執行了耗時操作,比如資料庫操作或網路程式設計
2.其他程序(就是其他程式)佔用CPU導致本程序得不到CPU時間,比如其他程序的頻繁讀寫操作可能會導致這個問題。
細分的話,導致ANR的原因有如下幾點:
a.耗時的網路訪問
b.大量的資料讀寫
c.資料庫操作頻繁
d.硬體操作(比如camera)
e.呼叫thread的join()方法、sleep()方法、wait()方法或者等待執行緒鎖的時候
f.service binder的數量達到上限
g.system server中發生WatchDog ANR
h.service忙導致超時無響應
i.其他執行緒持有鎖,導致主執行緒等待超時
j.其它執行緒終止或崩潰導致主執行緒一直等待。
(二)App出現crash(崩潰)原因有哪些?
為什麼App會出現崩潰呢?
App崩潰相關的幾個因素:記憶體管理錯誤,程式邏輯錯誤,裝置相容,網路因素等,
如下:
a.記憶體管理錯誤:可能是可用記憶體過低,app所需的記憶體超過裝置的限制,app跑不起來導致App crash。
或是記憶體洩露,程式執行的時間越長,所佔用的記憶體越大,最終用盡全部記憶體,導致整個系統崩潰。
亦或非授權的記憶體位置的使用也可能會導致App crash。
b.程式邏輯錯誤:陣列越界、堆疊溢位、併發操作、邏輯錯誤。
e.g. app新新增一個未經測試的新功能,呼叫了一個已釋放的指標,執行的時候就會crash。
c.裝置相容:由於裝置多樣性,app在不同的裝置上可能會有不同的表現。
e.網路因素:可能是網速欠佳,無法達到app所需的快速響應時間,導致app crash。或者是不同網路的切換也可能會影響app的穩定性。
(三)app測試中的資料庫資料和app上的不一致?(沒有同步)
原因:app上勳在快取和原有程序導致
在後臺資料據中,新增資料進行測試,開啟app端檢視對應的資料,不存在最新的資料,沒有更新;
解決方法:測試需要殺死程序、清理快取,在進行app啟動;
(四)錯誤現象:登入狀態下僅支援單點登入,會彈出提示:該賬號在B手機已登入,A手機強制退出登入;實際要實現:登陸時不受單點登陸的限制或者指定登入裝置次數3,5臺
原因:未按產品需求說明書中的功能實現,如按照產品需求說明書,白名單內的使用者進行登陸時不受單點登陸的限制,也就是說同一個賬號可以同時在A手機和B手機登入,但是開發實現錯誤,白名單內的使用者在A手機登入後,在B手機登入,然後點選A手機上APP的功能,會彈出提示:該賬號在B手機已登入,A手機強制退出登入。
解決:找開發,增加多點登入功能許可權,設定登入裝置臺數;
(五)、app閃退有哪些原因?
閃退的原因分為種:一、軟體本身有問題;二、系統出現問題。
1、軟體問題
(1)app 不相容系統當前系統版本
(2)app有了新版本,沒有更新(軟體對手機解析度有一定的要求)
(3)軟體有bug
(4)下載和更新不是官網下載的,是第三方軟體下載的
(5)網路差(軟體對網速的要求比較高,如果使用者使用 2 G/3 G 網路)
(6)解析度不相容(軟體對手機解析度有一定的要求)
(7)手機被植入病毒
2、系統出現問題
(1)手機記憶體不足,比如:開啟很多app,導致後臺反應出現問題
(2)軟體授權出現問題
(3)裝置已經越獄,導致系統不穩定,閃退成了常事)
(4)手機快取垃圾太多
(5)安裝路徑位置錯誤(比如:安裝外接儲存卡)
(6)手機配置問題 (比如手機配置低)
解決辦法:
1、解除安裝重新下載新版本,(安裝並設定手機儲存空間為安裝路徑即可)
2、及時更新新的版本
3、拒絕從第三方下載(解除安裝非官方下載的軟體)
4、重啟應用
5、檢查應用相容性
6、檢查應用許可權(授予必要的許可權即可。 )
7、解除安裝重灌應用
8、清理手機儲存空間
9、 恢復出廠設定
10、檢查網路(切換好的網路環境)
(六)app白屏現象有哪些原因引起?
1、手機使用過長
2、手機本身質量問題
3、手機執行記憶體小,或不足
4、軟體和裝置不相容
5、執行過多軟體
6、手機版本問題
========================================
三、熟悉adb命令
ADB常用的指令:
檢視當前連線裝置 : adb devices
進入到shell : adb shell
檢視日誌 : adb logcat
安裝apk檔案 : adb install xxx.apk
解除安裝APP : adb uninstall +包名
檢視包名 : appt d badging +包的路徑
往手機SDCard傳遞檔案:adb push 檔名 手機端SDCard路徑
從手機端下載檔案 : adb pull + 檔案
檢視手機端安裝的所有包名:adb shell pm list packages
啟動Activity : adb shell am start 包名/完整Activity路徑
螢幕截圖 : adb shell screencap
啟動adb server命令 :adb start-server
停止adb server命令 :adb kill-server
檢視adb版本 :adb version
========================================
四、常見app面試題:
1、app web端和app端的區別?
2、appium的原理?
3、app的搭建流程
4、常用的adb命令
5、app測試的關注點?(專項測試)
6、app自動化測試中你要到什麼問題,如何解決的?
7、app自動化測試流程 ?
8、app的日誌如何抓取?
9、測試過程中遇到app出現crash或者ANR,你會怎麼處理?
10、請說明Android手機和IOS手機,系統有什麼區別?