- 軟件測試的藝術(原書第3版)
- (美)Glenford J.Myers Tom Badgett Corey Sandler
- 616字
- 2021-01-14 16:50:44
3.3.5 控制流程錯誤
1.如果程序包含多條分支路徑,比如有計算GO TO語句,索引變量的值是否會大于可能的分支數量?例如,在語句中,i的取值是否總是1、2或3?
2.是否所有的循環最終都終止了?應設計一個非正式的證據或論據來證明每一個循環都會終止。
3.程序、模塊或子程序是否最終都終止了?
4.由于實際情況沒有滿足循環的入口條件,循環體是否有可能從未執行過?如果確實發生這種情況,這里是否是一處疏漏?例如,如果循環以下面的語句作為開頭:
當NOTFOUND初始時就為假,或者x大于z時,情況會如何呢?
5.如果循環同時由迭代變量和一個布爾條件所控制(如一個搜索循環),如果循環越界(fall-through)了,后果會如何?例如,偽指令循環以開頭,如果NOTFOUND永不為假,會發生什么結果呢?
6.是否存在“僅差一個”的錯誤,如迭代數量恰恰多一次或少一次?這在從0開始的循環中是常見的錯誤。我們會經常忘記將“0”作為一次計數。舉例來說,如果想編寫一段Java代碼執行10次循環,下面的語句是錯誤的,因為它執行了11次:
正確的應該是執行10次循環:
7.如果編程語言中有語句組或代碼塊的概念(例如do-while或{……}),是否每一組語句都有一個明確的while語句,并且do語句也與其相應的語句組對應?或者,是否每一個左括號都對應有一個右括號?目前的大多數編譯器都能識別出這些不匹配的情況。
8.是否存在不能窮盡的判斷?舉例來說,如果一個輸入參數的預期值是1,2或3,當參數值不為1或2時,在邏輯上是否假設了參數必定為3?如果是這樣的話,這種假設是否有效?
推薦閱讀
- C語言程序設計實踐教程(第2版)
- 算法精粹:經典計算機科學問題的Python實現
- 云原生Spring實戰
- Linux網絡程序設計:基于龍芯平臺
- Lua程序設計(第4版)
- Python完全自學教程
- Modern JavaScript Applications
- Responsive Web Design by Example
- 蘋果的產品設計之道:創建優秀產品、服務和用戶體驗的七個原則
- Django 3.0入門與實踐
- Python語言科研繪圖與學術圖表繪制從入門到精通
- Redmine Cookbook
- Web前端開發技術:HTML、CSS、JavaScript
- 從零開始學Python大數據與量化交易
- HTML5與CSS3權威指南