測試人員代碼走查基礎要點
阿新 • • 發佈:2017-06-26
異常 業務邏輯 類型 找到 錯誤 都沒有 發生 數據庫連接 有效 測試人員代碼走查基礎要點
代碼走查,是測試人員了解代碼邏輯,進行測試設計的重要環節。並且有很多bug並非需要到運行程序進行測試才能發現。通過合理的代碼走查方法能提前發現相當多的BUG。除常見的業務邏輯與程序邏輯不符外,本文收集了在過往工作中的經常能發現BUG的走查要點,以供參考。
走查要點:一段代碼存在多個副本
[釋義]
相同的代碼段,在程序的不同地方復制和粘貼。
甚至同一項目,復制出多個副本。
[問題表現]
修改好的bug,一直反復出現。
由於存在多個副本,如果代碼段中有bug,就需要修復多個副本。其修復難點在於:如何確定找到所有的代碼副本。如果無法確定修復了所有副本,極易導致漏測。看似減輕工作的復制粘貼給後期維護帶來了極大工作量和風險。
走查要點:初始化對象或返回值為空
[釋義]
在實例化對象時(例如,從數據庫中取出一條訂單數據,實例化一個訂單對象),某些字段字段為空。而後面定邏輯需要使用這個字段時,沒有進行判空。或者在一些遠程調用過程中,返回的對象有可能是空,或者某些字段為空,在後面的使用中,沒有判空。
[問題表現]
空指針異常NullPointerException
走查要點:數據定義被破壞
[釋義]
在處理各種數據時,由於某些數據的定義(類型、長度、必填、範圍及其他性質)被破壞,例如,某接口需要接受三個都為必填項的參數,由於未對是否必填進行校驗,導致數據庫中的數據與預期的定義不符。應盡早檢查數據的定義。
[問題表現]
代碼運行好好的,突然就發生一些問題,之後又沒問題了。完整的數據任務都沒有問題,只有當程序運行到不完整數據時,才會報錯。
走查要點:資源(內存、文件或數據庫連接)未被正確釋放
[釋義]
程序的一些執行路徑沒有完成它們應該做的工作,或者持有不再使用的對象。
[問題表現]
資源未能正常釋放,導致連接被用完、文件打開過多、FGC
走查要點:接口定義不一致
[釋義]
接口定義與實現不一致,導致調用接口出錯。
[問題表現]
當使用某個接口時,處理結果與接口定義的結果不一致,甚至直接報錯異常。
走查要點:消息隊列能否補發消息、對補發消息的處理
[釋義]
生產者發出消息時發生異常,導致消費者無消息可用。需要能夠補發消息。而消費者在處理消息時(或者回調),是否能處理重復的消息(重復的回調通知)。特別是在多線程的情況下,對數據的修改,需要對線程進行分析。
[問題表現]
消費者端無響應
少數數據處理出錯,而大部分都正常。
走查要點:不恰當的日誌
[釋義]
日誌中的敏感信息:卡號、手機號、密碼、cvv、有效期等
關鍵的操作步驟沒有日誌(修改狀態,異常報錯)
日誌量過大,打印無效日誌,導致無法查問題。
[問題表現]
泄漏用戶信息
無法查錯
走查要點:查詢SQL的底線
[釋義]
查詢的sql語句,需要有條件限制,不能無條件的查詢數據庫。常見的約束:時間範圍,數據量限制。
[問題表現]
查詢出的大數據量的結果集,導致數據庫和應用的性能問題。
走查要點:緩存
[釋義]
(1)集中緩存,還是分布式緩存
(2)分布式緩存如何保證緩存間的一致性,不一致時,如何影響流程。
(3)緩存如何與數據庫的數據保持一致性,不一致時,如何影響流程。
(4)如果緩存失效,如何影響流程
[問題表現]
修改了配置,但有的服務器更新了,有的沒更新。
集中式緩存服務掛了,沒有備份,直接查數據庫,導致數據庫壓力過大。
走查要點:系統間調用的保護
[釋義]
同步調用外部系統,必須有超時時間的設置,防止線程池漲滿影響其他業務。考慮用異步調用替代同步調用。
[問題表現]
由於被調用系統的性能瓶頸,導致調用系統的響應也下降。
走查要點:異常處理
[釋義]
異常是否得到明確的定義
是否有未捕獲到異常
捕獲異常後,是否有合適的處理,後續代碼是否能正常執行
[問題表現]
異常未能正確定義,導致問題無法快速定位
未捕獲異常,導致信息泄漏、系統處理異常
未能正確處理異常,導致後續流程錯誤
註明:以上內容摘自網絡
測試人員代碼走查基礎要點