教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

軟件測(cè)試之APP產(chǎn)品常見(jiàn)BUG及預(yù)防

更新時(shí)間:2018年03月30日15時(shí)51分 來(lái)源:傳智播客 瀏覽次數(shù):

一、界面適配

l 手機(jī)分辨率為1920x7080的高分辨率手機(jī),在調(diào)整手機(jī)字體大小時(shí),會(huì)導(dǎo)致頁(yè)面顯示出現(xiàn)變形;

l 因用戶設(shè)置的特殊字體導(dǎo)致列表的字母條不顯示;

l 某些banner 圖片在部分機(jī)型只能顯示一半;

l 文字或者圖片需要適配不同分辨率的機(jī)型時(shí),建議使用dp方式進(jìn)行開(kāi)發(fā),即使是使用dp,也需要考慮特殊分辨率的機(jī)型顯示;

l 適應(yīng)寬度/適應(yīng)高度/高寬均適應(yīng)的;

l 針對(duì)程序需求,設(shè)定合適的適配機(jī)制。

二、 系統(tǒng)適配

l 調(diào)用高版本API,導(dǎo)致某些機(jī)型進(jìn)入主頁(yè)顯示空白頁(yè)面。

l 調(diào)用高版本API,需要考慮兼容性,開(kāi)發(fā)團(tuán)隊(duì)需要制定程序API調(diào)用規(guī)范。

三、 交互適配1

l 在輸入框操作時(shí),調(diào)出系統(tǒng)輸入法軟鍵盤(pán)后,沒(méi)有有效啟用鍵盤(pán)上的“下一項(xiàng)”、“確定”、“搜索”等按鍵。

l 系統(tǒng)軟鍵盤(pán),在關(guān)閉當(dāng)前頁(yè)面時(shí)沒(méi)有及時(shí)收起軟鍵盤(pán)。

l 需求設(shè)計(jì)過(guò)程中需要考慮輸入法操作鍵的使用細(xì)節(jié),確保所有軟鍵盤(pán)的輸入鍵可使用。

l 設(shè)計(jì)規(guī)范:程序/頁(yè)面設(shè)計(jì)針對(duì)輸入法操作鍵的使用制定規(guī)范。

四、交互適配2

l APP界面的“返回”操作與手機(jī)系統(tǒng)的“返回”按鍵操作效果不一致;或界面未提供“返回”,在無(wú)系統(tǒng)“返回”按鍵的手機(jī)上,無(wú)法返回。

l 設(shè)計(jì)規(guī)范:程序設(shè)計(jì)針對(duì)手機(jī)返回鍵制定使用規(guī)范。

l 在設(shè)計(jì)中要綜合界面需求設(shè)定是否提供“返回”操作。

五、 界面風(fēng)格

l 對(duì)話框標(biāo)點(diǎn)、英文字符出現(xiàn)全角、半角的不統(tǒng)一。

l 對(duì)話框、提示浮動(dòng)框提示語(yǔ)風(fēng)格不同,顯示位置均不同,產(chǎn)品友好度下降。

l 字體和字號(hào)要在app中是不同的風(fēng)格。

預(yù)防方法:語(yǔ)言文字提示規(guī)范。

Ø 全角字符和半角字符都要使用一個(gè)空格分開(kāi)。

Ø 英文和數(shù)字之間要有空格分開(kāi)。

Ø 漢字和英文、數(shù)字要有空格分開(kāi)。

Ø 帶有漢字的話要使用全角字符。

Ø 語(yǔ)言中不要混用全角和半角標(biāo)點(diǎn)。

Ø 字體和字號(hào)要保持統(tǒng)一的風(fēng)格。

六、 性能優(yōu)化1

l 進(jìn)入一些列表,若數(shù)量較多則會(huì)出現(xiàn)卡死。

l 界面顯示對(duì)象數(shù)量較多,某些會(huì)導(dǎo)致頁(yè)面操作卡頓,用戶體驗(yàn)很差。

l 處理大量數(shù)據(jù)時(shí),用戶等待時(shí)間過(guò)長(zhǎng),無(wú)進(jìn)度條提示進(jìn)度。

l 程序?qū)臅r(shí)較多的操作邏輯、判斷邏輯,不放入U(xiǎn)I主線程。

l 對(duì)數(shù)據(jù)庫(kù)記錄較多的操作,可以改成數(shù)據(jù)庫(kù)批量操作,或者調(diào)用批量接口。

l 程序在后臺(tái)處理用戶的輸入,則提供進(jìn)度條或?qū)υ捒颉?/p>

七、性能優(yōu)化2

l 后臺(tái)播放內(nèi)存泄露;

l 程序后臺(tái)運(yùn)行的時(shí)候,手機(jī)一直處于占用CPU的運(yùn)行狀態(tài)。

l 頁(yè)面中的動(dòng)態(tài)效果(如:馬燈滾動(dòng))次數(shù)無(wú)限制,導(dǎo)致界面不斷刷新消耗資源。

l 使用靜態(tài)分析工具或代碼檢查方式檢查內(nèi)容的分配和釋放。

l WakeLock機(jī)制是防回收技術(shù),當(dāng)沒(méi)有播放、下載等操作時(shí),應(yīng)該主動(dòng)關(guān)閉后臺(tái)的喚醒鎖,減少耗電。當(dāng)再次需要使用播放、下載功能時(shí)才去開(kāi)啟喚醒。

l 對(duì)刷新消耗資源類(lèi)操作,要有次數(shù)限制。

八、多服務(wù)、多進(jìn)程

l 某些功能操作后,app 無(wú)法連接網(wǎng)絡(luò)。

l 進(jìn)程被殺死后重啟,通知欄中顯示的信息不正確,沒(méi)有顯示正確的信息。

l app未啟動(dòng),通過(guò)其他第三方app的調(diào)用入口調(diào)用app ,無(wú)法正常使用某些功能。

l 服務(wù)停止后,無(wú)法被啟動(dòng)。

l 程序被手動(dòng)退出后,進(jìn)程仍然在后臺(tái)存在。

l 重新初始化時(shí)獲取值時(shí)讀取到空值,因此賦予一個(gè)默認(rèn)值。

l 服務(wù)重啟被回收重啟時(shí),初始化對(duì)象時(shí)要判斷當(dāng)前是否已存在,若存在則復(fù)用并更新內(nèi)容。

l 任務(wù)獨(dú)立,需要?jiǎng)?chuàng)建不同的服務(wù),生命周期不會(huì)互相影響,服務(wù)獨(dú)立可以避免某個(gè)服務(wù)結(jié)束會(huì)影響到其他功能的正常使用。

總體,對(duì)有啟用多服務(wù)、多進(jìn)程的程序,有需要做好服務(wù)、進(jìn)程的一致性管理。

九、外部調(diào)用

l 某些機(jī)型啟動(dòng)app之后一直在調(diào)用某些外部服務(wù)(通過(guò)后臺(tái)服務(wù)可以看到其他服務(wù)進(jìn)程,退出app后,有些服務(wù)進(jìn)程消失)。

l 某些功能模塊被掃描成存在木馬病毒。

l 安全管家告警程序獲取絕密權(quán)限(通訊錄權(quán)限)。

l 調(diào)用第三方功能作為統(tǒng)計(jì)或者監(jiān)控作用時(shí),需要考慮該sdk是否會(huì)一直喚醒a(bǔ)pp導(dǎo)致耗電或者程序無(wú)法真正關(guān)閉問(wèn)題。

l 調(diào)用外部第三方SDK,要考慮被安全工具(上次有廣告被掃描到病毒)掃描的設(shè)計(jì)需求。

l 及時(shí)關(guān)閉不需要的服務(wù)進(jìn)程,在能滿足需求的情況下,盡量減少使用敏感的系統(tǒng)權(quán)限。

十、網(wǎng)絡(luò)機(jī)制1

a:網(wǎng)絡(luò)重試操作機(jī)制不統(tǒng)一,導(dǎo)致頁(yè)面超時(shí)體驗(yàn)風(fēng)格不統(tǒng)一。

b:某些應(yīng)用頁(yè)面,訪問(wèn)響應(yīng)慢。

a:對(duì)底層網(wǎng)絡(luò)重試機(jī)制做統(tǒng)一封裝后,供上層調(diào)用。

b:固定好每次重試間隔(建議10s重試)和重試總次數(shù)(建議3次)。

c:為使頁(yè)面提示可以區(qū)分網(wǎng)絡(luò)層與業(yè)務(wù)解析層不同錯(cuò)誤,需對(duì)不同錯(cuò)誤類(lèi)型做分類(lèi)的異常處理,并提示用戶原因或讓用戶重試。

d:對(duì)多個(gè)網(wǎng)絡(luò)請(qǐng)求的界面,網(wǎng)絡(luò)接口并行請(qǐng)求有利于提高響應(yīng)速度。

十一、 網(wǎng)絡(luò)機(jī)制2

a:未加載完圖片時(shí)切換到相似tab,切回不再加載圖片。

b:進(jìn)入一個(gè)tab,該頁(yè)面已經(jīng)加載完成,選擇點(diǎn)擊某個(gè)詳細(xì)信息頁(yè)面返回時(shí),頁(yè)面會(huì)閃一下。

a:一個(gè)頁(yè)面有多個(gè)tab頁(yè)時(shí),用戶切換tab可不輕易取消線程,取而代之使用暫停線程,退出頁(yè)面時(shí)才回收清除。

b:?jiǎn)?dòng)負(fù)載分?jǐn)倷C(jī)制的請(qǐng)求,可先保存請(qǐng)求地址,供返回時(shí)判斷避免重復(fù)加載。

十二、網(wǎng)絡(luò)機(jī)制3

a:iOS弱網(wǎng)絡(luò)下獲取不到配置,導(dǎo)致啟動(dòng)卡死。

b:sim卡未激活,無(wú)移動(dòng)網(wǎng)絡(luò),某些功能卡死。

c:斷網(wǎng)下啟動(dòng),登錄狀態(tài)丟失,某些功能信息未正確顯示。

a:?jiǎn)?dòng)邏輯中的網(wǎng)絡(luò)類(lèi)請(qǐng)求不能阻塞UI主線程,即網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)可不即時(shí)響應(yīng)(可在下次啟動(dòng)時(shí)生效)。

b:按鈕的點(diǎn)擊事件不跟接口關(guān)聯(lián),做成異步處理不管是否有返回,都可以正常進(jìn)行點(diǎn)擊操作。

c:離線操作類(lèi),不因與當(dāng)前網(wǎng)絡(luò)狀態(tài)有影響。

十三、下載空間有效性判斷

a:空間不足時(shí),無(wú)法保存信息時(shí),沒(méi)有提示和提前判斷。

b:本地存儲(chǔ)空間不足時(shí),保存文件時(shí)沒(méi)有相應(yīng)提示。

c:空間不足時(shí),文件下載不成功,導(dǎo)致重復(fù)不停下載,浪費(fèi)用戶流量。

a:對(duì)磁盤(pán)剩余空間的判斷和自動(dòng)清理邏輯可以做統(tǒng)一封裝,提供各不同下載業(yè)務(wù)使。

b:可結(jié)合系統(tǒng)硬件配置的10%作為有效剩余空間閥值。

c:針對(duì)手機(jī)內(nèi)外置SDCard,可以在空間不足情況下做分區(qū)切換機(jī)制。

十四、下載文件完整性判斷

a:換膚圖片未下載完,就觸發(fā)換膚操作,導(dǎo)致?lián)Q膚效果錯(cuò)誤。

b:圖片無(wú)法下載完全,導(dǎo)致圖片展示不完整。

c:文件下載完成后,由于網(wǎng)絡(luò)錯(cuò)誤與源文件不符,導(dǎo)致下載后無(wú)法播放。

d:上傳文件功能,目標(biāo)物理文件不存在(界面缺顯示存在),導(dǎo)致傳送文件頁(yè)面一直處于等待中。

a:通過(guò)判斷下載前后文件的size或者文件內(nèi)容簽名,確保下載文件完整后再觸發(fā)文件使用相關(guān)的邏輯。

b:文件傳輸時(shí)檢查文件是否存在,若不存在則視為傳輸失敗,不阻塞后續(xù)傳輸。

十五、阻斷連續(xù)操作

a:連續(xù)快速切換界面,或者頻繁觸發(fā)某些功能操作,導(dǎo)致程序卡死。

b:連續(xù)多次點(diǎn)擊同一張圖片,導(dǎo)致該圖片下載錯(cuò)誤。

a: 使用間隔響應(yīng)、延遲響應(yīng)的方式,達(dá)到多次相同操作只的觸發(fā)一次有效邏輯。

b:操作一次后,可將按鈕等元素設(shè)定為禁用狀態(tài),防止用戶多次點(diǎn)擊和請(qǐng)求。

十六、有效統(tǒng)計(jì)邏輯

a:操作頁(yè)面某些元素,也會(huì)導(dǎo)致發(fā)送頁(yè)面使用的統(tǒng)計(jì)信息。

a:為確保統(tǒng)計(jì)數(shù)據(jù)上傳的有效性,只針對(duì)真正展示的界面做上報(bào)統(tǒng)計(jì),對(duì)于展示不完整、非針對(duì)性展示不做統(tǒng)計(jì)上報(bào)。

十七、程序健壯性判斷1

a:分享到新浪微博(手機(jī)未裝新浪微博客戶端),app崩潰。

b:后臺(tái)接口變更(返回值和類(lèi)型發(fā)生變化),客戶端不兼容新格式判斷,拋出崩潰異常。

c:搜索默認(rèn)操作崩潰;

d:使用外部第三方數(shù)據(jù),出現(xiàn)空數(shù)據(jù)或者非標(biāo)準(zhǔn)格式,則app崩潰。

e:輸入框沒(méi)有限制字符長(zhǎng)度,保存時(shí)導(dǎo)致溢出崩潰。

a:客戶端針對(duì)接口返回需做容錯(cuò)處理,如返回為空、返回?cái)?shù)據(jù)類(lèi)型不一致。

b:任何文本框類(lèi)型的需要限制輸入長(zhǎng)度。

十八、 程序健壯性判斷2

a:某些功能的初始化邏輯沒(méi)有加入啟動(dòng)邏輯,導(dǎo)致功能使用失敗。

b:退出重啟app,無(wú)法自動(dòng)登錄。

a:制定啟動(dòng)加載邏輯規(guī)范。

b:對(duì)于重要的業(yè)務(wù)建議加入啟動(dòng)邏輯,并在業(yè)務(wù)實(shí)際使用時(shí)再根據(jù)狀態(tài)多一層判斷和加載。

c:產(chǎn)品人員需要考慮是否需要保存自動(dòng)登錄功能,并明確告之開(kāi)發(fā)和測(cè)試人員。

十九、 安全機(jī)制

a:在URL中不要帶有明文的用戶信息寫(xiě)代碼的時(shí)候,不要把密碼等敏感的用戶信息明文的顯示在url中。

b:即使要傳遞密碼參數(shù)也不要使用pwd、passpord這樣的參數(shù)名稱來(lái)進(jìn)行傳遞,防止被截獲。

c:要在傳遞參數(shù)的操作中使用NoCache參數(shù),防止將url參數(shù)進(jìn)行緩存。

a:建立標(biāo)準(zhǔn)的數(shù)據(jù)傳輸和命名規(guī)范,并制作一些網(wǎng)頁(yè)開(kāi)發(fā)模板或者規(guī)范供參考。

二十、 日志調(diào)試管理

l 上線以后,調(diào)試日志沒(méi)有關(guān)閉,影響程序性能。

a:日志統(tǒng)一開(kāi)關(guān),編譯正式包需要關(guān)閉。

b:程序界面有入口可以檢查是否關(guān)閉,方便及時(shí)校驗(yàn)。

c:方便定位問(wèn)題,可以做日志動(dòng)態(tài)開(kāi)啟的隱藏開(kāi)關(guān)。

d:方便收集問(wèn)題,可以對(duì)問(wèn)題類(lèi)型做上報(bào)處理(典型如崩潰日志上報(bào))。

本文版權(quán)歸傳智播客軟件測(cè)試學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
 
作者:傳智播客軟件測(cè)試培訓(xùn)學(xué)院
 
首發(fā):http://test.itcast.cn/

0 分享到:
和我們?cè)诰€交談!