APP測試面試題分享帶參考答案

Android四大組件

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

Activity:應用程序中,一個Activity就相當於手機屏幕,它是一種可以包含用戶界面的組件,主要用於和用戶進行交互。一個應用程序可以包含許多活動,比如事件的點擊,一般都會觸發一個新的Activity。

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

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

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


代碼能力

1、請用自己最擅長的編程語言,將一個字符串反轉並輸出?

參考答案:

(1)python實現:

方法1、使用[::-1]:

s = 'python'print s[::-1]方法2、使用reverse()方法:

l = list(s)l.reverse()print ''.join(l)

(2)java實現:

方法1、使用StringBuffer,一點技巧也沒有:

public String reverse(String s){return new StringBuffer(s).reverse().toString();}

方法2、靈活運用了字符串功能:

public String reverse(String s){char[] letters=s.toCharArray();char temp;int len=letters.length;for(int i=len/2-1;i>=0;i--){temp=letters[i];letters[i]=letters[len-1-i];letters[len-1-i]=temp;}return new String(letters);}

2、針對數十個安卓應用市場渠道包,請問如何進行大體的功能驗證,簡單敘述一下思路?

參考答案:可以自動化遍歷某個目錄下面的所有渠道包apk,然後循環:安裝——》登錄——》**操作——》退出——卸載


測試思路

1、給你一個模塊,比如註冊模塊,你會怎麼樣設計與執行測試?

參考答案:數據——》從哪裡來(入口)——》到哪裡去(出口)——》數據庫(檢驗數據的正確性)

2、你認為app測試過程中,相對於web,要更多注意哪些測試點?或者說app測試和web測試有哪些不同之處?

參考答案:

  • 他們的主要區別在於具體測試的細節和方法有區別,比如:性能測試,在WEB測試只需要測試響應時間這個要素,在App測試中還需要考慮流量測試和耗電量測試。
  • 安裝測試:WEB測試基本上沒有客戶端層面的安裝測試,但是App測試是存在客戶端層面的安裝測試,那麼就具備相關的測試點。
  • 交叉事件測試:就是在操作某個軟件的時候,來電話、來短信,電量不足提示等外部事件。
  • 操作類型測試:如橫屏測試,手勢測試
  • 網絡測試:包含弱網和網絡切換測試。需要測試弱網所造成的用戶體驗,重點要考慮回退和刷新是否會造成二次提交。弱網絡的模擬,據說可以用360wifi實現設置。主要是針對2G、3G、4G、wifi三種網絡環境進行測試 ;
  • 兼容性測試:在WEB端是兼容瀏覽器,在App端兼容的是手機設備。而且相對應的兼容性測試工具也不相同,WEB因為是測試兼容瀏覽器,所以需要使用不同的瀏覽器進行兼容性測試(常見的是兼容IE6,IE8,chrome,firefox)如果是手機端,那麼就需要兼容不同品牌,不同分辨率,不同android版本甚至不同操作系統的兼容。(常見的兼容方式是兼容市場佔用率前N位的手機即可),有時候也可以使用到兼容性測試工具,但WEB兼容性工具多用IETester等工具,而App兼容性測試會使用Testin這樣的商業工具也可以做測試。

測試技術

1、說說會用哪些抓包工具?怎麼用的?

參考答案:比如fiddler,主要用來做app抓包使用,先在fiddler客戶端做好各項配置,端口設置為8888,然後在手機上設置代理,就可以抓包了,主要看的是服務器返回的值、還能夠修改傳入參數、傳出的參數、模擬網絡延時,去構造不同場景。

2、0app的日誌如何抓取?

adb logcat | find "com.sankuai.meituan" >d:\hello.txt也可以用ddms抓取,手機連上電腦,打開ddms工具,或者在Android Studio開發工具中,打開DDMS

3、你平常會看日誌嗎, 一般會出現哪些異常(Exception)?這個主要是面試官考察你會不會看日誌,是不是看得懂java裡面拋出的異常,Exception.一般面試中java Exception(runtimeException )是必會被問到的問題app崩潰的常見原因應該也是這些了。常見的異常列出四五種,是基本要求。

常見的幾種如下:

  • NullPointerException - 空指針引用異常
  • ClassCastException - 類型強制轉換異常。
  • IllegalArgumentException - 傳遞非法參數異常。
  • ArithmeticException - 算術運算異常
  • ArrayStoreException - 向數組中存放與聲明類型不兼容對象異常
  • IndexOutOfBoundsException - 下標越界異常
  • NegativeArraySizeException - 創建一個大小為負數的數組錯誤異常
  • NumberFormatException - 數字格式異常
  • SecurityException - 安全異常
  • UnsupportedOperationException - 不支持的操作異常

4、什麼是alpha測試和beta測試?alpha測試:在公司場地,由員工主導的測試行為;beta測試:在客戶場地,由客戶主導進行的測試。

5、請寫出一個SQL來查詢分數前五5的所有人?

mysql:select * from 分數表 order by 分數 desc limit 5;oracle:select top 5 * from 分數表 order by 分數 desc;

6、linux常用命令有哪些?

  • cd命令:切換到某個目錄
  • ls命令:列出當前目錄的所有文件、文件夾
  • pwd命令:列出當前目錄的路徑
  • cp命令:複製
  • mv命令:剪切
  • grep命令:管道
  • find命令:查找
  • rm命令:刪除
  • ps命令:查看進程
  • kill命令:殺掉某個進程
  • cat命令:查看某文件
  • tar命令:打包
  • chmod命令:賦權限
  • chown命令:改變文件的所有者
  • vim命令:文本編輯

7、請說明Android手機和IOS手機,系統有什麼區別?

  • 兩者運行機制不同:IOS採用的是沙盒運行機制,安卓採用的是虛擬機運行機制。
  • 兩者後臺制度不同:IOS中任何第三方程序都不能在後臺運行;安卓中任何程序都能在後臺運行,直到沒有內存才會關閉。
  • IOS中用於UI指令權限最高,安卓中數據處理指令權限最高。

8、請簡要介紹一下安卓系統四層架構?

從上到下,依次是:應用程序層——》應用程序框架層——》系統運行庫層——》Linux核心層

9、簡單介紹一下Android SDK中自帶的幾個工具/命令的功能?參考答案:

  • ddms:Dalvik Debug Monitor Service,是 Android 開發環境中的Dalvik[虛擬機]調試監控服務。
  • monkey:Android中的一個命令行工具,可以運行在模擬器裡或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。
  • uiautomator:UIAutomator是Eclipse自帶的用於UI自動化測試工具,可仿真APP上的單擊、滑動、輸入文本等操作。
  • monitor:同uiautomator
  • adb:ADB的全稱為Android Debug Bridge,就是起到調試橋的作用。通過ADB我們可以在Eclipse中方面通過DDMS來調試Android程序,就是debug工具。

10、常用的adb命令有哪些?請隨便寫一個monkey腳本,並解釋其中參數的含義?

參考答案:

adb devices、adb install、adb uninstall、adb shell pm 、adb shell am

adb shell monkey -p com.xiaoniu.finance -s 123 --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 2000 > d:\xnonline-monkey-test1.txt

  • -p:app包名、
  • --throttle:每個操作的間隔時間,單位ms
  • --ignore-crashes:忽略崩潰
  • --ignore-timeouts:忽略超時
  • --ignore-security-exceptions:忽略安全異常
  • -v -v -v:日誌詳細等級,3個v代表最詳細等級的日誌
  • d:\xnonline-monkey-test1.txt:代表將產生的日誌,放到本地PC的D盤,並命名為:xnonline-monkey-test1.txt

11、測試過程中遇到app出現crash或者ANR,你會怎麼處理?參考答案:可以先把日誌過濾出來:adb logcat | findstr xxxxx(過濾日誌信息) ,然後再搜索其中的關鍵字,比如:exception、crash,看看是那些方法或者異常導致了問題的發送,初步定位問題原因後,可以交給開發人員去具體查找深層原因並修復。

12、請簡單介紹一下使用過的安卓UI自動化測試工具?參考答案:appium:是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。robotium:是一款國外的Android自動化測試框架,主要針對Android平臺的應用進行黑盒自動化測試,它提供了模擬各種手勢操作(點擊、長按、滑動等)、查找和斷言機制的API,能夠對各種控件進行操作。

13、你覺得app的性能測試,即專項測試,需要重點關注哪些方面?參考答案:內存、cpu佔用、耗電量、流量、流暢度等


分享到:


相關文章: