孫陽(yáng) 孫蒙 戴淑晴
摘要:軟件是計(jì)算機(jī)的靈魂,軟件測(cè)試則是保證軟件質(zhì)量的有效手段,該文主要從軟件測(cè)試的思想、測(cè)試的技術(shù)、測(cè)試存在的問(wèn)題和測(cè)試的發(fā)展趨勢(shì)等方面對(duì)軟件測(cè)試進(jìn)展進(jìn)行研究??偨Y(jié)了軟件測(cè)試的兩條基本準(zhǔn)則,軟件測(cè)試技術(shù)的發(fā)展以及發(fā)展中存在的問(wèn)題,并指出了軟件測(cè)試的發(fā)展趨勢(shì)。
關(guān)鍵詞:軟件測(cè)試;軟件易測(cè)試性;構(gòu)件測(cè)試
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)07-0279-02
計(jì)算機(jī)現(xiàn)在已經(jīng)應(yīng)用到社會(huì)生活的各個(gè)方面,軟件是計(jì)算機(jī)的靈魂,沒(méi)有軟件的計(jì)算機(jī)不能解決實(shí)際生活的各種問(wèn)題。日新月異發(fā)展的社會(huì),使得計(jì)算機(jī)也緊隨其后地飛速發(fā)展,軟件的更新?lián)Q代也在加速。由于軟件應(yīng)用的領(lǐng)域廣泛,軟件的失效將會(huì)帶來(lái)嚴(yán)重的后果,除了可能造成巨大的經(jīng)濟(jì)損失,還可能危及人的生命安全。
既然軟件的質(zhì)量關(guān)系到計(jì)算機(jī)應(yīng)用系統(tǒng)的成敗,那么通過(guò)什么手段能確保應(yīng)用軟件質(zhì)量達(dá)到一定的標(biāo)準(zhǔn)呢?答案是軟件測(cè)試。軟件測(cè)試是保證軟件質(zhì)量的一種有效檢測(cè)手段。軟件質(zhì)量將會(huì)嚴(yán)重關(guān)系到軟件企業(yè)在行業(yè)中的競(jìng)爭(zhēng)力,對(duì)軟件質(zhì)量的重視,意味著軟件測(cè)試的重要性將會(huì)變得突出。
1 軟件測(cè)試的思想
社會(huì)的快速發(fā)展,計(jì)算機(jī)深入社會(huì)的每個(gè)方面,軟件功能也需要更加完善,這將伴隨著軟件開(kāi)發(fā)過(guò)程的復(fù)雜,軟件中的錯(cuò)誤類(lèi)型也會(huì)比原來(lái)增加很多。軟件測(cè)試的存在是為了發(fā)現(xiàn)所開(kāi)發(fā)軟件中可能存在的錯(cuò)誤,而不是為了驗(yàn)證軟件的正確性。軟件測(cè)試的主要思想是測(cè)試的持續(xù)性和測(cè)試的充分性準(zhǔn)則。
軟件的整個(gè)生存周期都應(yīng)該貫穿完整的軟件質(zhì)量保障活動(dòng),軟件質(zhì)量的保障除了需要軟件測(cè)試,還需要綜合運(yùn)用包括評(píng)審、檢查、審查等多種手段,軟件生存期包括定義、開(kāi)發(fā)、應(yīng)用三個(gè)時(shí)期,每個(gè)時(shí)期又可以細(xì)分成幾個(gè)階段。每個(gè)階段分配具體的任務(wù),使得大規(guī)模,具有復(fù)雜結(jié)構(gòu),需要復(fù)雜管理的軟件開(kāi)發(fā)也變得容易控制和管理。軟件測(cè)試的持續(xù)性是指軟件開(kāi)發(fā)的各個(gè)階段對(duì)應(yīng)著不同的軟件測(cè)試工作,軟件測(cè)試貫穿軟件生存期的每個(gè)階段。軟件測(cè)試工作可以劃分成軟件計(jì)劃、設(shè)計(jì)和執(zhí)行三個(gè)階段,這標(biāo)明軟件測(cè)試工作是連續(xù)地進(jìn)行的,這就是軟件測(cè)試的思想之一。
軟件充分性的概念是在1975年由Goodenough 和 Gerhart提出的。最理想的測(cè)試數(shù)對(duì)所有的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,但事實(shí)證明這樣做是不可行的。軟件測(cè)試的充分性就是為了解決這個(gè)問(wèn)題,軟件測(cè)試的充分性是根據(jù)有限多個(gè)軟件測(cè)試數(shù)據(jù)的在軟件運(yùn)行中的行為來(lái)推斷所有測(cè)試數(shù)據(jù)在整個(gè)軟件運(yùn)行中的行為。測(cè)試充分性準(zhǔn)則是判定當(dāng)前數(shù)據(jù)集對(duì)于被測(cè)程序是否充分的準(zhǔn)則。如果不充分,則需要增加測(cè)試數(shù)據(jù),否則,可以結(jié)束當(dāng)前的測(cè)試工作?,F(xiàn)在,測(cè)試充分性一般用測(cè)試覆蓋準(zhǔn)則來(lái)進(jìn)行度量。測(cè)試覆蓋準(zhǔn)則可以分控制流測(cè)試覆蓋準(zhǔn)則和數(shù)據(jù)流測(cè)試覆蓋準(zhǔn)則,語(yǔ)句覆蓋、分支覆蓋、條件覆蓋、判定-條件覆蓋、路徑覆蓋等是控制流測(cè)試覆蓋準(zhǔn)則的一些特例,定值覆蓋、引用覆蓋、定值引用覆蓋等準(zhǔn)則則是來(lái)衡量數(shù)據(jù)流測(cè)試覆蓋準(zhǔn)則[1]。
2 軟件測(cè)試的技術(shù)
軟件測(cè)試發(fā)展的過(guò)去20多年里,軟件測(cè)試領(lǐng)域發(fā)展出了很多的測(cè)試方法和測(cè)試工具,每年涌現(xiàn)出的關(guān)于軟件測(cè)試的論文和報(bào)告數(shù)量也在增加,這都說(shuō)明軟件測(cè)試?yán)碚摵图夹g(shù)研究與發(fā)展得到了極大地重視。軟件測(cè)試過(guò)程和軟件測(cè)試用例是軟件測(cè)試技術(shù)和測(cè)試方法研究中的兩個(gè)主要方面。測(cè)試過(guò)程的有效執(zhí)行影響著測(cè)試工作的開(kāi)展,而高質(zhì)量的測(cè)試用例可以有效地發(fā)現(xiàn)軟件中旬在的缺陷。關(guān)于軟件測(cè)試過(guò)程,研究人員建立了如CMM模型等的一系列軟件測(cè)試過(guò)程模型和自動(dòng)化軟件測(cè)試過(guò)程模型。這些模型只是關(guān)于測(cè)試過(guò)程的概念定義,運(yùn)用到實(shí)際操作中會(huì)出現(xiàn)一些問(wèn)題,所以在實(shí)際應(yīng)用中應(yīng)該注意改進(jìn)測(cè)試過(guò)程,使得測(cè)試過(guò)程能更好地貼合實(shí)際軟件測(cè)試應(yīng)用。好的測(cè)試用例是軟件測(cè)試的靈魂,目前針對(duì)程序級(jí)的測(cè)試用例是相對(duì)比較成熟的,而面向軟件行為的測(cè)試用例的生成方法還在研究中。目前的軟件測(cè)試用例的研究技術(shù)主要在狀態(tài)自動(dòng)機(jī)理論的基礎(chǔ)上進(jìn)行。隨著軟件測(cè)試技術(shù)的研究深入和測(cè)試工具的普及使用,也可以更好地保障軟件測(cè)試的質(zhì)量[6]。
3 軟件測(cè)試存在的問(wèn)題
伴隨著軟件測(cè)試的發(fā)展,不可避免地涌現(xiàn)出一些問(wèn)題,本文主要集中討論面向路徑的測(cè)試數(shù)據(jù)的自動(dòng)生成問(wèn)題和回歸測(cè)試中的問(wèn)題。
本文前面提及的控制流測(cè)試和數(shù)據(jù)流測(cè)試中的覆蓋問(wèn)題,都是面向路徑的測(cè)試數(shù)據(jù)生成問(wèn)題的分支。測(cè)試數(shù)據(jù)的自動(dòng)生成能夠大幅度地減少測(cè)試人員的工作量,測(cè)試的效率和質(zhì)量得到提高,并減少軟件開(kāi)發(fā)的開(kāi)銷(xiāo)。這對(duì)大規(guī)模的軟件項(xiàng)目,將是一筆很客觀(guān)的收益。目前面向路徑的測(cè)試數(shù)據(jù)生成問(wèn)題的解決方法主要分為隨機(jī)法、靜態(tài)法、動(dòng)態(tài)法和試探法。靜態(tài)法只是對(duì)程序進(jìn)行靜態(tài)分析, 并不運(yùn)行軟件;符號(hào)執(zhí)行法是靜態(tài)法的一個(gè)特例;動(dòng)態(tài)方法則是對(duì)程序進(jìn)行實(shí)際運(yùn)行, 它生成測(cè)試數(shù)據(jù)的過(guò)程是確定的, 直線(xiàn)式程序法是動(dòng)態(tài)法的一個(gè)特例;試探法運(yùn)用概率論的思想,雖然也運(yùn)行程序,但生成測(cè)試數(shù)據(jù)的過(guò)程是不完全確定的,遺傳算法和模擬退火算法是典型的試探法。
軟件生存期中,軟件是需要不斷修改的,修改后的軟件需要進(jìn)行回歸測(cè)試?;貧w測(cè)試指的是對(duì)軟件舊代碼進(jìn)行修改后,重新對(duì)軟件進(jìn)行測(cè)試以確保修改不會(huì)引入新的錯(cuò)誤,并且未修改的代碼不會(huì)產(chǎn)生錯(cuò)誤。在某些極端編程方法中,甚至要求每天都進(jìn)行很多次回歸測(cè)試,那么選擇正確的回歸測(cè)試策略來(lái)就變得非常重要?;貧w測(cè)試可能使用已經(jīng)存在的測(cè)試用例集,也可能需要設(shè)計(jì)新的測(cè)試用例。對(duì)于已經(jīng)存在的測(cè)試用例集,可以有選擇性使用其中某些測(cè)試用例,或是使用全部測(cè)試用例。理想的情況是在回歸測(cè)試質(zhì)量得到保證的前提下,有選擇性地使用其中有價(jià)值的測(cè)試用例,因?yàn)檫@可以減少回歸測(cè)試的開(kāi)銷(xiāo)。對(duì)于選擇哪些測(cè)試用例來(lái)進(jìn)行重新運(yùn)行,要對(duì)測(cè)試用力庫(kù)進(jìn)行分析,對(duì)此有學(xué)者提出一種高效運(yùn)算的預(yù)告方法。這種方法可以計(jì)算出在對(duì)于給定程序,這些選擇性回歸測(cè)試技術(shù)的代價(jià)-效力關(guān)系。
4軟件測(cè)試的發(fā)展趨勢(shì)
軟件測(cè)試也在處在不斷的發(fā)展的過(guò)程中,軟件具有已測(cè)試性、構(gòu)件測(cè)試以及Web測(cè)試都是軟件測(cè)試未來(lái)的發(fā)展趨勢(shì)。軟件的易測(cè)試性簡(jiǎn)單來(lái)說(shuō),就是在軟件的設(shè)計(jì)和編碼中已經(jīng)開(kāi)始考慮測(cè)試問(wèn)題,軟件的易測(cè)試性是受到了硬件易測(cè)試性設(shè)計(jì)的啟發(fā),內(nèi)建式測(cè)試、內(nèi)建式自測(cè)試和合約式設(shè)計(jì)是軟件易測(cè)試性設(shè)計(jì)的主要方面。內(nèi)建式測(cè)試方法,就是在程序中加入另外的測(cè)試機(jī)制,方便軟件在測(cè)試模式下工作;內(nèi)建式自測(cè)試方法則是在內(nèi)建式測(cè)試方法的基礎(chǔ)上,引進(jìn)了額外的機(jī)制,可以生成測(cè)試用例。合約是設(shè)計(jì)則是在軟件設(shè)計(jì)過(guò)程中引入相關(guān)的規(guī)定和約束,使得軟件按照某些約束進(jìn)行設(shè)計(jì),減少了軟件設(shè)計(jì)中的錯(cuò)誤,也使得在后期軟件測(cè)試過(guò)程中將會(huì)減少很多測(cè)試任務(wù)。例如前置條件、后置條件、不變式、循環(huán)變式P不變式和軌跡都是合約的常見(jiàn)約束類(lèi)型。在軟件開(kāi)發(fā)過(guò)程中就使用一些測(cè)試策略來(lái)暴露軟件中可能存在的故障就是軟件的易測(cè)試性。
軟件測(cè)試中常出現(xiàn)測(cè)試人員經(jīng)驗(yàn)不足的問(wèn)題,這會(huì)嚴(yán)重影響軟件測(cè)試的效率,而軟件測(cè)試人員的培訓(xùn)是需要相當(dāng)長(zhǎng)的時(shí)間的,軟件測(cè)試復(fù)用可以很好地解決這個(gè)問(wèn)題,軟件構(gòu)件是軟件復(fù)用的技術(shù)基礎(chǔ)[3]。測(cè)試用例構(gòu)件是可以獨(dú)立完成一些軟件測(cè)試功能,可交付使用的封裝的測(cè)試用例。根據(jù)測(cè)試用例的功能力度可以劃分用例構(gòu)件的粒度大小。構(gòu)件粒度與功能粒度大小成正比。符合可復(fù)用測(cè)試用例條件的測(cè)試用例都可以當(dāng)作一個(gè)測(cè)試用例構(gòu)件。構(gòu)建測(cè)試自身固有的特點(diǎn),不能準(zhǔn)確的預(yù)測(cè)構(gòu)件運(yùn)行環(huán)境和使用方式,無(wú)法知道構(gòu)件的代碼和其他知識(shí),只能對(duì)構(gòu)件進(jìn)行黑盒測(cè)試,無(wú)法對(duì)在軟件運(yùn)行中構(gòu)件的內(nèi)部狀態(tài)進(jìn)行檢查,,都使得構(gòu)建測(cè)試存在很多困難[4]。
如今的軟件產(chǎn)業(yè)模式發(fā)生了轉(zhuǎn)變,從產(chǎn)品中心的制造業(yè)變成客戶(hù)中心的服務(wù)業(yè), 萬(wàn)維網(wǎng)也由 2層體系轉(zhuǎn)變?yōu)?3層體系, B2B 也從復(fù)雜專(zhuān)用的連接變?yōu)楹?jiǎn)單通用的連接, Web 服務(wù)能很好地適應(yīng)這些發(fā)展需求。Web 服務(wù)正逐步地受到人們的關(guān)注,Web 服務(wù)的測(cè)試類(lèi)似于黑盒測(cè)試, 不能得到源代碼和相關(guān)設(shè)計(jì)知識(shí),只能得到規(guī)約。對(duì)Web服務(wù)執(zhí)行黑盒測(cè)試和回歸測(cè)試, 僅是規(guī)約提供的信息是遠(yuǎn)遠(yuǎn)不夠的?,F(xiàn)在多個(gè)Web 服務(wù)的組合使用才能來(lái)滿(mǎn)足用戶(hù)的需求,使得Web 服務(wù)組合后的測(cè)試變得更加困難[1]。
5 結(jié)束語(yǔ)
軟件技術(shù)的不斷發(fā)展,也要求軟件測(cè)試的進(jìn)步,構(gòu)件、Web服務(wù)等新技術(shù)的應(yīng)用也為軟件測(cè)試帶來(lái)了新的問(wèn)題和挑戰(zhàn)。軟件測(cè)試的發(fā)展正朝著與軟件開(kāi)發(fā)的前期融合發(fā)展,軟件測(cè)試的工具也在不斷地淘汰更新。軟件測(cè)試目前的技術(shù)和理論水平是制約軟件產(chǎn)業(yè)發(fā)展的瓶頸。雖然國(guó)際社會(huì)上軟件測(cè)試正在飛速發(fā)展,但軟件測(cè)試在我國(guó)還很落后,還需要更多人投入到測(cè)試的研究中。
參考文獻(xiàn):
[1] 單錦輝,姜瑛,孫萍.軟件測(cè)試研究發(fā)展[J].北京大學(xué)學(xué)報(bào),2005,41(1):134-145.
[2] 夏啟明.軟件測(cè)試及評(píng)價(jià)的復(fù)用策略研究及其實(shí)現(xiàn)[D].武漢:武漢大學(xué),2010.
[3] 楊芙清,梅宏,呂建.淺論軟件技術(shù)發(fā)展[J].電子學(xué)報(bào),2002,30(12): 1901-1906.
[4] 楊根興,蔡立志.軟件質(zhì)量保證、測(cè)試與評(píng)價(jià)[M].北京:清華大學(xué)出版社,2007.
[5] 楊芙清,王千祥,梅宏.基于復(fù)用的軟件生產(chǎn)技術(shù)[J].中國(guó)科學(xué),2001,31(4):363-371.
[6] 朱三元.軟件質(zhì)量及其評(píng)價(jià)技術(shù)[M].北京:清華大學(xué)出版社,1990.