面試官最常問的面試題及答案,每1題都很經(jīng)典

1、web測試和APP測試的區(qū)別?
web測試和APP測試都離不開測試的基礎(chǔ)知識和測試原理。
不同點是:web 測試更多的是考慮自身功能和瀏覽器兼容,app 測試要考慮手機本身固有的屬性,所以 app 測試還需要注意以下幾點:
1.中斷測試(來電去電,短信,藍牙,NFC 支付,鬧鐘,數(shù)據(jù)線插拔,鎖屏,斷電,關(guān)機重啟等)
2.安裝卸載測試(全新安裝,新版本覆蓋舊版本,卸載舊版本安裝新版本,卸載新版本安裝舊版本)
3.外在因素測試(網(wǎng)絡(luò)切換,硬件按鍵,不同分辨率,兼容性,系統(tǒng),系統(tǒng)版本)
2、如何測試一個APP的登錄場景
頁面基本元素的操作;
大量字符,特殊字符,邊界值,必填項校驗;
注冊手機號的特殊性驗證,注冊郵箱的格式驗證;
密碼大小寫是否敏感,密碼是否加密展示,密碼是否有可見按鈕功能,密碼框能否使用復(fù)制粘貼;
驗證碼校驗:必填項,過期,錯誤,無網(wǎng)絡(luò)時獲取驗證碼,多次獲取,超過獲取次數(shù),輸入驗證碼后,修改手機號;
登錄時與系統(tǒng)的交互:鎖屏,藍牙,home,后退,橫豎屏,修改字體字號;
逆向思維:已注冊賬號注冊,未注冊賬號忘記密碼,未注冊賬號登錄,注冊過程中退出再次注冊;
輸入法交互,切換輸入法,切換輸入模式,手寫/九宮格;
登錄賬號的多樣性:多個賬號輪流登錄,同一個賬號多角色登錄;
第三方登錄驗證:賬號授權(quán),信息正確,取消授權(quán);
登錄頁面跳轉(zhuǎn),返回,登錄成功及其他頁面跳轉(zhuǎn);
手機兼容性測試:分辨率兼容,系統(tǒng)兼容,系統(tǒng)版本兼容,App 版本兼容;
網(wǎng)絡(luò)切換,網(wǎng)絡(luò)斷開,弱網(wǎng)。
3、push消息如何測試?
檢查 Push 消息是否按照指定的業(yè)務(wù)規(guī)則發(fā)送;
檢查不接收推送消息時,用戶不會再接收到 Push 消息;
如果用戶設(shè)置了免打擾的時間段,檢查在免打擾時間段內(nèi),用戶接收不到 Push。在非免打擾時間段內(nèi),用戶能正常收到 Push;
當(dāng) Push 消息是針對登錄用戶的時候,需要檢查收到的 Push 與用戶身份是否相符,沒有錯誤的將其他人的消息推送過來。一般情況下,只對手機上最后一個登錄用戶進行消息推送;
測試 Push 時,在開關(guān)機、待機狀態(tài)下執(zhí)行推送,消息及其推送跳轉(zhuǎn)的正確性;
push 消息時,會有紅點展示,推送消息閱讀前后數(shù)字的變化是否正確;
應(yīng)用在開發(fā)、未打開狀態(tài)、應(yīng)用啟動且在后臺運行的情況下是 push 顯示和跳轉(zhuǎn)是否正確;
多條推送的合集的顯示和跳轉(zhuǎn)是否正確。
4、APP的閃退通常是什么原因?
緩存垃圾太多,Android 系統(tǒng)的特性,如果長時間不清理垃圾文件,會導(dǎo)致越來越卡,甚至閃退;
運行程序太多,導(dǎo)致內(nèi)存不足;
應(yīng)用版本兼容問題,分辨率兼容問題;
APP訪問網(wǎng)絡(luò)的地方,組件能否正常下載并顯示;
APP的 SDK 與手機系統(tǒng)不兼容;
系統(tǒng)升級后,新版本不兼容老版本的 API,返回對象失敗,報空指針;
軟件權(quán)限未開放。
5、測試過程中遇到 app 出現(xiàn) crash 或者 ANR,你會怎么處理?
APP 出現(xiàn) Crash 或 ANR,可以從以下幾個方面處理:
可以先把日志過濾出來:adb logcat | findstr xxxxx(過濾日志信息) ;
然后再搜索其中的關(guān)鍵字,比如:exception、crash,看看是哪些方法或者異常導(dǎo)致了問題;
初步定位問題原因后,可以交給開發(fā)人員去具體查找深層原因并修復(fù)。
6、你平常會看日志嗎, 一般會出現(xiàn)哪些異常(Exception)?
常見的幾種如下:
NullPointerException - 空指針引用異常
ClassCastException - 類型強制轉(zhuǎn)換異常
IllegalArgumentException - 傳遞非法參數(shù)異常
ArithmeticException - 算術(shù)運算異常
ArrayStoreException - 向數(shù)組中存放與聲明類型不兼容對象異常
IndexOutOfBoundsException - 下標(biāo)越界異常
NegativeArraySizeException - 創(chuàng)建一個大小為負(fù)數(shù)的數(shù)組錯誤異常
NumberFormatException - 數(shù)字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支持的操作異常
7、APP 測試的內(nèi)容主要包括哪些,如何開展?
功能測試:
業(yè)務(wù)邏輯正確性測試:依據(jù)產(chǎn)品文檔->測試用例編寫。
兼容性測試:
1.系統(tǒng)版本:Android:官方版本,定制版本;IOS:官方提供版本。
2.分辨率:720 * 1280 1080* 1920。
3.網(wǎng)絡(luò)情況:2g 3g 4g 5g Wi-Fi。
異常測試:
1.熱啟動應(yīng)用:應(yīng)用在后臺長時間待機;應(yīng)用在后臺待機過程中,手機重啟。
2.網(wǎng)絡(luò)切換和中斷恢復(fù):網(wǎng)絡(luò)切換;中斷恢復(fù)。
3.電話信息中斷恢復(fù)。
升級,安裝,卸載測試:
1.升級測試:臨近版本升級(1.0->1.1);跨版本(1.0->…->2.2)。
2.安裝測試:首次安裝;覆蓋安裝(同版本,不同版本覆蓋);卸載后安裝。
3.卸載測試:首次卸載;卸載安裝后再卸載。
健壯性測試:
1.手機資源消耗:cpu,內(nèi)存。
2.流量消耗:圖片,數(shù)據(jù),視頻。
3.電量測試。
4.崩潰恢復(fù)。
8、APP 性能測試關(guān)注點及常見 APP 性能測試工具
包體大?。?/p>
包體大小能被列為性能指標(biāo),是從 APP 性能指標(biāo)及運營兩個維度考慮的,用戶是更希望包體小的同時性能要好,有時它們會是一個互相取舍的關(guān)系。
啟動時長:
移動應(yīng)用的啟動時間是用戶體驗的一個重要方面,IOS 一直建議盡可能的縮短啟動時間,防止用戶不愿意使用它們。對于瀏覽器而言,由于程序啟動時還會有教育頁和閃屏的下發(fā),因此啟動時間的獲取顯得尤為重要。
啟動時間分為冷啟動時間和熱啟動時間,所謂的“冷啟動”,就是一個完全沒有運行的應(yīng)用的啟動時間,與熱啟動(應(yīng)用已經(jīng)在后臺運行,某個事件將其帶至前臺)相比,由于此時系統(tǒng)尚未建立緩存,因此冷啟動往往要較平時(熱啟動)耗費更長的時間。
內(nèi)存使用:
在 Android 系統(tǒng)中,每個 APP 進程除了同其他進程共享(shared dirty)外,還獨用私有內(nèi)存(private dirty),通常我們使用 PSS(=私有內(nèi)存+比例分配共享內(nèi)存)來衡量一個 APP 的內(nèi)存開銷。移動設(shè)備的內(nèi)存資源是非常有限,為每個 APP 進程分配的私有內(nèi)存也是有限制。一方面我們要合理的申請內(nèi)存使用,以免導(dǎo)致頻繁的 GC(垃圾回收機制)影響性能和大對象申請發(fā)生內(nèi)存溢出;另一方面,我們要及時釋放內(nèi)存,以免發(fā)生內(nèi)存泄漏。
CPU 占用率:
一般情況下,用主流手機使用 APP20%-40%的 CPU 占用率算是合理的,當(dāng)然這個數(shù)值隨著近年來手機硬件配置的提高,會略微下降,如果 CPU 占用率超過 80%就非常值得我們?nèi)リP(guān)注了。
圖片處理器每秒刷新的幀數(shù)(FPS):
可用來指示頁面是否平滑的渲染。手機 APP 幀率 FPS,30-60 都可接受,上了 60 對于人眼主觀感受差別就不大了。對于移動應(yīng)用開發(fā)而言,并不是 FPS 越高就一定越好,F(xiàn)PS 取決于顯卡,其次是內(nèi)存、CPU,然后是網(wǎng)絡(luò)。故綜合 APP 其他性能指標(biāo),選擇一個適合的 FPS 即可。
電量:
相對于 PC 來說,移動設(shè)備的電池電量是非常有限的,保持持久的續(xù)航能力尤為重要。另外,android 的很多特性都比較耗電(如屏幕,GPS,sensor 傳感器,喚醒機制,CPU,連網(wǎng)等的使用),我們必須要慎重檢查 APP 的電量使用,以免導(dǎo)致用戶手機耗電發(fā)熱,帶來不良體驗。
流量:
目前的網(wǎng)絡(luò)類型包含 2G\3G\4G\5G\wifi,其中還有不同運營商的區(qū)分,我們在 APP 的使用中經(jīng)常遇到大資源,重復(fù)請求,調(diào)用響應(yīng)慢,調(diào)用失敗等各種情況。在不同的網(wǎng)絡(luò)類型之下,我們不僅要控制流量使用,還需要加快請求的響應(yīng)。另外,對于需要聯(lián)網(wǎng)的手游來說,部分游戲?qū)Σ煌?lián)網(wǎng)方式的網(wǎng)絡(luò)類型采用了不同的流量消耗策略,主要分為 wifi 環(huán)境和蜂窩網(wǎng)絡(luò)環(huán)境。所以針對不同的游戲,我們統(tǒng)計流量消耗時,可能要連接不同的網(wǎng)絡(luò)進行測試。
app 性能測試工具
GT 和 iTest,Emmagee APT ,DDMS ,手機自帶開發(fā)者選項中的工具,也可以通過 adb 命令來查看等。
9、如何對 app 進行弱網(wǎng)測試
弱網(wǎng)測試可以測試 APP 的加載時間、可用性、穩(wěn)定性和健壯性。這時我們就可以借助工具來模擬不同的網(wǎng)絡(luò)狀況,模擬 2G、3G 或弱網(wǎng)情況進行測試。工具可以選擇 Fiddler 也可以選擇 Charles 也可以選擇其他工具。
10、常見的 adb 命令
注:adb 使用的端口號是 5037,以下總結(jié)工作中常用到的 adb 命令。
1.查看幫助手冊列出所有的選項說明及子命令:
adb help
2. 獲取設(shè)備列表及設(shè)備狀態(tài):
adb devices
3.安裝應(yīng)用:adb install 路徑\xx.apk, 安裝應(yīng)用;adb install -r 重新安裝。
adb install
adb install -r
4. 獲取設(shè)備的狀態(tài),設(shè)備的狀態(tài)有 device , offline , unknown3 種,其中 device:設(shè)備正常連接,offline:連接出現(xiàn)異常,設(shè)備無響應(yīng),unknown:沒有連接設(shè)備。
adb get-state
5.卸載應(yīng)用:adb uninstall <包名>, 后面的參數(shù)是應(yīng)用的包名,區(qū)別于 apk 文件名。
adb uninstall
6.將 Android 設(shè)備上的文件或者文件夾復(fù)制到電腦本地:adb pull <遠程路徑> <本地路徑>, 如復(fù)制 Sdcard 下的 pull.txt 文件到 D 盤:adb pull sdcard/pull.txt d:\,重命名:adb pull sdcard/pull.txt d:\rename.txt。
adb pull
7.推送本地文件至 Android 設(shè)備:adb push <本地路徑> <遠程路徑>, 如推送 D 盤下的 ITester.txt 至 Sdcard:adb push d:\ITester.txt sdcard/ (注意 sdcard 后面的斜杠不能少)。
adb push
8.結(jié)束和啟動 adb 服務(wù):adb kill-server /adb start-server , 結(jié)束 adb 服務(wù)/啟動 adb 服務(wù),通常兩個命令一起用,設(shè)備狀態(tài)異常時使用 kill-server,運行 start-server 進行重啟服務(wù)。
adb kill-server
adb start-server
9.打印及清除系統(tǒng)日志:adb logcat , 打印 Android 的系統(tǒng)日志 ;adb logcat -c,清除日志。
adb logcat
adb logcat -c
10.查找包名/活動名
adb logcat | findstr START
11.生成 bugreport 文件:adb bugreport , 打印 dumpsys、dumpstate、logcat 的輸出,也是用于分析錯誤,輸出比較多,建議重定向到一個文件中,如 adb bugreport > d:\bugreport.log。
adb bugreport
12. 重啟 Android 設(shè)備:adb reboot , adb reboot recovery,重啟到 Recovery 界面;adb reboot bootloader,重啟到 bootloader 界面。
adb reboot
adb reboot recovery
adb reboot bootloader
13.獲取 root 權(quán)限:adb root , adb remount,可以直接獲取 root 權(quán)限,并掛載系統(tǒng)文件系統(tǒng)為可讀寫狀態(tài)。
adb root
adb remount
14.返回設(shè)備序列號 SN 值:
adb get-serialno
15.獲取設(shè)備的 ID:
adb get-product
16.進入設(shè)備 shell:
adb shell
17.列出所有的應(yīng)用的包名:
adb shell pm list package
18.截屏并保存至 sdcard 目錄:
adb shell screencap -p /sdcard/screen.png
19.錄制視頻并保存至 sdcard:adb shell screenrecord sdcard/record.mp4,執(zhí)行命令后操作手機,ctrl + c 結(jié)束錄制,錄制結(jié)果保存至 sdcard:
adb shell screenrecord sdcard/record.mp4
20.獲取設(shè)備分辨率:
adb shell wm size
21.列出指定應(yīng)用的 dump 信息,adb shell pm dump 包名。
adb shell pm dump
22.列出對應(yīng)包名的 .apk 位置,adb shell pm path 包名。
adb shell pm path
23.查看當(dāng)前終端中的進程信息:
adb shell ps
24.monkey 測試:adb shell monkey –p 程序包 –v 測試次數(shù) ,比如“adb shell monkey –p com.htc.Weather –v 20000”意思是對 com.htc.Weather 這個程序包單獨進行一次 20000 次的 monkey 測試。
adb shell monkey –p 程序包 –v 測試次數(shù)
25.顯示所有程序包:
adb shell ps | grep [process]
26.根據(jù)進程 pid 或包名查看進程占用的內(nèi)存:
adb shell dumpsys meminfo
adb shell dumpsys meminfo<package_name>
27. APP 啟動:
adb shell am start -n packageName/activity
28. APP 關(guān)閉:
adb shell am force-stop 包名
29.監(jiān)控 APP 啟動時間:
adb shell am start -W packageName/activity
以上這些面試題都是非常容易被面試官問到的,建議保存,面試之前反復(fù)觀看,最后祝愿所有的面試者都能夠找到自己滿意的工作。
下方資料對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你~



凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。技術(shù)成長的每一個階段都會遇到一個與之匹配的、難以跨越的,技術(shù)瓶頸期!這個階段沒有一次能解決的神藥,只有自己不斷的積累、沉淀、破局,到最后的爆發(fā)。而這些知識可能最開始都是枯燥的,就像看了大A不會小a,看了小a又牽扯出小b,沒辦法只能一層層的扒,一層層的學(xué)。