測試人員代碼走查基礎要點


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM