首先談?wù)勡浖y試。這可以說是一個非常令人捉摸不定的領(lǐng)域。“應(yīng)該怎樣對我們的產(chǎn)品進行測試?”和“怎樣才算對產(chǎn)品進行了足夠的測試?”等問題,對于不同企業(yè)的不同類產(chǎn)品、同一企業(yè)的不同類產(chǎn)品、或不同企業(yè)的同一類產(chǎn)品,實際操作上都會有很大的不同。
SEI的SW-CMM在它的成熟度第三級的“軟件產(chǎn)品工程”關(guān)鍵過程域中,把軟件開發(fā)周期中不同階段的測試作為實施活動中的關(guān)鍵實踐。(在SW-CMM版本2.0 的討論過程中,曾經(jīng)有過提議,在成熟度第二級設(shè)立一個關(guān)鍵過程域“軟件測試管理”。但在版本2.0 的討論稿C 中,并沒有這樣做。從這里我們也可以看出,SW-CMM本身也是一個人為地制定的“軟件”。)
一般地,基于開發(fā)周期中不同階段對不同對象所進行的測試,可劃分為:
單元測試(unit test ):
由編程的開發(fā)人員自行計劃與完成的,針對單個或相關(guān)聯(lián)的一組程序單元的測試。
組裝測試(inegration test ):
計劃于設(shè)計階段,由開發(fā)人員與測試人員合作完成的,針對結(jié)合起來的不同單元以及它們的接口的測試。
系統(tǒng)測試(system test ):(可認(rèn)為包括“可用性與圖形用戶界面測試”)
測試整個系統(tǒng),以證實它滿足要求所規(guī)定的功能、質(zhì)量和性能等方面的特性。
回歸測試(regression test ):
用于驗證改變了的系統(tǒng)或其組件仍然保持應(yīng)有的特性。
驗收測試(acceptance test ):
測試整個系統(tǒng),以保證其達到可以交付使用的狀態(tài)。
關(guān)于上述各階段的測試的具體內(nèi)容及實現(xiàn)的方法,讀者可參考SW-CMM及有關(guān)軟件工程和軟件測試的書籍。千萬不要停留在只參考SW-CMM,因為該文件只講述要做些什么,而沒有介紹怎樣做。同時,所有的資料中談及的內(nèi)容及方法,都是一般化的。對于一個特定軟件的測試,必須經(jīng)過使用者對通用的測試方法的改變及改進,才能有效和達到高效率。
下面,談?wù)勡浖y試的其他方面的一些問題。
一個被人忽略的軟件測試目的
在談到測試時,許多作者都引用了Grenford J. Myers 就軟件測試目的提出的以下觀點:
1.測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;
2.一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;
3.一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。
這是一種比較狹窄的觀點。作為一個清醒的、縱觀全局的軟件開發(fā)人員或管理者,我們應(yīng)當(dāng)從軟件過程的角度來看測試。
一個被人忽略的軟件測試目的是:測試可以幫助發(fā)現(xiàn)當(dāng)前開發(fā)工作所采用的軟件過程(也是一個“軟件”)的缺陷,以便進行改進。(在以下的討論中,“錯誤”與“缺陷”基本上認(rèn)為代表相同意義。)
SEI的SW-CMM在它的成熟度第三級的“軟件產(chǎn)品工程”關(guān)鍵過程域中,把軟件開發(fā)周期中不同階段的測試作為實施活動中的關(guān)鍵實踐。(在SW-CMM版本2.0 的討論過程中,曾經(jīng)有過提議,在成熟度第二級設(shè)立一個關(guān)鍵過程域“軟件測試管理”。但在版本2.0 的討論稿C 中,并沒有這樣做。從這里我們也可以看出,SW-CMM本身也是一個人為地制定的“軟件”。)
一般地,基于開發(fā)周期中不同階段對不同對象所進行的測試,可劃分為:
單元測試(unit test ):
由編程的開發(fā)人員自行計劃與完成的,針對單個或相關(guān)聯(lián)的一組程序單元的測試。
組裝測試(inegration test ):
計劃于設(shè)計階段,由開發(fā)人員與測試人員合作完成的,針對結(jié)合起來的不同單元以及它們的接口的測試。
系統(tǒng)測試(system test ):(可認(rèn)為包括“可用性與圖形用戶界面測試”)
測試整個系統(tǒng),以證實它滿足要求所規(guī)定的功能、質(zhì)量和性能等方面的特性。
回歸測試(regression test ):
用于驗證改變了的系統(tǒng)或其組件仍然保持應(yīng)有的特性。
驗收測試(acceptance test ):
測試整個系統(tǒng),以保證其達到可以交付使用的狀態(tài)。
關(guān)于上述各階段的測試的具體內(nèi)容及實現(xiàn)的方法,讀者可參考SW-CMM及有關(guān)軟件工程和軟件測試的書籍。千萬不要停留在只參考SW-CMM,因為該文件只講述要做些什么,而沒有介紹怎樣做。同時,所有的資料中談及的內(nèi)容及方法,都是一般化的。對于一個特定軟件的測試,必須經(jīng)過使用者對通用的測試方法的改變及改進,才能有效和達到高效率。
下面,談?wù)勡浖y試的其他方面的一些問題。
一個被人忽略的軟件測試目的
在談到測試時,許多作者都引用了Grenford J. Myers 就軟件測試目的提出的以下觀點:
1.測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;
2.一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;
3.一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。
這是一種比較狹窄的觀點。作為一個清醒的、縱觀全局的軟件開發(fā)人員或管理者,我們應(yīng)當(dāng)從軟件過程的角度來看測試。
一個被人忽略的軟件測試目的是:測試可以幫助發(fā)現(xiàn)當(dāng)前開發(fā)工作所采用的軟件過程(也是一個“軟件”)的缺陷,以便進行改進。(在以下的討論中,“錯誤”與“缺陷”基本上認(rèn)為代表相同意義。)

