如果有一個(gè)頁(yè)面特別卡頓,設(shè)想一下可能的原因?
面試官想了解:
是否對(duì)該場(chǎng)景進(jìn)行過(guò)測(cè)試
是否有問(wèn)題的排查思路
技術(shù)點(diǎn)
涉及的技術(shù)點(diǎn):
軟件測(cè)試問(wèn)題分析思路
性能測(cè)試
回答
頁(yè)面特別卡頓的原因,這個(gè)題目對(duì)應(yīng)的考察點(diǎn)比較廣泛,有前端性能問(wèn)題,也有對(duì)應(yīng)后端接口性能問(wèn)題。
頁(yè)面請(qǐng)求數(shù)量是否太多
首先,考慮的就是是否當(dāng)前頁(yè)面對(duì)應(yīng)的請(qǐng)求數(shù)太多,導(dǎo)致請(qǐng)求返回的數(shù)據(jù)比較慢。
這時(shí),需要從前后端分別進(jìn)行分析,看下是當(dāng)前頁(yè)面對(duì)應(yīng)的后端接口響應(yīng)的時(shí)間慢,還是前端重復(fù)請(qǐng)求太多導(dǎo)致。
如果是后端某些接口響應(yīng)慢導(dǎo)致,則需要找到對(duì)應(yīng)接口,反饋給后端研發(fā)進(jìn)行優(yōu)化。
如果是前端有大量的重復(fù)請(qǐng)求,則需要反饋給前端研發(fā),在前端頁(yè)面進(jìn)行適當(dāng)?shù)臄?shù)據(jù)緩存,進(jìn)而減少重復(fù)的請(qǐng)求。
頁(yè)面元素太復(fù)雜
對(duì)應(yīng)頁(yè)面資源類標(biāo)簽太多,比如:頁(yè)面的DOM樹(shù)對(duì)應(yīng)的節(jié)點(diǎn)是否太多太長(zhǎng),頁(yè)面是否有太多的圖像及視頻資源的加載,對(duì)應(yīng)頁(yè)面設(shè)計(jì)的太復(fù)雜導(dǎo)致頁(yè)面加載慢,
頁(yè)面數(shù)據(jù)量過(guò)大
當(dāng)前頁(yè)面需要展示的數(shù)據(jù)量過(guò)大,是否需要從業(yè)務(wù)層面需要對(duì)該頁(yè)面進(jìn)行分頁(yè)處理或業(yè)務(wù)拆解。
客觀因素
有可能當(dāng)前網(wǎng)絡(luò)環(huán)境問(wèn)題導(dǎo)致對(duì)應(yīng)頁(yè)面加載過(guò)慢。
內(nèi)存泄漏
首先,給大家說(shuō)一下什么是內(nèi)存泄漏。
對(duì)應(yīng)的內(nèi)存泄露就是由于代碼原因,某些已經(jīng)不再使用的變量或代碼還在占用內(nèi)存,未釋放掉相關(guān)內(nèi)存,其實(shí)就是一種內(nèi)存的浪費(fèi)。
有可能前端有大量的全局變量的數(shù)據(jù)或某些代碼被循環(huán)引用導(dǎo)致。
主線程阻塞
開(kāi)啟一個(gè)字線程對(duì)主線程進(jìn)行監(jiān)控,當(dāng)主線程的運(yùn)行狀態(tài)超過(guò)一定的時(shí)間閾值后,則認(rèn)為主線程卡頓。
總結(jié)
以上為常見(jiàn)的頁(yè)面卡頓的原因,如果是一個(gè)具體的場(chǎng)景,則還需要根據(jù)具體場(chǎng)景來(lái)進(jìn)行判斷。