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