17道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占用、耗電量、流量、流暢度等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM