? ? 繼續(xù)附錄2的下半篇...
? ? 4.三擊不中出局,是新的打擊手上場的時候了
? ? 20世紀早期,軟件質(zhì)量的問題顯而易見,為了糾正這些問題,提出了多種方法,如下:
? ? 1)正式方法
? ? 正式方法是一個很好的想法。本質(zhì)上,它將電腦編程等同于解決一個數(shù)學(xué)問題。但首先,軟件開發(fā)人員不會使用它們。其次,使用正式方法的人仍然會寫出有很多缺陷的代碼。
? ? 2)工具
? ? 工具在很大程度上能減輕軟件開發(fā)任務(wù)的痛苦,但是它們不能保證零缺陷。工具在使用正確時很有幫助,但是它們很難掌握而且功能有限。還有,它們自己有缺陷。
? ? 3)流程改進
? ? 最新的關(guān)于控制軟件質(zhì)量問題的嘗試是由流程改進的提倡者開始的。因為軟件開發(fā)是一個技術(shù)問題而流程? 改進卻是一個管理問題,所以它不大可能對質(zhì)量產(chǎn)生多大的影響。
? ? 因此,需要第四種提案,它應(yīng)該很平常,這樣開發(fā)人員可以將其無縫集成到它們正常的設(shè)計模式;它應(yīng)該很直觀,這樣開發(fā)人員會評價它“簡單,不難做嘛!”
? ? 5.軟件測試是藝術(shù)、技巧或?qū)W科?
? ? ?最適合軟件測試書籍的標題應(yīng)該是軟件測試學(xué)(Discipline of Software Testing)?!皩W(xué)科”這個詞能更好地定義我們作為測試人員的工作,并為我們提供一個有用的訓(xùn)練和職業(yè)模式的模型。掌握一門學(xué)科是通過訓(xùn)練來實現(xiàn)的。訓(xùn)練的意思是理解學(xué)科的每一個細節(jié)。
? ? 每個人在訓(xùn)練時應(yīng)該注意:首先,精通軟件測試的測試人員應(yīng)該理解軟件;第二,精通軟件測試的測試人員應(yīng)該理解軟件故障;第三,精通軟件測試的測試人員應(yīng)該理解軟件失效。
? ? 6.恢復(fù)對軟件行業(yè)的尊重
? ? 我們充滿缺陷的軟件創(chuàng)造了多少新的單詞:垃圾郵件、網(wǎng)絡(luò)釣魚、域名欺騙等。
? ? 1)事與愿違的過去
? ? 過去,軟件開發(fā)實踐的重點一直被放在Spec、體系結(jié)構(gòu)和開發(fā)上,它們都位于軟件開發(fā)生命周期的早期部分,因為“質(zhì)量不是測試來的”。最后,我們發(fā)現(xiàn)這種流程失效了,事實上,需求經(jīng)常變化,導(dǎo)致計劃趕不上變化。
? ? 2)尋找更好的方法
? ? 我們學(xué)習(xí)失敗以創(chuàng)建新的開發(fā)流程,我提議停止將缺陷當作一件壞事。因為沒有比直接研究那些使我們的行業(yè)成為工程學(xué)科中笑柄的東西更好的改進方法了。
? ? 3)分析安全漏洞和質(zhì)量問題的流程
? ? 我覺得應(yīng)該做如下的事情:
? ? 第一步,收集我們發(fā)布給用戶的所有缺陷(特別是安全漏洞)
? ? 第二步,分析每一個缺陷,這樣我們可以做到:停止寫出類似的缺陷;更擅長尋找類似的缺陷;明白類似的缺陷發(fā)生時,如何識別它們。
? ? 第三步,在團隊中培養(yǎng)這樣一種文化,每個開發(fā)人員、測試人員或技術(shù)人員都理解我們曾寫過的每一個缺陷。
? ? 第四步,將學(xué)到的內(nèi)容整理成文檔,它也是創(chuàng)建新的方法集的基礎(chǔ),這些方法可以預(yù)防我們再犯那些最糟糕的錯誤。
? ? 可通過質(zhì)問自己寫過的缺陷來完成上述工作:
? ? a)一開始是什么錯誤導(dǎo)致了這個缺陷?
? ? 這個問題的答案將教會開發(fā)人員更好地理解他們在寫代碼時犯下的錯誤。理解錯誤后,開發(fā)小組內(nèi)部形成一套系統(tǒng)知識,這樣進入測試階段的軟件質(zhì)量更高。
? ? b)出現(xiàn)什么樣的失效癥狀時,能警示我們現(xiàn)在存在這個缺陷?
? ? 一般缺陷出現(xiàn)可能由于某種原因沒能被發(fā)現(xiàn),或者被發(fā)現(xiàn)了卻有意不修復(fù)。前者,測試人員可建立起一套關(guān)于如何更好地將缺陷分離出來的系統(tǒng)知識和工具。后者,整個軟對需要對真正重要的缺陷有統(tǒng)一的認識。結(jié)果是發(fā)布給用戶的軟件質(zhì)量更高。
? ? c)哪些測試技術(shù)能找到這個缺陷?
? ? 可在測試系統(tǒng)知識中加入真正能有效找到重要缺陷的測試。
? ? 因為既然我們不可能理解如何正確開發(fā)軟件,那么就讓我們理解自己是如何做錯的,然后停止那樣做。作為結(jié)果的系統(tǒng)知識無法告訴我們應(yīng)該如何開發(fā)軟件,但是它可以告訴我們什么是不該做的。
? ? 至此,附錄2下半篇學(xué)完了,整體感受是,讓我對缺陷有了更深刻的認識,原來缺陷的作用不僅僅是缺陷!
