摘要:雖然很多公司企業(yè)都開(kāi)始重視測(cè)試,明白測(cè)試對(duì)產(chǎn)品質(zhì)量的影響,但能否正確的理解測(cè)試,將是影響測(cè)試活動(dòng)成敗的關(guān)鍵因素。
關(guān)鍵詞:測(cè)試;單元測(cè)試;集成測(cè)試;系統(tǒng)測(cè)試
中圖分類號(hào):TN919.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 17-0000-02
隨著軟件和IT技術(shù)的發(fā)展,測(cè)試工作也被更多的企業(yè)單位所認(rèn)可,有資料顯示,在微軟公司,測(cè)試人員和開(kāi)發(fā)人員的比例可以達(dá)到2:1,這也彰顯出微軟對(duì)測(cè)試工作的重視。但仍有一些單位,對(duì)測(cè)試的理解存在誤區(qū)。
誤區(qū)一:測(cè)試的目的就是要找出軟件或系統(tǒng)中所有的bug,使軟件可以正確執(zhí)行它應(yīng)有的功能。
誤區(qū)二:只有測(cè)試人員才需要做測(cè)試工作,開(kāi)發(fā)人員只管設(shè)計(jì)和編寫(xiě)軟件,然后交給測(cè)試人員測(cè)試就行了。
事實(shí)上,同這些理解正好相反。
1 測(cè)試真正可以達(dá)到的目的
“誤區(qū)一”的觀點(diǎn)是無(wú)法實(shí)現(xiàn)的,比如windows下的文件拷貝功能,這是windows中比較簡(jiǎn)單的一個(gè)功能了,但就是這么一個(gè)簡(jiǎn)單的功能,我們也無(wú)法向“誤區(qū)一”說(shuō)的那樣,找出所有bug,因?yàn)槲覀儾豢赡馨阉械目赡苄远紲y(cè)試到。文件拷貝功能絕不是簡(jiǎn)單的選擇一個(gè)源文件,然后拷貝到目的目錄那么簡(jiǎn)單,有各種各樣的情況場(chǎng)景需要考慮,比如目的目錄中已有同名文件、比如目的目錄所在磁盤(pán)空間不足、比如目的目錄層次過(guò)深超過(guò)windows支持的最大目錄長(zhǎng)度、比如原文件是否允許拷貝、比如目的目錄是否可寫(xiě)、比如當(dāng)前用戶是否有拷貝文件的權(quán)限、比如內(nèi)存不足或CPU忙時(shí)的拷貝、比如其他程序執(zhí)行對(duì)拷貝的影響等等,對(duì)這些情況的考慮已經(jīng)可以設(shè)計(jì)出許許多多的測(cè)試用例,何況還有許多我們想不到的情境,所以,想窮舉測(cè)試一個(gè)功能的所有路徑,找出所有bug是不可能的。這樣的目標(biāo)只會(huì)阻礙測(cè)試人員的思考,引導(dǎo)測(cè)試走向極端。
測(cè)試是假定程序中存在錯(cuò)誤而去執(zhí)行程序來(lái)發(fā)現(xiàn)盡可能多的錯(cuò)誤的行為,當(dāng)然這個(gè)假設(shè)幾乎對(duì)所有軟件都是合理的,沒(méi)有bug的軟件幾乎是不存在的。為什么強(qiáng)調(diào)測(cè)試的目的是找bug,而不是證明軟件中已經(jīng)不存在bug了呢?
因?yàn)檫@會(huì)影響到測(cè)試是否成功:如果測(cè)試的目的是為了說(shuō)明程序中沒(méi)有錯(cuò)誤,測(cè)試人員思維和行為就會(huì)向這個(gè)目標(biāo)靠攏,因而下意識(shí)的選用一些不易暴露錯(cuò)誤的測(cè)試用例。但是,如果我們的目標(biāo)是證實(shí)程序中有錯(cuò)誤,測(cè)試人員就會(huì)選用一些更能暴露錯(cuò)誤的測(cè)試用例。
所以正確理解測(cè)試,對(duì)測(cè)試設(shè)計(jì)、測(cè)試執(zhí)行等測(cè)試活動(dòng)有很大的影響。進(jìn)而決定這會(huì)不會(huì)是一個(gè)有效的測(cè)試活動(dòng)。
2 測(cè)試應(yīng)在什么時(shí)機(jī)如何開(kāi)展
“誤區(qū)二”的觀點(diǎn)是目前很多公司都容易犯的錯(cuò)誤,他們已經(jīng)成立了專門(mén)的測(cè)試團(tuán)隊(duì)(這是好的一面),但將產(chǎn)品質(zhì)量過(guò)多的押寶在系統(tǒng)測(cè)試階段,開(kāi)發(fā)寫(xiě)完代碼后基本不經(jīng)過(guò)什么自測(cè),就將軟件進(jìn)行系統(tǒng)測(cè)試,由于系統(tǒng)測(cè)試的時(shí)間、人力以及測(cè)試工作的特性等因素,這樣系統(tǒng)測(cè)試后的軟件中仍然存在著大量的bug,甚至存在很致命的bug,這將導(dǎo)致發(fā)布軟件的質(zhì)量下降和不穩(wěn)定,而使用戶失去信心。
為什么會(huì)這樣呢?這正是測(cè)試的特性決定的,軟件中的bug是永遠(yuǎn)發(fā)現(xiàn)不完的,并且發(fā)現(xiàn)的越晚,修改的成本就越高,這是微軟公司從二十幾年的實(shí)踐中明白的道理,所以要想得到高質(zhì)量的軟件產(chǎn)品,我們就需要系統(tǒng)的規(guī)劃測(cè)試,讓不同角色的人參與進(jìn)來(lái)。在軟件開(kāi)發(fā)過(guò)程,一般測(cè)試可以分為三個(gè)階段進(jìn)行,它們分別是單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試,三個(gè)活動(dòng)相輔相成相互影響。
單元測(cè)試是對(duì)軟件的基本組成部分進(jìn)行測(cè)試,如模塊、過(guò)程等,其目的是根據(jù)模塊的功能說(shuō)明檢驗(yàn)?zāi)K的正確性。因?yàn)閱卧獪y(cè)試需要了解程序內(nèi)部的設(shè)計(jì)和編碼細(xì)節(jié),所以一般應(yīng)由程序員進(jìn)行測(cè)試,單元測(cè)試主要使用白盒測(cè)試,可以發(fā)現(xiàn)詳細(xì)設(shè)計(jì)和編程時(shí)犯下的錯(cuò)誤,如變量賦值錯(cuò)誤、判斷條件錯(cuò)誤等。
單元測(cè)試是軟件測(cè)試最基本的部分,非常重要,如果單元測(cè)試做不好,后續(xù)的集成測(cè)試和系統(tǒng)測(cè)試將無(wú)法順利進(jìn)行,軟件開(kāi)發(fā)進(jìn)度會(huì)嚴(yán)重延遲或者被迫發(fā)布一個(gè)低質(zhì)量的軟件。
集成測(cè)試是根據(jù)系統(tǒng)的整體流程,將各個(gè)模塊連接起來(lái)進(jìn)行的測(cè)試。集成測(cè)試的主要目的是發(fā)現(xiàn)軟件模塊間的接口錯(cuò)誤,檢查各模塊組成的系統(tǒng)運(yùn)行是否正確,各組成模塊是否合拍。集成測(cè)試通常使用黑盒測(cè)試,也可以加入部分白盒測(cè)試,可以發(fā)現(xiàn)概要設(shè)計(jì)時(shí)犯的錯(cuò)誤,如軟件邏輯錯(cuò)誤、模塊接口錯(cuò)誤等。軟件通過(guò)集成測(cè)試,是可以進(jìn)入系統(tǒng)測(cè)試的前提,對(duì)未通過(guò)集成測(cè)試的軟件進(jìn)行系統(tǒng)測(cè)試,將導(dǎo)致系統(tǒng)測(cè)試顧此失彼,影響測(cè)試的輸出質(zhì)量。
系統(tǒng)測(cè)試將系統(tǒng)硬件、軟件和用戶等視為一個(gè)整體,檢查系統(tǒng)在功能、性能等方面是否有不符合需求說(shuō)明書(shū)的地方,所以系統(tǒng)測(cè)試應(yīng)以需求說(shuō)明書(shū)為測(cè)試依據(jù),站在用戶的角度,通過(guò)不斷的使用和攻擊被測(cè)對(duì)象,盡可能多的找出系統(tǒng)中的bug。系統(tǒng)測(cè)試主要使用黑盒測(cè)試方法,并且可以借助測(cè)試工具等外部力量,來(lái)模擬和攻擊被測(cè)對(duì)象。系統(tǒng)測(cè)試可以發(fā)現(xiàn)設(shè)計(jì)和分析階段的錯(cuò)誤,以及系統(tǒng)性能穩(wěn)定性等方面的錯(cuò)誤,如用戶需求理解錯(cuò)誤、未完全實(shí)現(xiàn)用戶需求、長(zhǎng)期運(yùn)行系統(tǒng)崩潰等。系統(tǒng)測(cè)試需要由專門(mén)的團(tuán)隊(duì)進(jìn)行,一般不建議由開(kāi)發(fā)人員進(jìn)行,因?yàn)殚_(kāi)發(fā)人員對(duì)待自己的程序,就像對(duì)待自己的孩子一樣,會(huì)下意識(shí)的手下留情,而系統(tǒng)測(cè)試需要的是強(qiáng)攻擊性。高效的系統(tǒng)測(cè)試并不是在軟件提交系統(tǒng)測(cè)試時(shí)才開(kāi)始的,那已經(jīng)太晚了。系統(tǒng)測(cè)試需要在需求分析時(shí)就開(kāi)始了解需求,分析測(cè)試需求,并隨著軟件的開(kāi)發(fā)同步進(jìn)行測(cè)試用例設(shè)計(jì),確定測(cè)試方法等。開(kāi)始對(duì)軟件進(jìn)行系統(tǒng)測(cè)試的測(cè)試執(zhí)行階段,只占系統(tǒng)測(cè)試總時(shí)間的一半左右。系統(tǒng)測(cè)試只有和軟件開(kāi)發(fā)同步進(jìn)行,才能更好的理解需求,并且同步的測(cè)試設(shè)計(jì)準(zhǔn)備,也可以大大縮短軟件的發(fā)布周期,并提高測(cè)試的質(zhì)量。
3 結(jié)束語(yǔ)
軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行軟件的過(guò)程,是不能找出軟件中所有bug的,錯(cuò)誤的測(cè)試?yán)砟顣?huì)導(dǎo)致測(cè)試走入歧途,而達(dá)不到提升產(chǎn)品質(zhì)量的目標(biāo)。
測(cè)試活動(dòng)應(yīng)貫穿于產(chǎn)品開(kāi)發(fā)的整個(gè)過(guò)程,合適的人做合適的測(cè)試,正確的進(jìn)行單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試,將使軟件質(zhì)量產(chǎn)生質(zhì)的飛躍。
參考文獻(xiàn):
[1]潘錦平,施小英,姚天昉.軟件系統(tǒng)開(kāi)發(fā)技術(shù)[M].西安:西安電子科技大學(xué)出版社,1997.
[2]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社.2008.
計(jì)算機(jī)光盤(pán)軟件與應(yīng)用2012年18期