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