金三銀四求職季,APP面試題放送
進(jìn)入金三銀四,很多小伙伴有被動(dòng)跳槽的打算,所以更新一些APP面試題,希望能幫到大家,四千多字長(zhǎng)文分享,建議收藏!
一?Web 端測(cè)試和 App 端測(cè)試有何不同?
① 系統(tǒng)架構(gòu)方面
Web 項(xiàng)目,b/s架構(gòu),基于瀏覽器的;Web 測(cè)試只要更新了服務(wù)器端,客戶端就會(huì)同步會(huì)更新;
App 項(xiàng)目,c/s架構(gòu)的,必須要有客戶端;App 修改了服務(wù)端,則客戶端用戶所有核心版本都需要進(jìn)行回歸測(cè)試一遍;
② 兼容方面
Web項(xiàng)目:a. 瀏覽器(火狐、谷歌、IE等)b. 操作系統(tǒng)(Windows7、Windows10、Linux等);
App項(xiàng)目:a. 設(shè)備系統(tǒng): iOS(ipad、iphone)、Android(三星、華為、聯(lián)想等) 、Windows(Win7、Win8、win10)、OSX(Mac)b. 手機(jī)設(shè)備可根據(jù) 手機(jī)型號(hào)、分辨率不同;
③性能方面
web項(xiàng)目 :需監(jiān)測(cè)響應(yīng)時(shí)間、CPU、Memory
app項(xiàng)目 除了監(jiān)測(cè)響應(yīng)時(shí)間、CPU、Memory外,還需監(jiān)測(cè)流量、電量等
④相對(duì)于 Web?項(xiàng)目,APP有專項(xiàng)測(cè)試
干擾測(cè)試:中斷,來電,短信,關(guān)機(jī),重啟等;
弱網(wǎng)絡(luò)測(cè)試(模擬2g、3g、4g,5G, wifi網(wǎng)絡(luò)狀態(tài)以及丟包情況);網(wǎng)絡(luò)切換測(cè)試(網(wǎng)絡(luò)斷開后重連、3g切換到4g/wifi 等);
安裝、更新、卸載;
安裝:需考慮安裝時(shí)的中斷、弱網(wǎng)、安裝后刪除安裝文件等情況;
卸載:需考慮 卸載后是否刪除 App 相關(guān)的文件;
更新:分強(qiáng)制更新、非強(qiáng)制更新、增量包更新、斷點(diǎn)續(xù)傳、弱網(wǎng)狀態(tài)下更新;
界面操作:關(guān)于手機(jī)端測(cè)試,需注意手勢(shì),橫豎屏切換,多點(diǎn)觸控,前后臺(tái)切換;
安全測(cè)試:安裝包是否可反編譯代碼、安裝包是否簽名、權(quán)限設(shè)置,例如訪問通訊錄等;
邊界測(cè)試:可用存儲(chǔ)空間少、沒有SD卡/雙SD卡、飛行模式、系統(tǒng)時(shí)間有誤、第三方依賴(QQ、微信登錄)等;
權(quán)限測(cè)試:設(shè)置某個(gè) App 是否可以獲取該權(quán)限,例如是否可訪問通訊錄、相冊(cè)、照相機(jī)等。
二??App是如何測(cè)試的?
一般從界面,功能,兼容性,穩(wěn)定性,交互性,安全性,易用性,性能,網(wǎng)絡(luò),異常情況,權(quán)限,等方面進(jìn)行測(cè)試。
界面測(cè)試:主要測(cè)試界面展示是否與UI設(shè)計(jì)的原圖一致,測(cè)試手機(jī)屏幕大小及分辨率對(duì)界面的影響。
功能測(cè)試:除安裝,卸載,更新 和web端差不多,都需要考慮人員與權(quán)限,場(chǎng)景與步驟,異常場(chǎng)景,用戶補(bǔ)充場(chǎng)景,關(guān)聯(lián)模塊,但是app測(cè)試功能,在相關(guān)功能模塊需要添加一項(xiàng),就是web界面的變化,如你在手機(jī)上投資了一筆錢,你需要在web端查看投資情況是否一致。
兼容性測(cè)試:就是用不同的廠商,型號(hào),安卓系統(tǒng)版本進(jìn)行測(cè)試。
穩(wěn)定性測(cè)試:一般我們是功能測(cè)試完成情況下,再進(jìn)行穩(wěn)定性測(cè)試,一般主要是檢查軟件長(zhǎng)時(shí)間運(yùn)行,會(huì)不會(huì)出現(xiàn)崩潰,crash,anr 超時(shí)不響應(yīng),exception異常, ?出現(xiàn)了bug,我們會(huì)提交bug,等開發(fā)修復(fù)完成,進(jìn)行回歸測(cè)試。
交互性測(cè)試:跟手機(jī)固有的功能模塊,進(jìn)行交互使用,像音量的調(diào)節(jié),鎖屏,旋轉(zhuǎn),返回鍵,主菜單鍵,截圖,鬧鐘,待機(jī),插拔數(shù)據(jù)線,耳機(jī),wifi、藍(lán)牙,電話,短信,低電量,看功能是否正常使用,界面是否為原來界面,輸入數(shù)據(jù)是否保存,還有跟其他app進(jìn)行交互性測(cè)試,一般 跟應(yīng)用排行榜前100 是否可以同時(shí)使用。
安全性測(cè)試:主要考慮的是sql語句的注入,xss腳本的攻擊,數(shù)據(jù)加密還有就是權(quán)限測(cè)試。
sql語句的注入和xss腳本的攻擊的檢查因?yàn)槭謩?dòng)操作比較麻煩與繁瑣,app我們一般是通過騰訊優(yōu)測(cè)來進(jìn)行測(cè)試的,web界面我們一般是通過appscan進(jìn)行掃描測(cè)試的,把掃描結(jié)果發(fā)給開發(fā)進(jìn)行修復(fù)的數(shù)據(jù)加密主要是考慮在前端輸入的時(shí)候進(jìn)行加密,傳輸過程中進(jìn)行加密,數(shù)據(jù)庫進(jìn)行加密,在服務(wù)日志文件中也是需要加密的。
易用性:主要是把控用戶的體驗(yàn)問題,駕馭需求以外,用戶使用是否方便,好用。
性能測(cè)試:我們通常使用Emmagee去測(cè)試APP的性能,去監(jiān)測(cè)cpu、內(nèi)存、fps等性能指標(biāo)。
網(wǎng)絡(luò)測(cè)試 :分 2G,3G,4G,5G,移動(dòng),聯(lián)通,電信,wifi 網(wǎng)絡(luò)之間組合 網(wǎng)絡(luò)之間的切換,還弱網(wǎng),用fiddler 工具進(jìn)行模擬。
權(quán)限:1-前臺(tái)不能訪問后臺(tái) ;2-不能通過url連接支架訪問;3-后臺(tái)不能直接進(jìn)入界面。
異常測(cè)試 :關(guān)機(jī),重啟,網(wǎng)絡(luò)中斷,服務(wù)器卡死,服務(wù)器重啟。
三 app閃退的可能原因?
APP閃退的原因可能是:
緩存垃圾太多,Android系統(tǒng)的特性,如果長(zhǎng)時(shí)間不清理垃圾文件,會(huì)導(dǎo)致越來越卡,甚至閃退。
運(yùn)行程序太多,導(dǎo)致內(nèi)存不足。
應(yīng)用版本兼容問題,分辨率兼容問題。
APP中訪問網(wǎng)絡(luò)的地方,組件能否正常下載并顯示。
APP的SDK與手機(jī)系統(tǒng)不兼容。
系統(tǒng)升級(jí)后,新版本不兼容老版本的API,返回對(duì)象失敗,報(bào)空指針。
軟件權(quán)限未開放。
四?給你一個(gè)登錄頁面,你要如何測(cè)試?
APP登錄場(chǎng)景大體從以下幾個(gè)方面進(jìn)行:
頁面基本元素的操作。
大量字符,特殊字符,邊界值,必填項(xiàng)校驗(yàn)。
注冊(cè)手機(jī)號(hào)的特殊性驗(yàn)證,注冊(cè)郵箱的格式驗(yàn)證。
密碼大小寫是否敏感,密碼是否加密展示,密碼是否有可見按鈕功能,密碼框能否使用復(fù)制粘貼。
驗(yàn)證碼校驗(yàn):必填項(xiàng),過期,錯(cuò)誤,無網(wǎng)絡(luò)時(shí)獲取驗(yàn)證碼,多次獲取,超過獲取次數(shù),輸入驗(yàn)證碼后,修改手機(jī)號(hào)。
登錄時(shí)與系統(tǒng)的交互:鎖屏,藍(lán)牙,home,后退,橫豎屏,修改字體字號(hào)。
逆向思維:已注冊(cè)賬號(hào)注冊(cè),未注冊(cè)賬號(hào)忘記密碼,未注冊(cè)賬號(hào)登錄,注冊(cè)過程中退出再次注冊(cè)。
輸入法交互,切換輸入法,切換輸入模式,手寫/九宮格。
登錄賬號(hào)的多樣性:多個(gè)賬號(hào)輪流登錄,同一個(gè)賬號(hào)多角色登錄。
第三方登錄驗(yàn)證:賬號(hào)授權(quán),信息正確,取消授權(quán)。
登錄頁面跳轉(zhuǎn),返回,登錄成功及其他頁面跳轉(zhuǎn)。
手機(jī)兼容性測(cè)試:分辨率兼容,系統(tǒng)兼容,系統(tǒng)版本兼容,App版本兼容。
網(wǎng)絡(luò)切換,網(wǎng)絡(luò)斷開,弱網(wǎng)。?
五?測(cè)試過程中遇到app出現(xiàn)crash或者ANR,你會(huì)怎么處理?
APP出現(xiàn)Crash或ANR,可以從以下幾個(gè)方面處理:
可以先把日志過濾出來:adb logcat | findstr xxxxx(過濾日志信息) ;
然后再搜索其中的關(guān)鍵字,比如:exception、crash,看看是哪些方法或者異常導(dǎo)致了問題;
初步定位問題原因后,可以交給開發(fā)人員去具體查找深層原因并修復(fù)。?
六?APP性能測(cè)試主要關(guān)注哪些指標(biāo)?
包體大小:
包體大小能被列為性能指標(biāo),是從APP性能指標(biāo)及運(yùn)營(yíng)兩個(gè)維度考慮的,用戶是更希望包體小的同時(shí)性能要好,有時(shí)它們會(huì)是一個(gè)互相取舍的關(guān)系。
啟動(dòng)時(shí)長(zhǎng):
移動(dòng)應(yīng)用的啟動(dòng)時(shí)間是用戶體驗(yàn)的一個(gè)重要方面,IOS一直建議盡可能的縮短啟動(dòng)時(shí)間,防止用戶不愿意使用它們。對(duì)于瀏覽器而言,由于程序啟動(dòng)時(shí)還會(huì)有教育頁和閃屏的下發(fā),因此啟動(dòng)時(shí)間的獲取顯得尤為重要。
啟動(dòng)時(shí)間分為冷啟動(dòng)時(shí)間和熱啟動(dòng)時(shí)間,所謂的“冷啟動(dòng)”,就是一個(gè)完全沒有運(yùn)行的應(yīng)用的啟動(dòng)時(shí)間,與熱啟動(dòng)(應(yīng)用已經(jīng)在后臺(tái)運(yùn)行,某個(gè)事件將其帶至前臺(tái))相比,由于此時(shí)系統(tǒng)尚未建立緩存,因此冷啟動(dòng)往往要較平時(shí)(熱啟動(dòng))耗費(fèi)更長(zhǎng)的時(shí)間。
內(nèi)存使用:
在Android系統(tǒng)中,每個(gè)APP進(jìn)程除了同其他進(jìn)程共享(shared dirty)外,還獨(dú)用私有內(nèi)存(private dirty),通常我們使用PSS(=私有內(nèi)存+比例分配共享內(nèi)存)來衡量一個(gè)APP的內(nèi)存開銷。移動(dòng)設(shè)備的內(nèi)存資源是非常有限,為每個(gè)APP進(jìn)程分配的私有內(nèi)存也是有限制。一方面我們要合理的申請(qǐng)內(nèi)存使用,以免導(dǎo)致頻繁的GC(垃圾回收機(jī)制)影響性能和大對(duì)象申請(qǐng)發(fā)生內(nèi)存溢出;另一方面,我們要及時(shí)釋放內(nèi)存,以免發(fā)生內(nèi)存泄漏。
CPU占用率:
一般情況下,用主流手機(jī)使用APP20%-40%的CPU占用率算是合理的,當(dāng)然這個(gè)數(shù)值隨著近年來手機(jī)硬件配置的提高,會(huì)略微下降,如果CPU占用率超過80%就非常值得我們?nèi)リP(guān)注了。
圖片處理器每秒刷新的幀數(shù)(FPS):
可用來指示頁面是否平滑的渲染。手機(jī)APP幀率FPS,30-60都可接受,上了60對(duì)于人眼主觀感受差別就不大了。對(duì)于移動(dòng)應(yīng)用開發(fā)而言,并不是FPS越高就一定越好,F(xiàn)PS取決于顯卡,其次是內(nèi)存、CPU,然后是網(wǎng)絡(luò)。故綜合APP其他性能指標(biāo),選擇一個(gè)適合的FPS即可。
電量:
相對(duì)于PC來說,移動(dòng)設(shè)備的電池電量是非常有限的,保持持久的續(xù)航能力尤為重要。另外,android的很多特性都比較耗電(如屏幕,GPS,sensor傳感器,喚醒機(jī)制,CPU,連網(wǎng)等的使用),我們必須要慎重檢查APP的電量使用,以免導(dǎo)致用戶手機(jī)耗電發(fā)熱,帶來不良體驗(yàn)。
流量:
目前的網(wǎng)絡(luò)類型包含2G\3G\4G\5G\wifi,其中還有不同運(yùn)營(yíng)商的區(qū)分,我們?cè)贏PP的使用中經(jīng)常遇到大資源,重復(fù)請(qǐng)求,調(diào)用響應(yīng)慢,調(diào)用失敗等各種情況。在不同的網(wǎng)絡(luò)類型之下,我們不僅要控制流量使用,還需要加快請(qǐng)求的響應(yīng)。另外,對(duì)于需要聯(lián)網(wǎng)的手游來說,部分游戲?qū)Σ煌?lián)網(wǎng)方式的網(wǎng)絡(luò)類型采用了不同的流量消耗策略,主要分為wifi環(huán)境和蜂窩網(wǎng)絡(luò)環(huán)境。所以針對(duì)不同的游戲,我們統(tǒng)計(jì)流量消耗時(shí),可能要連接不同的網(wǎng)絡(luò)進(jìn)行測(cè)試。
七?常見的 adb 命令?
查看當(dāng)前連接的設(shè)備:adb devices
安裝軟件:adb install 路徑\xx.apk
卸載軟件:adb uninstall <包名>
從電腦上發(fā)送文件到設(shè)備:adb push <本地路徑> <遠(yuǎn)程路徑>?
從設(shè)備上下載文件到電腦:adb pull <遠(yuǎn)程路徑> <本地路徑>?
實(shí)時(shí)獲取日志:adb logcat -v time > D:\mylog.log
登錄終端設(shè)備 shell:adb shell
查找包名/活動(dòng)名:adb logcat | findstr START(腳本中, cmp= 后面的值就是 包名/activity 名稱)
啟動(dòng) APP?
adb shell am start -n packageName/activity
關(guān)閉 app :adb shell am force-stop 包名
監(jiān)控 APP 啟動(dòng)時(shí)間 adb shell am start -W packageName/activity
Monkey 命令:adb shell monkey -v -p mypackage 50

以上就是今天的全部?jī)?nèi)容,希望對(duì)大家有所幫助,也希望大家多多留言、點(diǎn)贊、在看、轉(zhuǎn)發(fā)四連愛????支持。?咱們下篇文章見,Bye~??
現(xiàn)在我邀請(qǐng)你進(jìn)入我們的軟件測(cè)試學(xué)習(xí)交流群:【746506216】,備注“入群”, 大家可以一起探討交流軟件測(cè)試,共同學(xué)習(xí)軟件測(cè)試技術(shù)、面試等軟件測(cè)試方方面面,還會(huì)有免費(fèi)直播課,收獲更多測(cè)試技巧,我們一起進(jìn)階Python自動(dòng)化測(cè)試/測(cè)試開發(fā),走向高薪之路。? =