預約直播間,《一個案例學會接口測試框架》
一、四大組件
四大基本組件:、廣播接收器、內容提供者、服務。
:
應用程序中,一個就相當于手機屏幕,它是一種可以包含用戶界面的組件,主要用于和用戶進行交互。一個應用程序可以包含許多活動,比如事件的點擊,一般都會觸發一個新的。
廣播接收器:
應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收并做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個或 來響應它們收到的信息,或者用來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它并獲取消息。
內容提供者:
內容提供者主要用于在不同應用程序之間實現數據共享的功能,它提供了一套完整的機制,允許一個程序訪問另一個程序中的數據,同時還能保證被訪問數據的安全性。只有需要在多個應用程序間共享數據時才需要內容提供者。例如:通訊錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。它的好處:統一數據訪問方式。
服務:
是中實現程序后臺運行的解決方案,它非常適合去執行那些不需要和用戶交互而且還要長期運行的任務(一邊打電話,后臺掛著QQ)。服務的運行不依賴于任何用戶界面,即使程序被切換到后臺,或者用戶打開了另一個應用程序,服務仍然能夠保持正常運行,不過服務并不是運行在一個獨立的進程當中,而是依賴于創建服務時所在的應用程序進程。當某個應用程序進程被殺掉后,所有依賴于該進程的服務也會停止運行(正在聽音樂,然后把音樂程序退出)。
二、代碼能力
1、請用自己最擅長的編程語言,將一個字符串反轉并輸出?
參考答案:
1)實現:
方法1、使用[::-1]:
s = ''print s[::-1]
方法2、使用()方法:
l = list(s)l.()print ''.join(l)
(2)java實現:方法1、使用,一點技巧也沒有:
( s){ new (s).().();}
方法2、靈活運用了字符串功能:
( s){char[] =s.();char temp;int len=.;for(int i=len/2-1;i>=0;i--){temp=[i];[i]=[len-1-i];[len-1-i]=temp;} new ();}
2、針對數十個安卓應用市場渠道包,請問如何進行大體的功能驗證,簡單敘述一下思路?
參考答案:可以自動化遍歷某個目錄下面的所有渠道包apk,然后循環:安裝——》登錄——》**操作——》退出——卸載
三、測試思路
1、給你一個模塊移動端常見兼容面試題,比如注冊模塊,你會怎么樣設計與執行測試?
參考答案:數據——》從哪里來(入口)——》到哪里去(出口)——》數據庫(檢驗數據的正確性)
2、你認為app測試過程中,相對于web,要更多注意哪些測試點?或者說app測試和web測試有哪些不同之處?
參考答案:他們的主要區別在于具體測試的細節和方法有區別,比如:性能測試,在WEB測試只需要測試響應時間這個要素,在App測試中還需要考慮流量測試和耗電量測試。
安裝測試:WEB測試基本上沒有客戶端層面的安裝測試,但是App測試是存在客戶端層面的安裝測試,那么就具備相關的測試點。
交叉事件測試:就是在操作某個軟件的時候,來電話、來短信,電量不足提示等外部事件。
操作類型測試:如橫屏測試,手勢測試
網絡測試:包含弱網和網絡切換測試。需要測試弱網所造成的用戶體驗,重點要考慮回退和刷新是否會造成二次提交。弱網絡的模擬,據說可以用實現設置。主要是針對2G、3G、4G、wifi三種網絡環境進行測試 ;
兼容性測試:在WEB端是兼容瀏覽器,在App端兼容的是手機設備。而且相對應的兼容性測試工具也不相同,WEB因為是測試兼容瀏覽器,所以需要使用不同的瀏覽器進行兼容性測試(常見的是兼容IE6,IE8,,)如果是手機端,那么就需要兼容不同品牌,不同分辨率,不同版本甚至不同操作系統的兼容。(常見的兼容方式是兼容市場占用率前N位的手機即可)移動端常見兼容面試題,有時候也可以使用到兼容性測試工具,但WEB兼容性工具多用等工具,而App兼容性測試會使用這樣的商業工具也可以做測試。
四、測試技術
1、說說會用哪些抓包工具?怎么用的?
參考答案:比如,主要用來做app抓包使用,先在客戶端做好各項配置,端口設置為8888,然后在手機上設置代理,就可以抓包了,主要看的是服務器返回的值、還能夠修改傳入參數、傳出的參數、模擬網絡延時,去構造不同場景。
2、0app的日志如何抓取?
參考答案:adb | find "com.." >d:\hello.txt
也可以用ddms抓取,手機連上電腦,打開ddms工具,或者在 開發工具中,打開DDMS
3、你平常會看日志嗎, 一般會出現哪些異常()?
參考答案:這個主要是面試官考察你會不會看日志,是不是看得懂java里面拋出的異常,.一般面試中java ( )是必會被問到的問題
app崩潰的常見原因應該也是這些了。常見的異常列出四五種,是基本要求。
常見的幾種如下:
- 空指針引用異常
- 類型強制轉換異常。
tion - 傳遞非法參數異常。
- 算術運算異常
- 向數組中存放與聲明類型不兼容對象異常
ption - 下標越界異常
- 創建一個大小為負數的數組錯誤異常
n - 數字格式異常
- 安全異常
- 不支持的操作異常
4、什么是alpha測試和beta測試?
參考答案:alpha測試:在公司場地,由員工主導的測試行為;beta測試:在客戶場地,由客戶主導進行的測試。
5、請寫出一個SQL來查詢分數前五5的所有人?
參考答案:mysql: * from 分數表 order by 分數 desc limit 5;
: top 5 * from 分數表 order by 分數 desc;
6、linux常用命令有哪些?
參考答案:cd命令:切換到某個目錄
ls命令:列出當前目錄的所有文件、文件夾
pwd命令:列出當前目錄的路徑
cp命令:復制
mv命令:剪切
grep命令:管道
find命令:查找
rm命令:刪除
ps命令:查看進程
kill命令:殺掉某個進程
cat命令:查看某文件
tar命令:打包
chmod命令:賦權限
chown命令:改變文件的所有者
vim命令:文本編輯
7、請說明手機和IOS手機,系統有什么區別?
參考答案:兩者運行機制不同:IOS采用的是沙盒運行機制,安卓采用的是虛擬機運行機制。
兩者后臺制度不同:IOS中任何第三方程序都不能在后臺運行;安卓中任何程序都能在后臺運行,直到沒有內存才會關閉。
IOS中用于UI指令權限最高,安卓中數據處理指令權限最高。
8、請簡要介紹一下安卓系統四層架構?
參考答案:從上到下,依次是:應用程序層——》應用程序框架層——》系統運行庫層——》Linux核心層
9、簡單介紹一下 SDK中自帶的幾個工具/命令的功能?
參考答案:ddms: Debug ,是 開發環境中的[虛擬機]調試監控服務。
:中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。
:是自帶的用于UI自動化測試工具,可仿真APP上的單擊、滑動、輸入文本等操作。
:同
adb:ADB的全稱為 Debug ,就是起到調試橋的作用。通過ADB我們可以在中方面通過DDMS來調試程序,就是debug工具。
10、常用的adb命令有哪些?請隨便寫一個腳本,并解釋其中參數的含義?
參考答案:adb 、adb 、adb 、adb shell pm 、adb shell am
adb shell -p com.. -s 123 -- 500 --- --- ---- -v -v -v 2000 > d:\--test1.txt
-p:app包名、
--:每個操作的間隔時間,單位ms
---:忽略崩潰
---:忽略超時
----:忽略安全異常
-v -v -v:日志詳細等級,3個v代表最詳細等級的日志
d:\--test1.txt:代表將產生的日志,放到本地PC的D盤,并命名為:--test1.txt
11、測試過程中遇到app出現crash或者ANR,你會怎么處理?
參考答案:可以先把日志過濾出來:adb | xxxxx(過濾日志信息) ,然后再搜索其中的關鍵字,比如:、crash,看看是那些方法或者異常導致了問題的發送,初步定位問題原因后,可以交給開發人員去具體查找深層原因并修復。
12、請簡單介紹一下使用過的安卓UI自動化測試工具?
參考答案::是一個移動端的自動化框架,可用于測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。
:是一款國外的自動化測試框架,主要針對平臺的應用進行黑盒自動化測試,它提供了模擬各種手勢操作(點擊、長按、滑動等)、查找和斷言機制的API,能夠對各種控件進行操作。
13、你覺得app的性能測試,即專項測試,需要重點關注哪些方面?
參考答案:內存、cpu占用、耗電量、流量、流暢度等。
今日互動
對于以上知識點還有什么不了解的