摘要:分析了基于框架的軟件產(chǎn)品線測(cè)試方法、當(dāng)前的狀況以及相關(guān)的自動(dòng)化測(cè)試工具,為確保軟件產(chǎn)品線的可靠性以及促使軟件生產(chǎn)在時(shí)間、成本和質(zhì)量方面獲得顯著的改善提供了有力支持。
關(guān)鍵詞:軟件產(chǎn)品線測(cè)試;面向?qū)ο蟮能浖y(cè)試;V模型;自動(dòng)化工具支持
引言
軟件產(chǎn)品線是一套軟件密集型系統(tǒng),它擁有一組能滿足特定需求的公共的、可管理的特性,并且是按預(yù)定義的方式由一組公共的核心資產(chǎn)開發(fā)而來(lái)。軟件產(chǎn)品線可以提供重用軟件資產(chǎn),生產(chǎn)和開發(fā)一組類似系統(tǒng)的方法,使用這種方法可以有效地降低成本、縮短產(chǎn)品面世時(shí)間、提高軟件質(zhì)量。它是軟件產(chǎn)業(yè)向大規(guī)模定制模式發(fā)展的一個(gè)重要途徑和方法。
面向?qū)ο蟮膽?yīng)用框架是一種軟件半成品,是軟件產(chǎn)品線的主干(backbone)??蚣芫哂泻軓?qiáng)的領(lǐng)域特性,是對(duì)問(wèn)題領(lǐng)域共性的抽取(領(lǐng)域分析),它用一種抽象可擴(kuò)展的方式描述產(chǎn)品線中所有產(chǎn)品的共性特征。基于框架的開發(fā)方法把軟件復(fù)用提高到了設(shè)計(jì)層次,提高了軟件生產(chǎn)率。
在軟件開發(fā)過(guò)程中,測(cè)試是一項(xiàng)持續(xù)性活動(dòng),同時(shí)也是一項(xiàng)勞動(dòng)密集型活動(dòng)。傳統(tǒng)的面向?qū)ο蟮臏y(cè)試方法是產(chǎn)品線測(cè)試的基礎(chǔ),因?yàn)檐浖a(chǎn)品線,尤其是框架通常是用面向?qū)ο蠹夹g(shù)來(lái)進(jìn)行設(shè)計(jì)和實(shí)施的。為了確??蚣艿目煽啃?,在應(yīng)用它之前必須進(jìn)行仔細(xì)的檢測(cè)。實(shí)踐中,通常是通過(guò)測(cè)試應(yīng)用程序來(lái)測(cè)試框架,因而難以區(qū)分框架和應(yīng)用程序的編碼錯(cuò)誤。同時(shí),當(dāng)前測(cè)試框架和產(chǎn)品線的方法還非常不成熟,因此對(duì)成熟測(cè)試方法的需求十分迫切,測(cè)試過(guò)程也應(yīng)獲得測(cè)試工具更多的支持。
1 面向?qū)ο蟮能浖到y(tǒng)測(cè)試
1.1面向?qū)ο笙到y(tǒng)的測(cè)試方法與過(guò)程
為了保證軟件的質(zhì)量和可靠性,應(yīng)力求在分析、設(shè)計(jì)等各個(gè)開發(fā)階段,對(duì)軟件進(jìn)行嚴(yán)格技術(shù)評(píng)審。近年來(lái),測(cè)試的作用在很多組織中得以擴(kuò)展,進(jìn)而為軟件可靠性的評(píng)估提供技術(shù)支持。
面向?qū)ο蠹夹g(shù)產(chǎn)生更好的系統(tǒng)結(jié)構(gòu),更規(guī)范的編程風(fēng)格,極大地優(yōu)化了數(shù)據(jù)使用的安全性,提高了程序代碼的使用率,然而正是因?yàn)槊嫦驅(qū)ο蠹夹g(shù)開發(fā)的軟件代碼重用率高,這就需要更嚴(yán)格的測(cè)試,避免錯(cuò)誤的繁衍。
測(cè)試要求有一個(gè)詳細(xì)規(guī)劃,并有一個(gè)明確定義的過(guò)程。例如,面向?qū)ο蟮能浖到y(tǒng)可以根據(jù)圖1所示的v模型進(jìn)行測(cè)試。V模型描述了一些不同的測(cè)試級(jí)別,以及這些級(jí)別所對(duì)應(yīng)的生命周期中不同的階段。如模型圖中所示,左邊是開發(fā)過(guò)程各階段,與此相對(duì)應(yīng)的是右邊上升的部分,即測(cè)試過(guò)程的各個(gè)階段。V模型的價(jià)值就在于它非常明確地標(biāo)明了測(cè)試過(guò)程中存在的不同級(jí)別,并且清楚地描述了這些測(cè)試階段和開發(fā)過(guò)程期間各階段的對(duì)應(yīng)關(guān)系。
在V模型中,單元測(cè)試是基于代碼的測(cè)試,驗(yàn)證可執(zhí)行程序代碼的各個(gè)部分是否已達(dá)到了預(yù)期的功能要求;集成測(cè)試驗(yàn)證了兩個(gè)或多個(gè)單元之間的集成是否正確,并有針對(duì)性地對(duì)詳細(xì)設(shè)計(jì)中所定義的各單元之間的接口進(jìn)行檢查;在所有單元測(cè)試和集成測(cè)試完成后,系統(tǒng)測(cè)試則以客戶環(huán)境模擬系統(tǒng)的運(yùn)行,以驗(yàn)證系統(tǒng)是否達(dá)到了概要設(shè)計(jì)中所定義的功能和性能;最后,當(dāng)技術(shù)部門完成了所有測(cè)試工作后,由業(yè)務(wù)專家或用戶進(jìn)行驗(yàn)收測(cè)試,以確保產(chǎn)品能真正符合用戶業(yè)務(wù)上的需要。
1.2測(cè)試自動(dòng)化和工具支持
近幾年來(lái),許多研究工作者通過(guò)使用自動(dòng)化的測(cè)試工具對(duì)軟件的質(zhì)量進(jìn)行保障研究。到現(xiàn)在為止自動(dòng)化測(cè)試工具已經(jīng)足夠完善了,完全可以應(yīng)用自動(dòng)化測(cè)試工具來(lái)大幅度地提高軟件測(cè)試的效率和質(zhì)量。在使用自動(dòng)化的測(cè)試工具的時(shí)候應(yīng)盡早地開始測(cè)試工作,這樣可以使修改錯(cuò)誤更加地容易和廉價(jià),并且可以減少更正錯(cuò)誤對(duì)軟件開發(fā)周期的影響。
自動(dòng)化支持的一個(gè)關(guān)鍵因素是是否有用于所有測(cè)試交付物和工作產(chǎn)品的中心項(xiàng)目數(shù)據(jù)庫(kù)。這可以指的是測(cè)試管理系統(tǒng),包括用于對(duì)測(cè)試進(jìn)行保存、描述、文檔化和跟蹤,并且對(duì)測(cè)試目標(biāo)和結(jié)果進(jìn)行記錄、跟蹤、評(píng)審的輔助設(shè)施。好的工具可以使得這些信息很容易被項(xiàng)目組獲得,并且提供穩(wěn)定的工作流支持來(lái)簡(jiǎn)化和跟蹤軟件開發(fā)過(guò)程。
根據(jù)V模型,面向?qū)ο鬁y(cè)試可以由從低到高的各類自動(dòng)化測(cè)試工具實(shí)現(xiàn)不同層次的自動(dòng)化,在低層產(chǎn)生測(cè)試驅(qū)動(dòng)和樁模塊,在高層則提供整體的測(cè)試環(huán)境。圖2展示了在v模型的不同層次中,能夠使用的各種不同種類的測(cè)試工具。在模型的左邊,利用測(cè)試設(shè)計(jì)工具,可以在需求確立,概要設(shè)計(jì)以及詳細(xì)設(shè)計(jì)的不同階段設(shè)計(jì)用例,在代碼層,可以利用靜態(tài)分析工具產(chǎn)生單元測(cè)試用例。在模型的右邊,完成實(shí)際的測(cè)試,覆蓋工具用來(lái)評(píng)估單元測(cè)試覆蓋范圍,動(dòng)態(tài)分析工具和調(diào)試工具在單元測(cè)試和集成測(cè)試中使用。在測(cè)試的頂層,用模擬器來(lái)完成系統(tǒng)測(cè)試和確認(rèn)測(cè)試。另外,在模型右邊的每一個(gè)層次,可以用執(zhí)行和比較工具來(lái)執(zhí)行測(cè)試和對(duì)比運(yùn)行結(jié)果與預(yù)期的偏差。
除了商業(yè)化的工具外,測(cè)試自動(dòng)化已經(jīng)引起了學(xué)術(shù)研究領(lǐng)域的廣泛關(guān)注。例如,JUnit作為開源面向?qū)ο筌浖y(cè)試工具對(duì)Java語(yǔ)言編寫的軟件提供了測(cè)試支持,包括從單元級(jí)的測(cè)試(JTest工具)到代碼覆蓋(JCoverage工具),再到性能監(jiān)視(JProfiler工具),JUnit對(duì)V模型的各層都提供了支撐。
2 軟件產(chǎn)品線測(cè)試方法
在軟件產(chǎn)品線測(cè)試時(shí)雖然可以使用傳統(tǒng)面向?qū)ο蟮臏y(cè)試方法,但仍強(qiáng)烈需要一個(gè)明確定義的產(chǎn)品線測(cè)試過(guò)程和方法,包括工具支持。這是因?yàn)楫?dāng)一個(gè)產(chǎn)品線或多個(gè)產(chǎn)品線被測(cè)試時(shí),一些具體問(wèn)題就會(huì)暴露出來(lái)。例如規(guī)模問(wèn)題,因?yàn)楫a(chǎn)品線中的所有應(yīng)用都需要測(cè)試,這就使得產(chǎn)品線的測(cè)試要比單獨(dú)的產(chǎn)品測(cè)試要復(fù)雜得多。產(chǎn)品線測(cè)試的關(guān)鍵在于重用測(cè)試用例和測(cè)試件(Testware,指測(cè)試工作形成的產(chǎn)品),而不是將產(chǎn)品線中的每個(gè)軟件作為一個(gè)單獨(dú)的產(chǎn)品來(lái)進(jìn)行測(cè)試。
2.1軟件產(chǎn)品線測(cè)試
產(chǎn)品線測(cè)試關(guān)系到多個(gè)方面,包括回歸測(cè)試、非完整性項(xiàng)目測(cè)試和有效使用可重用的測(cè)試資產(chǎn)等等?;貧w測(cè)試是用來(lái)確認(rèn)前期可正常工作的組件在面臨某些修改時(shí),是否還能正確運(yùn)行。產(chǎn)品線中的成員在共享許多共性特征的基礎(chǔ)上又各自變化,因此回歸測(cè)試適合于產(chǎn)品線或重用情況。與單個(gè)系統(tǒng)開發(fā)項(xiàng)目不同,測(cè)試也是可以重用于大多數(shù)產(chǎn)品中的活動(dòng),它本身產(chǎn)生町重用的核心資產(chǎn)。建立可重用的測(cè)試資產(chǎn)能使產(chǎn)品線測(cè)試擁有較高的成本效益比。
產(chǎn)品線測(cè)試也需要詳細(xì)規(guī)劃并給出一個(gè)明確定義的過(guò)程,把測(cè)試集成到過(guò)程的每個(gè)階段,以生產(chǎn)出高質(zhì)量的產(chǎn)品。在產(chǎn)品線中組件被大量重用,有效的故障修復(fù)顯得尤其重要。領(lǐng)域工程中的缺陷使風(fēng)險(xiǎn)演變?yōu)閱?wèn)題,因?yàn)榭芍赜觅Y產(chǎn)中的缺陷蔓延到重用它的每個(gè)產(chǎn)品中。然而在軟件產(chǎn)品線方法中,測(cè)試不能很好地區(qū)分領(lǐng)域工程和應(yīng)用工程任務(wù)。雖然根據(jù)V模型進(jìn)行測(cè)試,但I(xiàn)SAPS、CAFE和SEI提出的框架還是不能完全將V模型測(cè)試的各個(gè)階段集成到軟件開發(fā)中去。在實(shí)踐中,將測(cè)試過(guò)程集成到整個(gè)產(chǎn)品線過(guò)程中被證明是最棘手的問(wèn)題。
產(chǎn)品線測(cè)試的主要問(wèn)題可以從兩個(gè)方面來(lái)進(jìn)行論述。在領(lǐng)域工程中測(cè)試核心資產(chǎn)時(shí),測(cè)試者試圖減少應(yīng)用測(cè)試,但卻很難保證軟件在不明確的用例情景下都正常運(yùn)作;產(chǎn)品線中的成員在共享許多共性特征的基礎(chǔ)上又各自變化,測(cè)試者發(fā)現(xiàn)根據(jù)v模型進(jìn)行集成和系統(tǒng)測(cè)試并不可行。而在應(yīng)用工程中,在核心資產(chǎn)和其它應(yīng)用測(cè)試的基礎(chǔ)上,測(cè)試者想使充分測(cè)試特定產(chǎn)品的費(fèi)用最小化,但很難確定哪些已有測(cè)試結(jié)果是可以利用的,哪些產(chǎn)品測(cè)試是必須進(jìn)行的。
2.2當(dāng)前產(chǎn)品線測(cè)試狀況
目前產(chǎn)品線測(cè)試的工作重心主要放在驗(yàn)收和系統(tǒng)測(cè)試上。但由于產(chǎn)品線中大量重用組件,因此它們的低級(jí)別測(cè)試(例如,單元級(jí))也應(yīng)該得到保證。換而言之,當(dāng)前的研究和實(shí)踐主要集中在高級(jí)別的產(chǎn)品線測(cè)試上。假設(shè)傳統(tǒng)的面向?qū)ο蟮臏y(cè)試方法可以不做任何修改就用于產(chǎn)品線測(cè)試過(guò)程,那么這一假設(shè)存在許多疑點(diǎn)。例如,目前尚不清楚將使用哪一種面向?qū)ο蟮臏y(cè)試方法以及如何將之用于產(chǎn)品線測(cè)試,更加不清楚是否還需要新的、具體的產(chǎn)品線測(cè)試方法。
與標(biāo)準(zhǔn)模型相關(guān)的軟件產(chǎn)品線測(cè)試的當(dāng)前工作重點(diǎn)如圖3所示。工作的重點(diǎn)放在需求說(shuō)明和概要設(shè)計(jì)相對(duì)應(yīng)的驗(yàn)收和系統(tǒng)測(cè)試上?,F(xiàn)有的產(chǎn)品線具體測(cè)試方法主要用于這些內(nèi)容。而集成和單元測(cè)試只受到很少的關(guān)注,并且基于這些階段的產(chǎn)品線具體測(cè)試方法目前基本上不存在。正因?yàn)槿绱?,現(xiàn)有高級(jí)別的測(cè)試方法大多數(shù)情況下都沒被使用,產(chǎn)品線中的應(yīng)用仍然用傳統(tǒng)的測(cè)試方法測(cè)試,這就意味著沒有有效地使用可重用的測(cè)試資產(chǎn),而且整個(gè)測(cè)試過(guò)程被反復(fù)應(yīng)用于產(chǎn)品線中的每個(gè)應(yīng)用。
在基于框架的軟件產(chǎn)品線測(cè)試方法中,應(yīng)用框架是產(chǎn)品線的核心,在所有應(yīng)用從它產(chǎn)生之前就應(yīng)該得到很好的測(cè)試。但是以框架為基礎(chǔ)的產(chǎn)品線的實(shí)際測(cè)試中,往往沒有使用產(chǎn)品線的任何信息。例如,諾基亞的移動(dòng)瀏覽器產(chǎn)品線是按照如下要求進(jìn)行產(chǎn)品線測(cè)試的:“產(chǎn)品線測(cè)試的復(fù)雜性要遠(yuǎn)大于單個(gè)軟件產(chǎn)品的測(cè)試。必須測(cè)試在不同情景下的產(chǎn)品線。為了控制測(cè)試的復(fù)雜性,應(yīng)縮減單個(gè)產(chǎn)品的測(cè)試,取而代之的是對(duì)整個(gè)產(chǎn)品線的測(cè)試。這樣才能保證測(cè)試的簡(jiǎn)化以及產(chǎn)品質(zhì)量”。
2.3軟件產(chǎn)品線自動(dòng)化測(cè)試及相關(guān)工具支持
在軟件產(chǎn)品線測(cè)試方法中,工具支持比在傳統(tǒng)面向?qū)ο鬁y(cè)試中更加重要。這是因?yàn)榘瑪?shù)個(gè)相同體系結(jié)構(gòu)的產(chǎn)品線測(cè)試規(guī)模要大于單個(gè)產(chǎn)品測(cè)試。當(dāng)一個(gè)組織有幾個(gè)產(chǎn)品線時(shí),規(guī)模的問(wèn)題就更加突出。產(chǎn)品線的工具支持因使用可重用的測(cè)試資產(chǎn)可以減少費(fèi)用,并且使復(fù)雜的測(cè)試過(guò)程更易于管理。圖2表明能夠應(yīng)用于V模型不同階段的不同類型的測(cè)試工具。在產(chǎn)品線的測(cè)試中,所有這些工具可以而且應(yīng)該使用。
現(xiàn)今有許多成熟的測(cè)試工具,但是產(chǎn)品線和框架測(cè)試缺乏有效的工具支持。通常這些工具也能夠應(yīng)用于產(chǎn)品線的測(cè)試,但它們只適用于像單元測(cè)試這樣低級(jí)別的測(cè)試。在產(chǎn)品線方面,需要詳細(xì)而精確的測(cè)試工具。測(cè)試工具應(yīng)有效地管理可重用的測(cè)試資產(chǎn)。工具支持應(yīng)從測(cè)試執(zhí)行和測(cè)試結(jié)果的分析擴(kuò)展到集成產(chǎn)品線測(cè)試的整個(gè)過(guò)程。
目前赫爾辛基大學(xué)已經(jīng)開發(fā)出RITA工具。RITA是一個(gè)能覆蓋所有領(lǐng)域的測(cè)試支持工具。但是所有設(shè)計(jì)功能并沒有在RITA的第一版中完全實(shí)現(xiàn)。同時(shí),RITA工具的焦點(diǎn)在于支持基于框架結(jié)構(gòu)的低水平的白盒測(cè)試。
3 結(jié)束語(yǔ)
軟件產(chǎn)品線受到越來(lái)越多的關(guān)注和研究,特別是在工業(yè)應(yīng)用領(lǐng)域。但是產(chǎn)品線的測(cè)試所受到的關(guān)注還是很少。產(chǎn)品線需要一個(gè)詳細(xì)規(guī)劃的測(cè)試過(guò)程,它要能夠比較容易地被不同的產(chǎn)品線應(yīng)用領(lǐng)域所采納和運(yùn)用。然而,測(cè)試產(chǎn)品線是一項(xiàng)非常具有挑戰(zhàn)性的工作。因此迫切需要一些成熟的測(cè)試方法和工具。