官术网_书友最值得收藏!

2.1.2 軟件測試的辯證觀點

G.J.Myers的第2個觀點是:測試是為了證明程序有錯,而不是證明程序無錯誤,引出了軟件測試的另外一個爭論。

軟件測試究竟是證明所有軟件的功能特性是正確的,還是相反——對軟件系統進行各種試探和攻擊,找出軟件系統中不正常或不工作的地方?

編者認為,兩者都有一定道理:前者(證明或驗證所有軟件的功能特性是正確的)從質量保證的角度思考軟件測試;后者(證明程序有錯)從軟件測試的直接目標和測試效率來思考。兩者應該相輔相成。在后者的思想背景下,可以認為測試不是為了證明所有的功能都能正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的地方,也就是說,測試的工作就是發現缺陷(Detect Bug),即在軟件開發過程中,分析、設計與編碼等工作都是建設性的,唯獨測試帶有“破壞性”,它想方設法發現軟件所存在的問題。軟件測試就是在這兩者之間獲得平衡,但對于不同的應用領域,兩者的比重是不一樣的。例如,國防、航天、銀行等軟件系統承受不了系統的任何一次失效,因為任何失效都完全有可能導致災難性的損失,所以這些領域強調前者,以保證非常高的軟件質量。而一般的軟件應用或服務,則可以強調后者,質量目標設置為“用戶可接受水平”,以降低軟件開發成本,加快軟件發布速度,有利于市場的擴張。

1.驗證軟件是“工作的”

以正向思維方式,針對軟件系統的所有功能點,逐項驗證正確性。

2.證明軟件是“不工作的”

以反向思維方式,不斷思考開發人員的理解的誤區、不良的習慣、程序代碼的邊界、無效數據的輸入及系統的弱點,試圖破壞系統、摧毀系統,目標就是發現系統中各種各樣的問題。該觀點的代表人物就是上面多次提到的G.J.Myers。他強調,一個成功的測試必須是發現缺陷的測試,不然就沒有價值。

主站蜘蛛池模板: 丹东市| 台东县| 长宁县| 大关县| 磐石市| 西充县| 南和县| 建瓯市| 墨脱县| 额尔古纳市| 六盘水市| 山阴县| 宜阳县| 襄樊市| 辰溪县| 楚雄市| 平武县| 合川市| 上思县| 彭州市| 新闻| 大兴区| 延安市| 成都市| 额济纳旗| 睢宁县| 申扎县| 五大连池市| 明光市| 平定县| 普安县| 平邑县| 鄂尔多斯市| 潼南县| 天气| 安吉县| 贵阳市| 沛县| 天峨县| 泾源县| 黄山市|