WEB測試和App測試從流程上來講,沒有區別。 都須要經歷測試計劃方案,用例設計,測試執行,缺陷管理,測試報告等相關活動。 從技術上來講,WEB測試和APP測試其測試類型也基本類似,都須要進行功能測試、性能測試、安全性測試、GUI測試等測試類型。html
他們的主要區別在於具體測試的細節和方法有區別,好比:性能測試,在WEB測試只須要測試響應時間這個要素,在App測試中還須要考慮流量測試和耗電量測試。java
兼容性測試:在WEB端是兼容瀏覽器,在App端兼容的是手機設備。並且相對應的兼容性測試工具也不相同,WEB由於是測試兼容瀏覽器,因此須要使用不一樣的瀏覽器進行兼容性測試(常見的是兼容IE6,IE8,chrome,firefox)若是是手機端,那麼就須要兼容不一樣品牌,不一樣分辨率,不一樣android版本甚至不一樣操做系統的兼容。(常見的兼容方式是兼容市場佔用率前N位的手機便可),有時候也可使用到兼容性測試工具,但WEB兼容性工具多用IETester等工具,而App兼容性測試會使用Testin這樣的商業工具也能夠作測試。android
安裝測試:WEB測試基本上沒有客戶端層面的安裝測試,可是App測試是存在客戶端層面的安裝測試,那麼就具有相關的測試點。ios
還有,App測試基於手機設備,還有一些手機設備的專項測試。如交叉事件測試,操做類型測試,網絡測試(弱網測試,網絡切換)web
交叉事件測試:就是在操做某個軟件的時候,來電話、來短信,電量不足提示等外部事件。面試
操做類型測試:如橫屏測試,手勢測試chrome
網絡測試:包含弱網和網絡切換測試。須要測試弱網所形成的用戶體驗,重點要考慮回退和刷新是否會形成二次提交。弱網絡的模擬,聽說能夠用360wifi實現設置。數據庫
從系統架構的層面,WEB測試只要更新了服務器端,客戶端就會同步會更新。並且客戶端是能夠保證每個用戶的客戶端徹底一致的。可是APP端是不可以保證徹底一致的,除非用戶更新客戶端。若是是APP下修改了服務器端,意味着客戶端用戶所使用的核心版本都須要進行迴歸測試一遍。編程
還有升級測試:升級測試的提醒機制,升級取消是否會影響原有功能的使用,升級後用戶數據是否被清除了。數組
原文地址:http://www.javashuo.com/article/p-cbfqoump-go.html
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等
原文連接:https://www.jianshu.com/p/91d7acfb036e
那麼致使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.其它線程終止或崩潰致使主線程一直等待。
原文:https://blog.csdn.net/jaychou_maple/article/details/78782822
爲何App會出現崩潰呢?百度了一下,查到和App崩潰相關的幾個因素:內存管理錯誤,程序邏輯錯誤,設備兼容,網絡因素等,以下: 1.內存管理錯誤:多是可用內存太低,app所需的內存超過設備的限制,app跑不起來致使App crash。 或是內存泄露,程序運行的時間越長,所佔用的內存越大,最終用盡所有內存,致使整個系統崩潰。 亦或非受權的內存位置的使用也可能會致使App crash。 2.程序邏輯錯誤:數組越界、堆棧溢出、併發操做、邏輯錯誤。 e.g. app新添加一個未經測試的新功能,調用了一個已釋放的指針,運行的時候就會crash。 3.設備兼容:因爲設備多樣性,app在不一樣的設備上可能會有不一樣的表現。 4.網絡因素:多是網速欠佳,沒法達到app所需的快速響應時間,致使app crash。或者是不一樣網絡的切換也可能會影響app的穩定性。
原文:https://blog.csdn.net/yangtuxiaojie/article/details/47123243
app偶然出現anr和crash是比較頭疼的問題,因爲偶然出現沒法復現步驟,這也是一個測試人員必備的技能,須要抓日誌。查看日誌主要有3個方法:
方法一:app開發保存錯誤日誌到本地 通常app開發在debug版本,出現anr和crash的時候會自動把日誌保存到本地實際的sd卡上,去對應的app目錄取出來就能夠了
方法二:實時抓取 當出現偶然的crash時候,這時候能夠把手機拉到大家app開發那,手機連上他的開發代碼的環境,有ddms會抓日誌,這時候出現crash就會記錄下來日誌。 儘可能重複操做讓bug復現就能夠了
也能夠本身開着logcat,保存日誌到電腦本地,參考這篇:http://www.javashuo.com/article/p-edcmpwpa-ey.html
adb logcat | find "com.sankuai.meituan" >d:\hello.txt
方法三:第三方sdk統計工具
通常接入了第三方統計sdk,好比友盟統計,在友盟的後臺會抓到報錯的日誌
app自己的日誌,能夠用logcat抓取,參考這篇:http://www.javashuo.com/article/p-edcmpwpa-ey.html
adb logcat | find "com.sankuai.meituan" >d:\hello.txt
也能夠用ddms抓取,手機連上電腦,打開ddms工具,或者在Android Studio開發工具中,打開DDMS
關於ddms更多的功能,參考這篇:http://www.javashuo.com/article/p-fijjybsy-ek.html
這個主要是面試官考察你會不會看日誌,是否是看得懂java裏面拋出的異常,Exception
通常面試中java Exception(runtimeException )是必會被問到的問題 app崩潰的常見緣由應該也是這些了。常見的異常列出四五種,是基本要求。
常見的幾種以下:
NullPointerException - 空指針引用異常 ClassCastException - 類型強制轉換異常。 IllegalArgumentException - 傳遞非法參數異常。 ArithmeticException - 算術運算異常 ArrayStoreException - 向數組中存放與聲明類型不兼容對象異常 IndexOutOfBoundsException - 下標越界異常 NegativeArraySizeException - 建立一個大小爲負數的數組錯誤異常 NumberFormatException - 數字格式異常 SecurityException - 安全異常 UnsupportedOperationException - 不支持的操做異常