好的測試也許不能發現所有的缺陷,但是可以讓我們準確的知道經過測試,我們的程序能夠在什么樣的條件下正確,每次測試我們都能夠提前的預知完全通過測試后的結果。
測試不是為了發現缺陷,而是讓我們更加了解我們的軟件產品。能夠讓我們有效的評估產品的測試,就是好的測試。
另外,對于Bug、缺陷等詞匯最好有自己嚴格的定義,同時對于嚴重等級以及Bug分配規則等,也要有不易產生誤解的定義,才會使測試的效果得到保證。
5. 什么時候測試
我們通常在程序接近完成的時候開始測試;蛘咴诔绦蛴辛穗r形后開始測試。使雛形在不斷的迭代中完善。
從軟件的生存周期看,測試往往指對程序的測試,這樣做的優點是被測對象明確,測試的可操作性相對較強。但是,由于測試的依據是規格說明書、設計文檔和使用說明書,如果設計有錯誤,測試的質量就難以保證。即使測試后發現是設計的錯誤,這時,修改的代價是相當昂貴的。因此,較理想的做法應該是對軟件的開發過程,按軟件工程各階段形成的結果,分別進行嚴格的審查。(《軟件測試的組織與管理》)
測試不是為了我們編出正確的代碼,而是制造出正確的產品,這是有很大不同的。軟件產品的制造周期不只是編碼。我們完全有理由相信,在其他的過程中,同樣會產生很多缺陷和Bug。一個好的測試方案,應該貫穿整個軟件生命周期,而不是將測試排在編碼之后(如經典的瀑布開發)。
同樣,測試前置也是XP( XProgramming )和RUP(Rational Unified Process)的重要思想之一。
我們為何不盡早的發現缺陷呢?(在我參與的幾個項目中,我們都有一套比較完整的評審機制去完成這些提前的測試工作。起到了很好的效果。)如果你問我什么時候需要測試,我會說:“隨時!”
6. 通常的測試方法
自動測試,通常是利用專用的工具軟件或專門為測試編寫的代碼進行的測試。特點是速度快,測試結果準確,對于批量化的測試尤為明顯。同時,測試的過程能夠不斷的重復。測試的流程清晰,每一個步驟都在控制之內,我們清楚的知道測試過程中發生了什么。
缺點是,前期投入較大,為了建立起一個測試架構,必須在前期準備很多工作。且對于部分問題,機器是無法代替人的。
手動測試,恐怕是最直接簡單的測試了。人與機器相比,有更好的邏輯思維能力,對于很多問題,只有人才能給出正確的答案。所以手動測試是不可替代的。
但是對于批量化的測試用例,輸入輸出檢查,壓力測試,算法邏輯檢查等等,人力就顯得過于單薄了。對于大批量的工作,人是十分容易疲倦和出現意外錯誤的。這會使測試過程效率低下且充滿不確定因素。
對需要測試的軟件選擇人工測試還是自動測試就要看工作對于時間、人力、技術以及對穩定性的要求來平衡兩者的比例了。這種情況下,不僅是努力工作就能完成工作的唯一方法了。 “Work Smartly”就顯得非常重要。在ATC的測試組,每個人都不斷地被來自Work Smartly的成就感所激勵,測試工作成為他們展示創造性和智慧的舞臺。(《微軟是怎樣做測試的》——ATC ( Advanced Technology Center,微軟亞洲工程院 ) 測試組相關負責人)
文章來源于領測軟件測試網 http://www.kjueaiud.com/