天天看點

【軟體測試】3、代碼檢查與Code Review1、代碼檢查2、代碼走查

對于一家技術研發流程完善的技術公司來說,代碼審查都是必不可少的一部分。雖然大部分代碼審查工作都是研發團隊的工程師完成,廣義上講,代碼審查也是軟體測試的一部分。這與大部分人對軟體測試的觀念有所不同,他們可能認為軟體測試的唯一方法是用計算機執行代碼。實際上,使用計算機執行的軟體測試隻是傳統的測試方法,而軟體測試的新觀念認為在進行傳統測試之前,代碼人工審查也是非常必要的。

代碼檢查通常以一個小組為機關,主要的目的在于發現代碼中出現的錯誤以及不良風格,主要有:

(1)資料引用錯誤:

①使用了未初始化和未指派的變量;②數組下标越界;③數組下标非正整數;④“虛調用”,即引用了非法記憶體;⑤按照錯誤的資料類型引用記憶體資料;⑥資料類型與引用它的結構不比對;⑦記憶體尋址錯誤;⑧基礎存儲結構錯誤;⑨跨過程的結構定義錯誤;⑩數組或字元串存在下标邊界引用錯誤(特别是第一個和最後一個);⑪類的繼承需求沒有滿足。

(2)資料聲明

①使用了未聲明的變量;②變量聲明的屬性錯誤;③變量在聲明時初始化錯誤;④變量的長度和資料類型錯誤;⑤變量的初始化與存儲空間類型不一緻;⑥變量名稱過于相似。

(3)運算錯誤

①運算的變量之間資料類型不一緻;②存在相同資料類型、不同字長的變量之間的運算;③被指派的變量資料類型小于右側表達式的傳回結果的資料類型;④存在混合模式的運算;⑤表達式運算結果存在溢出;⑥存在用0除;⑦計算進制錯誤;⑧變量的值超出實際意義;⑨操作符優先級判斷錯誤;⑩整數運算邏輯錯誤。

(4)比較錯誤

①存在不同資料類型的比較;②混合模式比較中類型轉換規則錯誤;③比較運算邏輯不正确,尤其注意“等于”的情況;④bool表達式所叙述的内容是否正确;⑥浮點變量比較錯誤;⑦邏輯運算優先級錯誤;⑧使用了編譯器不接受的寫法。

(5)流程控制錯誤

①含有潛在的非法分支;②存在死循環的可能;③存在從來沒有執行的循環體;④循環越界;⑤循環次數多一次或者少一次,常常因為≥和>、≤和<的差別造成;⑥do和while不比對;⑦代碼塊“{”和“}”不比對;⑧未設定預設的判斷分支。

(6)接口錯誤

①形參與實參數量不比對;②形參與實參的資料類型不比對;③形參和實參的量綱不比對;④原本輸入參數的值被改變;

(7)輸入輸出錯誤

①檔案聲明屬性錯誤;②檔案打開屬性錯誤;③打開檔案的記憶體空間不足;④使用了未打開的檔案;⑤檔案使用過後未關閉;⑥未處理判斷檔案結束的條件;⑦未處理檔案打開失敗的情況。

(8)其他檢查

①程式出現警告;②程式未檢查輸入的合法性;③程式遺漏了某些功能。

代碼走查主要考察代碼的運作流程。測試者使用書面的測試用例進行推演,即使用測試資料沿程式的邏輯結構運作一遍并記錄程式的狀态。

繼續閱讀