The Psychology and Economics of Program Testing

The Psychology and Economics of Program Testing

ID:39755418

大小:271.96 KB

页数:10页

时间:2019-07-10

The Psychology and Economics of Program Testing_第1页
The Psychology and Economics of Program Testing_第2页
The Psychology and Economics of Program Testing_第3页
The Psychology and Economics of Program Testing_第4页
The Psychology and Economics of Program Testing_第5页
资源描述:

《The Psychology and Economics of Program Testing》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第二章CHAPTER2測試程式的心理與經濟效益觀點ThePsychologyandEconomicsofProgramTesting對於測試,你可以從許多不同的角度切入,但我想最重要的就是經濟性(economics)觀點,以及人性心理(humanpsychology)的觀點,其議題包括了進行「完整」測試的可能性、該由誰來進行測試較為適合、以及該以什麼樣的心態來進行測試才較容易成功,而不是矇著頭完全只從技術性的觀點來考量。所以,本章先不討論技術,而是先討論心理與經濟效益的觀點。首先,有一件事情相當重

2、要,我必須花一些功夫來加以說明,一旦這件事弄清楚之後,隨之而來的討論都將會變得自然而簡單。這件事就是對「測試」的定義。這裡特別強調定義的重要性,是因為失敗的測試往往肇因於大部份的人對測試的認知完全錯誤,例如:「測試就是用來驗證我們的程式沒有錯誤」、「測試的目的就是用來看看程式有沒有正確地執行」、「測試就是一種過程,使我們有信心說程式真的執行了我們要它做的事」。以上對測試的想法是不正確的,它們甚至與正確的想法完全相反。想想看,測試是為了增進程式的價值(也就是說,測試是要耗費成本的,我們付出了代價當然

3、要得到更棒的程式),這價值可能指的是程式的品質或是可靠度,增進可靠度意指我們要儘可能地找到程式的錯誤並剔除錯誤,根據這個想法,我們不應該只是驗證程式有正確執行,相反的,在心理上,我們應該一開始就假設程式裡頭就隱藏著錯誤(對絕大部分的程式來說,這根本不只是假設,而是事實),以這個假設為出發點,你才會儘可能地找出更多的錯誤。據此,一個合適的「測試」定義是:為找出錯誤而執行程式的過程。Testingistheprocessofexecutingaprogramwiththeintentoffinding

4、errors.聽起來有點微妙難懂,但這對於是否能進行一項成功的測試卻有著深遠的影響,人類的心理通常是高度目標導向的(goaloriented),一旦在內心裡選擇了一個目標,就會在潛意識裡企圖滿足並達成這個目標,所以,如果我們的目標是去驗證程式有正確執行,那麼我們所選擇的測試資料在潛意識裡就會傾向於使程式執行成功,因此找到錯誤的機率將不高,相反地,如果心理上已經認定程式必定有錯誤,那麼我們所設計出來的測試資料就比較會有高度的機率來發現錯誤。後者的心態對測試而言,顯然是比較有價值的。我們在上面對測試所

5、做的定義,其實還隱含了許多的觀念,這些觀念遍佈在這本書中,例如:這樣的定義意指測試是種毀滅性(destructive)的行為,甚至是一種虐待程式的程序,以企圖使程式執行失敗,這可以解釋出發現錯誤為何是如此困難,因為這與一般的人性傾向於建設性(constructive)相違背。另外,這項定義也暗示了測試樣本該如何設計,以及應該由誰來測試程式。還有一個方法可以加強我們對測試的正確觀念,就是,我們來探討一下什麼是「成功的」測試,以及什麼是「失敗的」測試,這兩個字眼是專案管理者常常用來判定測試好壞的字眼,

6、按照字面上的意義,「成功」代表一切OK,而「失敗」代表不符期望、有問題,於是,絕大部分的專案管理者都會把一切運作良好的測試歸類為「成功的測試」,而把發現到錯誤的測試歸類為「失敗的測試」,這就是用錯測試定義的結果。想想看,浪費了大筆的時間和金錢卻什麼錯誤都找不到的測試真的能歸類為「成功」嗎?成功的測試應該是能找到錯誤的測試。就好像病人給醫生看病,醫生也是先診斷、後醫療,而診斷就是一連串的測試,如果測試都正常,不知病因,便無從對症下藥,但病人感到不適卻是事實,因此我們說這個醫生診斷失敗,病人得向更好的

7、醫生求診。好的醫生會一下子找到病人的毛病。那麼,我們通常把程式當病人還是當健康的人來看待呢?另外,對於「測試就是用來驗證我們的程式沒有錯誤」這種說法,相信我,這是不可能的事情(這個問題即將在後面探討),即使是一支小程式都不可能,糟的是,對於不可能的事情,我們通常都不會有把這件事情努力做好的企圖心,這種現象可以舉一個例子來說明,如果我們要求一個人要在15分鐘之內解出一個字謎遊戲(crosswordpuzzle),在前10分鐘,你通常可以觀察到這個人意興闌珊解不了多少字謎,因為反正他怎麼努力似乎也不可

8、能在15分鐘之內完成,如果,我們一開始就給他4個小時,那麼你可能看到的是個充滿鬥志的人,甚至在前10分鐘就解出了大部分的字謎。所以,測試是必須定義清楚所需要做到的程度的,使它成為可行且務實的行動,這樣在心理上才會有正面效果。還有,把測試視為「驗證程式執行了我們所預期它執行的行為」也是不恰當的,因為,程式也有可能執行了我們並不預期它執行的行為。例如第一章的三角形判斷程式,縱使在我們所能想得到的情況中,它都能正確地判斷不等邊三角形、等腰三角形、或是正三角形,但是我們沒有想到的情況呢?恐

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。