軟體開發與專案管理

對韌體的原始碼使用靜態分析工具時,在不執行程式的情況下最容易找出的問題為下列何者?

  1. A使用者真正需要的功能,從需求定義書中遺漏了
  2. B參照未初始化變數的路徑,或可能存取超出陣列範圍的位置
  3. C量產的部分電路板因焊接不良而使訊號中斷
查看答案與解析

正確答案:B. 參照未初始化變數的路徑,或可能存取超出陣列範圍的位置

靜態分析在不執行原始碼的情況下,檢查語法、控制流程與資料流程,找出參照未初始化的變數、存取超出陣列範圍、可能參照空指標、違反程式撰寫規範(如嵌入式 C 語言使用的 MISRA C)等問題。它也能找出測試不易走到之路徑上的問題,但也會有誤報,因此結果要由人確認。需求遺漏要靠審查或與使用者確認,電路板焊接不良則要靠製造時的檢查或實機測試找出,分析原始碼無法得知。

  • A. 需求遺漏要靠需求定義的審查或與使用者確認來發現,分析程式碼無法得知。
  • B. 正確。檢查控制流程與資料流程,不必執行就能找出。
  • C. 這是硬體的製造不良,要靠製造時的檢查或實機測試找出。
練習這個領域 前往領域頁面

相關計算工具

軟體開發與專案管理的其他題目

  1. 關於黑箱測試的說明,下列何者適當?
  2. 某個只會輸入整數的欄位,接受1以上100以下的值,其他值則顯示錯誤。以等價類劃分切分輸入時,等價類的數量(有效等價類與無效等價類的合計)為下列何者?
  3. 某程式依年齡(0以上的整數)決定入場費:0~17歲為兒童票價,18~64歲為一般票價,65歲以上為敬老票價。為了確認票價類別改變的交界,以邊界值分析選擇的測試值組合,下列何者最適當?
  4. 規格是「溫度在85 ℃以上時發出警告」,但韌體中誤寫成「if (t > 85)」。溫度 t 為整數。下列測試值中,能發現此錯誤的是何者?
  5. temp 與 err 的值可彼此獨立決定。對於處理「if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }」,要滿足敘述涵蓋(所有敘述至少執行一次)所需的最少測試案例數為下列何者?