测试人员代码走查基础要点
代碼走查,是測試人員了解代碼邏輯,進(jìn)行測試設(shè)計的重要環(huán)節(jié)。并且有很多bug并非需要到運(yùn)行程序進(jìn)行測試才能發(fā)現(xiàn)。通過合理的代碼走查方法能提前發(fā)現(xiàn)相當(dāng)多的BUG。除常見的業(yè)務(wù)邏輯與程序邏輯不符外,本文收集了在過往工作中的經(jīng)常能發(fā)現(xiàn)BUG的走查要點,以供參考。
走查要點:一段代碼存在多個副本
[釋義]
相同的代碼段,在程序的不同地方復(fù)制和粘貼。
甚至同一項目,復(fù)制出多個副本。
[問題表現(xiàn)]
修改好的bug,一直反復(fù)出現(xiàn)。
由于存在多個副本,如果代碼段中有bug,就需要修復(fù)多個副本。其修復(fù)難點在于:如何確定找到所有的代碼副本。如果無法確定修復(fù)了所有副本,極易導(dǎo)致漏測。看似減輕工作的復(fù)制粘貼給后期維護(hù)帶來了極大工作量和風(fēng)險。
走查要點:初始化對象或返回值為空
[釋義]
在實例化對象時(例如,從數(shù)據(jù)庫中取出一條訂單數(shù)據(jù),實例化一個訂單對象),某些字段字段為空。而后面定邏輯需要使用這個字段時,沒有進(jìn)行判空。或者在一些遠(yuǎn)程調(diào)用過程中,返回的對象有可能是空,或者某些字段為空,在后面的使用中,沒有判空。
[問題表現(xiàn)]
空指針異常NullPointerException
走查要點:數(shù)據(jù)定義被破壞
[釋義]
在處理各種數(shù)據(jù)時,由于某些數(shù)據(jù)的定義(類型、長度、必填、范圍及其他性質(zhì))被破壞,例如,某接口需要接受三個都為必填項的參數(shù),由于未對是否必填進(jìn)行校驗,導(dǎo)致數(shù)據(jù)庫中的數(shù)據(jù)與預(yù)期的定義不符。應(yīng)盡早檢查數(shù)據(jù)的定義。
[問題表現(xiàn)]
代碼運(yùn)行好好的,突然就發(fā)生一些問題,之后又沒問題了。完整的數(shù)據(jù)任務(wù)都沒有問題,只有當(dāng)程序運(yùn)行到不完整數(shù)據(jù)時,才會報錯。
走查要點:資源(內(nèi)存、文件或數(shù)據(jù)庫連接)未被正確釋放
[釋義]
程序的一些執(zhí)行路徑?jīng)]有完成它們應(yīng)該做的工作,或者持有不再使用的對象。
[問題表現(xiàn)]
資源未能正常釋放,導(dǎo)致連接被用完、文件打開過多、FGC
走查要點:接口定義不一致
[釋義]
接口定義與實現(xiàn)不一致,導(dǎo)致調(diào)用接口出錯。
[問題表現(xiàn)]
當(dāng)使用某個接口時,處理結(jié)果與接口定義的結(jié)果不一致,甚至直接報錯異常。
走查要點:消息隊列能否補(bǔ)發(fā)消息、對補(bǔ)發(fā)消息的處理
[釋義]
生產(chǎn)者發(fā)出消息時發(fā)生異常,導(dǎo)致消費(fèi)者無消息可用。需要能夠補(bǔ)發(fā)消息。而消費(fèi)者在處理消息時(或者回調(diào)),是否能處理重復(fù)的消息(重復(fù)的回調(diào)通知)。特別是在多線程的情況下,對數(shù)據(jù)的修改,需要對線程進(jìn)行分析。
[問題表現(xiàn)]
消費(fèi)者端無響應(yīng)
少數(shù)數(shù)據(jù)處理出錯,而大部分都正常。
走查要點:不恰當(dāng)?shù)娜罩?/strong>
[釋義]
日志中的敏感信息:卡號、手機(jī)號、密碼、cvv、有效期等
關(guān)鍵的操作步驟沒有日志(修改狀態(tài),異常報錯)
日志量過大,打印無效日志,導(dǎo)致無法查問題。
[問題表現(xiàn)]
泄漏用戶信息
無法查錯
走查要點:查詢SQL的底線
[釋義]
查詢的sql語句,需要有條件限制,不能無條件的查詢數(shù)據(jù)庫。常見的約束:時間范圍,數(shù)據(jù)量限制。
[問題表現(xiàn)]
查詢出的大數(shù)據(jù)量的結(jié)果集,導(dǎo)致數(shù)據(jù)庫和應(yīng)用的性能問題。
走查要點:緩存
[釋義]
(1)集中緩存,還是分布式緩存
(2)分布式緩存如何保證緩存間的一致性,不一致時,如何影響流程。
(3)緩存如何與數(shù)據(jù)庫的數(shù)據(jù)保持一致性,不一致時,如何影響流程。
(4)如果緩存失效,如何影響流程
[問題表現(xiàn)]
修改了配置,但有的服務(wù)器更新了,有的沒更新。
集中式緩存服務(wù)掛了,沒有備份,直接查數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫壓力過大。
走查要點:系統(tǒng)間調(diào)用的保護(hù)
[釋義]
同步調(diào)用外部系統(tǒng),必須有超時時間的設(shè)置,防止線程池漲滿影響其他業(yè)務(wù)。考慮用異步調(diào)用替代同步調(diào)用。
[問題表現(xiàn)]
由于被調(diào)用系統(tǒng)的性能瓶頸,導(dǎo)致調(diào)用系統(tǒng)的響應(yīng)也下降。
走查要點:異常處理
[釋義]
異常是否得到明確的定義
是否有未捕獲到異常
捕獲異常后,是否有合適的處理,后續(xù)代碼是否能正常執(zhí)行
[問題表現(xiàn)]
異常未能正確定義,導(dǎo)致問題無法快速定位
未捕獲異常,導(dǎo)致信息泄漏、系統(tǒng)處理異常
未能正確處理異常,導(dǎo)致后續(xù)流程錯誤
作者:魏增藝 鏈接:http://www.jianshu.com/p/46baf82d1e2e 來源:簡書 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。總結(jié)
以上是生活随笔為你收集整理的测试人员代码走查基础要点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的正则表达式 re
- 下一篇: .Net下几种日志管理方法