1. 程式人生 > >關於面試總結-app測試面試題

關於面試總結-app測試面試題

前言

現在面試個測試崗位,都是要求全能的,web、介面、app啥都要會測,那麼APP測試一般需要哪些技能呢?
面試app測試崗位會被問到哪些問題,怎樣讓面試管覺得你對APP測試很精通的樣子?
本篇總結了app測試面試時候經常被問的10個相關問題
1.什麼是activity?
2.Activity生命週期?
3.Android四大元件?
4.app測試和web測試有什麼區別?
5.android和ios測試區別?
6.app出現ANR,是什麼原因導致的?
7.App出現crash原因有哪些?
8.app對於不穩定偶然出現anr和crash時候你是怎麼處理的?
9.app的日誌如何抓取?
10.你平常會看日誌嗎, 一般會出現哪些異常(Exception)?

1.什麼是activity

什麼是activity,這個前兩年出去面試APP測試崗位,估計問的最多了,特別是一些大廠,先問你是不是做過APP測試,那好,你說說什麼是activity?
如果沒看過android的開發原理,估計這個很難回答,要是第一個問題就被難住了,面試的信心也會失去一半了,士氣大減。

Activity是Android的四大元件之一,也是平時我們用到最多的一個元件,可以用來顯示View。
官方的說法是Activity一個應用程式的元件,它提供一個螢幕來與使用者互動,以便做一些諸如打電話、發郵件和看地圖之類的事情,原話如下:
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map.

Activity是一個Android的應用元件,它提供螢幕進行互動。每個Activity都會獲得一個用於繪製其使用者介面的視窗,視窗可以充滿哦螢幕也可以小於螢幕並浮動在其他視窗之上。
一個應用通常是由多個彼此鬆散聯絡的Activity組成,一般會指定應用中的某個Activity為主活動,也就是說首次啟動應用時給使用者呈現的Activity。將Activity設為主活動的方法
當然Activity之間可以進行互相跳轉,以便執行不同的操作。每當新Activity啟動時,舊的Activity便會停止,但是系統會在堆疊也就是返回棧中保留該Activity。
當新Activity啟動時,系統也會將其推送到返回棧上,並取得使用者的操作焦點。當用戶完成當前Activity並按返回按鈕是,系統就會從堆疊將其彈出銷燬,然後回覆前一Activity
當一個Activity因某個新Activity啟動而停止時,系統會通過該Activity的生命週期回撥方法通知其這一狀態的變化。
Activity因狀態變化每個變化可能有若干種,每一種回撥都會提供執行與該狀態相應的特定操作的機會

2.Activity生命週期?

週期即活動從開始到結束所經歷的各種狀態。生命週期即活動從開始到結束所經歷的各個狀態。從一個狀態到另一個狀態的轉變,從無到有再到無,這樣一個過程中所經歷的狀態就叫做生命週期。

Activity本質上有四種狀態:

1.執行(Active/Running):Activity處於活動狀態,此時Activity處於棧頂,是可見狀態,可以與使用者進行互動

2.暫停(Paused):當Activity失去焦點時,或被一個新的非全面屏的Activity,或被一個透明的Activity放置在棧頂時,Activity就轉化為Paused狀態。此刻並不會被銷燬,只是失去了與使用者互動的能力,其所有的狀態資訊及其成員變數都還在,只有在系統記憶體緊張的情況下,才有可能被系統回收掉

3.停止(Stopped):當Activity被系統完全覆蓋時,被覆蓋的Activity就會進入Stopped狀態,此時已不在可見,但是資源還是沒有被收回

4.系統回收(Killed):當Activity被系統回收掉,Activity就處於Killed狀態

如果一個活動在處於停止或者暫停的狀態下,系統記憶體缺乏時會將其結束(finish)或者殺死(kill)。這種非正常情況下,系統在殺死或者結束之前會呼叫onSaveInstance()方法來儲存資訊,同時,當Activity被移動到前臺時,重新啟動該Activity並呼叫onRestoreInstance()方法載入保留的資訊,以保持原有的狀態。

在上面的四中常有的狀態之間,還有著其他的生命週期來作為不同狀態之間的過度,用於在不同的狀態之間進行轉換,生命週期的具體說明見下。

原文:https://blog.csdn.net/fjnu_se/article/details/80703815

3.Android四大元件

Android四大基本元件:Activity、BroadcastReceiver廣播接收器、ContentProvider內容提供者、Service服務。

Activity:

應用程式中,一個Activity就相當於手機螢幕,它是一種可以包含使用者介面的元件,主要用於和使用者進行互動。一個應用程式可以包含許多活動,比如事件的點選,一般都會觸發一個新的Activity。

BroadcastReceiver廣播接收器

應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者資料網路可用時)進行接收並做出響應。廣播接收器沒有使用者介面。然而,它們可以啟動一個activity或serice 來響應它們收到的資訊,或者用NotificationManager來通知使用者。通知可以用很多種方式來吸引使用者的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態列上放一個持久的圖示,使用者可以開啟它並獲取訊息。

ContentProvider內容提供者:

內容提供者主要用於在不同應用程式之間實現資料共享的功能,它提供了一套完整的機制,允許一個程式訪問另一個程式中的資料,同時還能保證被訪問資料的安全性。只有需要在多個應用程式間共享資料時才需要內容提供者。例如:通訊錄資料被多個應用程式使用,且必須儲存在一個內容提供者中。它的好處:統一資料訪問方式。

Service服務

是Android中實現程式後臺執行的解決方案,它非常適合去執行那些不需要和使用者互動而且還要長期執行的任務(一邊打電話,後臺掛著QQ)。服務的執行不依賴於任何使用者介面,即使程式被切換到後臺,或者使用者打開了另一個應用程式,服務扔然能夠保持正常執行,不過服務並不是執行在一個獨立的程序當中,而是依賴於建立服務時所在的應用程式程序。當某個應用程式程序被殺掉後,所有依賴於該程序的服務也會停止執行(正在聽音樂,然後把音樂程式退出)。

原文:https://blog.csdn.net/m0_37989980/article/details/78681367

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

WEB測試和App測試從流程上來說,沒有區別。
都需要經歷測試計劃方案,用例設計,測試執行,缺陷管理,測試報告等相關活動。
從技術上來說,WEB測試和APP測試其測試型別也基本相似,都需要進行功能測試、效能測試、安全性測試、GUI測試等測試型別。

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

相容性測試:在WEB端是相容瀏覽器,在App端相容的是手機裝置。而且相對應的相容性測試工具也不相同,WEB因為是測試相容瀏覽器,所以需要使用不同的瀏覽器進行相容性測試(常見的是相容IE6,IE8,chrome,firefox)如果是手機端,那麼就需要相容不同品牌,不同解析度,不同android版本甚至不同作業系統的相容。(常見的相容方式是相容市場佔用率前N位的手機即可),有時候也可以使用到相容性測試工具,但WEB相容性工具多用IETester等工具,而App相容性測試會使用Testin這樣的商業工具也可以做測試。

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

還有,App測試基於手機裝置,還有一些手機裝置的專項測試。如交叉事件測試,操作型別測試,網路測試(弱網測試,網路切換)

交叉事件測試:就是在操作某個軟體的時候,來電話、來簡訊,電量不足提示等外部事件。

操作型別測試:如橫屏測試,手勢測試

網路測試:包含弱網和網路切換測試。需要測試弱網所造成的使用者體驗,重點要考慮回退和重新整理是否會造成二次提交。弱網路的模擬,據說可以用360wifi實現設定。

從系統架構的層面,WEB測試只要更新了伺服器端,客戶端就會同步會更新。而且客戶端是可以保證每一個使用者的客戶端完全一致的。但是APP端是不能夠保證完全一致的,除非使用者更新客戶端。如果是APP下修改了伺服器端,意味著客戶端使用者所使用的核心版本都需要進行迴歸測試一遍。

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

原文地址:https://www.cnblogs.com/laoluoits/p/5673291.html

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等

原文連結:https://www.jianshu.com/p/91d7acfb036e

6.app出現ANR,是什麼原因導致的?

那麼導致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

7.App出現crash原因有哪些?

為什麼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

8.app對於不穩定偶然出現anr和crash時候你是怎麼處理的?

app偶然出現anr和crash是比較頭疼的問題,由於偶然出現無法復現步驟,這也是一個測試人員必備的技能,需要抓日誌。檢視日誌主要有3個方法:

方法一:app開發儲存錯誤日誌到本地
一般app開發在debug版本,出現anr和crash的時候會自動把日誌儲存到本地實際的sd卡上,去對應的app目錄取出來就可以了

方法二:實時抓取
當出現偶然的crash時候,這時候可以把手機拉到你們app開發那,手機連上他的開發程式碼的環境,有ddms會抓日誌,這時候出現crash就會記錄下來日誌。
儘量重複操作讓bug復現就可以了

也可以自己開著logcat,儲存日誌到電腦本地,參考這篇:https://www.cnblogs.com/yoyoketang/p/9101365.html

adb logcat | find "com.sankuai.meituan" >d:\hello.txt

方法三:第三方sdk統計工具

一般接入了第三方統計sdk,比如友盟統計,在友盟的後臺會抓到報錯的日誌

9.app的日誌如何抓取?

app本身的日誌,可以用logcat抓取,參考這篇:https://www.cnblogs.com/yoyoketang/p/9101365.html

adb logcat | find "com.sankuai.meituan" >d:\hello.txt

也可以用ddms抓取,手機連上電腦,開啟ddms工具,或者在Android Studio開發工具中,開啟DDMS

關於ddms更多的功能,參考這篇:https://www.cnblogs.com/gaobig/p/5029381.html

10.你平常會看日誌嗎, 一般會出現哪些異常(Exception)?

這個主要是面試官考察你會不會看日誌,是不是看得懂java裡面丟擲的異常,Exception

一般面試中java Exception(runtimeException )是必會被問到的問題
app崩潰的常見原因應該也是這些了。常見的異常列出四五種,是基本要求。

常見的幾種如下:

NullPointerException - 空指標引用異常
ClassCastException - 型別強制轉換異常。
IllegalArgumentException - 傳遞非法引數異常。
ArithmeticException - 算術運算異常
ArrayStoreException - 向陣列中存放與宣告型別不相容物件異常
IndexOutOfBoundsException - 下標越界異常
NegativeArraySizeException - 建立一個大小為負數的陣列錯誤異常
NumberFormatException - 數字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支援的操作異常

前言

現在面試個測試崗位,都是要求全能的,web、介面、app啥都要會測,那麼APP測試一般需要哪些技能呢?
面試app測試崗位會被問到哪些問題,怎樣讓面試管覺得你對APP測試很精通的樣子?
本篇總結了app測試面試時候經常被問的10個相關問題
1.什麼是activity?
2.Activity生命週期?
3.Android四大元件?
4.app測試和web測試有什麼區別?
5.android和ios測試區別?
6.app出現ANR,是什麼原因導致的?
7.App出現crash原因有哪些?
8.app對於不穩定偶然出現anr和crash時候你是怎麼處理的?
9.app的日誌如何抓取?
10.你平常會看日誌嗎, 一般會出現哪些異常(Exception)?

1.什麼是activity

什麼是activity,這個前兩年出去面試APP測試崗位,估計問的最多了,特別是一些大廠,先問你是不是做過APP測試,那好,你說說什麼是activity?
如果沒看過android的開發原理,估計這個很難回答,要是第一個問題就被難住了,面試的信心也會失去一半了,士氣大減。

Activity是Android的四大元件之一,也是平時我們用到最多的一個元件,可以用來顯示View。
官方的說法是Activity一個應用程式的元件,它提供一個螢幕來與使用者互動,以便做一些諸如打電話、發郵件和看地圖之類的事情,原話如下:
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map.

Activity是一個Android的應用元件,它提供螢幕進行互動。每個Activity都會獲得一個用於繪製其使用者介面的視窗,視窗可以充滿哦螢幕也可以小於螢幕並浮動在其他視窗之上。
一個應用通常是由多個彼此鬆散聯絡的Activity組成,一般會指定應用中的某個Activity為主活動,也就是說首次啟動應用時給使用者呈現的Activity。將Activity設為主活動的方法
當然Activity之間可以進行互相跳轉,以便執行不同的操作。每當新Activity啟動時,舊的Activity便會停止,但是系統會在堆疊也就是返回棧中保留該Activity。
當新Activity啟動時,系統也會將其推送到返回棧上,並取得使用者的操作焦點。當用戶完成當前Activity並按返回按鈕是,系統就會從堆疊將其彈出銷燬,然後回覆前一Activity
當一個Activity因某個新Activity啟動而停止時,系統會通過該Activity的生命週期回撥方法通知其這一狀態的變化。
Activity因狀態變化每個變化可能有若干種,每一種回撥都會提供執行與該狀態相應的特定操作的機會

2.Activity生命週期?

週期即活動從開始到結束所經歷的各種狀態。生命週期即活動從開始到結束所經歷的各個狀態。從一個狀態到另一個狀態的轉變,從無到有再到無,這樣一個過程中所經歷的狀態就叫做生命週期。

Activity本質上有四種狀態:

1.執行(Active/Running):Activity處於活動狀態,此時Activity處於棧頂,是可見狀態,可以與使用者進行互動

2.暫停(Paused):當Activity失去焦點時,或被一個新的非全面屏的Activity,或被一個透明的Activity放置在棧頂時,Activity就轉化為Paused狀態。此刻並不會被銷燬,只是失去了與使用者互動的能力,其所有的狀態資訊及其成員變數都還在,只有在系統記憶體緊張的情況下,才有可能被系統回收掉

3.停止(Stopped):當Activity被系統完全覆蓋時,被覆蓋的Activity就會進入Stopped狀態,此時已不在可見,但是資源還是沒有被收回

4.系統回收(Killed):當Activity被系統回收掉,Activity就處於Killed狀態

如果一個活動在處於停止或者暫停的狀態下,系統記憶體缺乏時會將其結束(finish)或者殺死(kill)。這種非正常情況下,系統在殺死或者結束之前會呼叫onSaveInstance()方法來儲存資訊,同時,當Activity被移動到前臺時,重新啟動該Activity並呼叫onRestoreInstance()方法載入保留的資訊,以保持原有的狀態。

在上面的四中常有的狀態之間,還有著其他的生命週期來作為不同狀態之間的過度,用於在不同的狀態之間進行轉換,生命週期的具體說明見下。

原文:https://blog.csdn.net/fjnu_se/article/details/80703815

3.Android四大元件

Android四大基本元件:Activity、BroadcastReceiver廣播接收器、ContentProvider內容提供者、Service服務。

Activity:

應用程式中,一個Activity就相當於手機螢幕,它是一種可以包含使用者介面的元件,主要用於和使用者進行互動。一個應用程式可以包含許多活動,比如事件的點選,一般都會觸發一個新的Activity。

BroadcastReceiver廣播接收器

應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者資料網路可用時)進行接收並做出響應。廣播接收器沒有使用者介面。然而,它們可以啟動一個activity或serice 來響應它們收到的資訊,或者用NotificationManager來通知使用者。通知可以用很多種方式來吸引使用者的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態列上放一個持久的圖示,使用者可以開啟它並獲取訊息。

ContentProvider內容提供者:

內容提供者主要用於在不同應用程式之間實現資料共享的功能,它提供了一套完整的機制,允許一個程式訪問另一個程式中的資料,同時還能保證被訪問資料的安全性。只有需要在多個應用程式間共享資料時才需要內容提供者。例如:通訊錄資料被多個應用程式使用,且必須儲存在一個內容提供者中。它的好處:統一資料訪問方式。

Service服務

是Android中實現程式後臺執行的解決方案,它非常適合去執行那些不需要和使用者互動而且還要長期執行的任務(一邊打電話,後臺掛著QQ)。服務的執行不依賴於任何使用者介面,即使程式被切換到後臺,或者使用者打開了另一個應用程式,服務扔然能夠保持正常執行,不過服務並不是執行在一個獨立的程序當中,而是依賴於建立服務時所在的應用程式程序。當某個應用程式程序被殺掉後,所有依賴於該程序的服務也會停止執行(正在聽音樂,然後把音樂程式退出)。

原文:https://blog.csdn.net/m0_37989980/article/details/78681367

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

WEB測試和App測試從流程上來說,沒有區別。
都需要經歷測試計劃方案,用例設計,測試執行,缺陷管理,測試報告等相關活動。
從技術上來說,WEB測試和APP測試其測試型別也基本相似,都需要進行功能測試、效能測試、安全性測試、GUI測試等測試型別。

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

相容性測試:在WEB端是相容瀏覽器,在App端相容的是手機裝置。而且相對應的相容性測試工具也不相同,WEB因為是測試相容瀏覽器,所以需要使用不同的瀏覽器進行相容性測試(常見的是相容IE6,IE8,chrome,firefox)如果是手機端,那麼就需要相容不同品牌,不同解析度,不同android版本甚至不同作業系統的相容。(常見的相容方式是相容市場佔用率前N位的手機即可),有時候也可以使用到相容性測試工具,但WEB相容性工具多用IETester等工具,而App相容性測試會使用Testin這樣的商業工具也可以做測試。

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

還有,App測試基於手機裝置,還有一些手機裝置的專項測試。如交叉事件測試,操作型別測試,網路測試(弱網測試,網路切換)

交叉事件測試:就是在操作某個軟體的時候,來電話、來簡訊,電量不足提示等外部事件。

操作型別測試:如橫屏測試,手勢測試

網路測試:包含弱網和網路切換測試。需要測試弱網所造成的使用者體驗,重點要考慮回退和重新整理是否會造成二次提交。弱網路的模擬,據說可以用360wifi實現設定。

從系統架構的層面,WEB測試只要更新了伺服器端,客戶端就會同步會更新。而且客戶端是可以保證每一個使用者的客戶端完全一致的。但是APP端是不能夠保證完全一致的,除非使用者更新客戶端。如果是APP下修改了伺服器端,意味著客戶端使用者所使用的核心版本都需要進行迴歸測試一遍。

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

原文地址:https://www.cnblogs.com/laoluoits/p/5673291.html

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等

原文連結:https://www.jianshu.com/p/91d7acfb036e

6.app出現ANR,是什麼原因導致的?

那麼導致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

7.App出現crash原因有哪些?

為什麼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

8.app對於不穩定偶然出現anr和crash時候你是怎麼處理的?

app偶然出現anr和crash是比較頭疼的問題,由於偶然出現無法復現步驟,這也是一個測試人員必備的技能,需要抓日誌。檢視日誌主要有3個方法:

方法一:app開發儲存錯誤日誌到本地
一般app開發在debug版本,出現anr和crash的時候會自動把日誌儲存到本地實際的sd卡上,去對應的app目錄取出來就可以了

方法二:實時抓取
當出現偶然的crash時候,這時候可以把手機拉到你們app開發那,手機連上他的開發程式碼的環境,有ddms會抓日誌,這時候出現crash就會記錄下來日誌。
儘量重複操作讓bug復現就可以了

也可以自己開著logcat,儲存日誌到電腦本地,參考這篇:https://www.cnblogs.com/yoyoketang/p/9101365.html

adb logcat | find "com.sankuai.meituan" >d:\hello.txt

方法三:第三方sdk統計工具

一般接入了第三方統計sdk,比如友盟統計,在友盟的後臺會抓到報錯的日誌

9.app的日誌如何抓取?

app本身的日誌,可以用logcat抓取,參考這篇:https://www.cnblogs.com/yoyoketang/p/9101365.html

adb logcat | find "com.sankuai.meituan" >d:\hello.txt

也可以用ddms抓取,手機連上電腦,開啟ddms工具,或者在Android Studio開發工具中,開啟DDMS

關於ddms更多的功能,參考這篇:https://www.cnblogs.com/gaobig/p/5029381.html

10.你平常會看日誌嗎, 一般會出現哪些異常(Exception)?

這個主要是面試官考察你會不會看日誌,是不是看得懂java裡面丟擲的異常,Exception

一般面試中java Exception(runtimeException )是必會被問到的問題
app崩潰的常見原因應該也是這些了。常見的異常列出四五種,是基本要求。

常見的幾種如下:

NullPointerException - 空指標引用異常
ClassCastException - 型別強制轉換異常。
IllegalArgumentException - 傳遞非法引數異常。
ArithmeticException - 算術運算異常
ArrayStoreException - 向陣列中存放與宣告型別不相容物件異常
IndexOutOfBoundsException - 下標越界異常
NegativeArraySizeException - 建立一個大小為負數的陣列錯誤異常
NumberFormatException - 數字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支援的操作異常