- 軟件測試分析與實踐
- 高熾揚主編
- 708字
- 2024-03-22 12:19:08
2.1.2 軟件測試的辯證觀點
G.J.Myers的第2個觀點是:測試是為了證明程序有錯,而不是證明程序無錯誤,引出了軟件測試的另外一個爭論。
軟件測試究竟是證明所有軟件的功能特性是正確的,還是相反——對軟件系統進行各種試探和攻擊,找出軟件系統中不正常或不工作的地方?
編者認為,兩者都有一定道理:前者(證明或驗證所有軟件的功能特性是正確的)從質量保證的角度思考軟件測試;后者(證明程序有錯)從軟件測試的直接目標和測試效率來思考。兩者應該相輔相成。在后者的思想背景下,可以認為測試不是為了證明所有的功能都能正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的地方,也就是說,測試的工作就是發現缺陷(Detect Bug),即在軟件開發過程中,分析、設計與編碼等工作都是建設性的,唯獨測試帶有“破壞性”,它想方設法發現軟件所存在的問題。軟件測試就是在這兩者之間獲得平衡,但對于不同的應用領域,兩者的比重是不一樣的。例如,國防、航天、銀行等軟件系統承受不了系統的任何一次失效,因為任何失效都完全有可能導致災難性的損失,所以這些領域強調前者,以保證非常高的軟件質量。而一般的軟件應用或服務,則可以強調后者,質量目標設置為“用戶可接受水平”,以降低軟件開發成本,加快軟件發布速度,有利于市場的擴張。
1.驗證軟件是“工作的”
以正向思維方式,針對軟件系統的所有功能點,逐項驗證正確性。
2.證明軟件是“不工作的”
以反向思維方式,不斷思考開發人員的理解的誤區、不良的習慣、程序代碼的邊界、無效數據的輸入及系統的弱點,試圖破壞系統、摧毀系統,目標就是發現系統中各種各樣的問題。該觀點的代表人物就是上面多次提到的G.J.Myers。他強調,一個成功的測試必須是發現缺陷的測試,不然就沒有價值。
推薦閱讀
- Unreal Engine Physics Essentials
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- 大學計算機應用基礎實踐教程
- 構建移動網站與APP:HTML 5移動開發入門與實戰(跨平臺移動開發叢書)
- R語言數據可視化之美:專業圖表繪制指南
- SEO智慧
- 秒懂設計模式
- 人人都是網站分析師:從分析師的視角理解網站和解讀數據
- Hands-On RESTful Web Services with Go
- Node Cookbook(Second Edition)
- Linux Shell核心編程指南
- Java Fundamentals
- Learning Docker Networking
- Python入門很輕松(微課超值版)
- Buildbox 2.x Game Development