專利名稱:來自局部設(shè)計模型的軟件測試案例生成的制作方法
技術(shù)領(lǐng)域:
本公開涉及關(guān)于局部設(shè)計模型的用于軟件代碼的測試的測試案例的自動生成。
背景技術(shù):
存在有用于測試實現(xiàn)了開發(fā)中的軟件的套件的編程代碼的多種自動化方式。基于模型的測試(MBT)是ー種特別有用的“黑匣子”軟件測試方式。MBT涉及使用高層次狀態(tài)機或其他實施代碼的合適模型的測試案例的自動生成。輸入信號被施加至模型的邊界,且模型的響應被緊密地觀察。等同的代碼被測試以確定該代碼是否提供和模型相同的輸入/輸出序列。輸入域的相對寬的覆蓋可通過使用傳統(tǒng)的MBT技術(shù)實現(xiàn),而不需要大量的測試案例的手動生成。對于傳統(tǒng)的MBT方法,模型的輸入/輸出(I/O)邊界必須匹配正在測試的軟件代碼的I/O邊界。但是,在實踐中,高層次模型趨向于為局部的或甚至不存在,因此使得傳統(tǒng)的MBT方法不夠最優(yōu)。該模型邊界不一致的原因可以是不同的。例如,軟件可隨時間經(jīng)過而累積地開發(fā)出,其中一些編程團隊創(chuàng)建軟件代碼的不同部分。在另ー些情形中,軟件編程員可能直接開始寫代碼,而沒有首先對軟件建摸。因此,僅總體代碼中的一部分可能具有相應的模型。在汽車エ業(yè)和具有大型、分散的使用不同軟件的主機的制造設(shè)備的其他行業(yè)中,軟件的不同部分可能由不同的供應商提供。全部這些原因可能結(jié)合,以使得傳統(tǒng)的MBT方法除了最理論化的應用之外的全部應用受挫。
發(fā)明內(nèi)容
因此,本文公開了ー種方法,用于關(guān)于局部設(shè)計模型的用于軟件實施代碼的測試的測試案例的自動生成。實施軟件的邊界上的輸入-輸出(I/o)信號可不同于局部模型邊界處的I/o信號。傳統(tǒng)的MBT技術(shù)不能在這樣的情形中有效地使用。信息被如本文所述地從軟件和局部模型(ー個或多個)兩者中獲取,用于產(chǎn)生需要的測試案例。產(chǎn)生的測試案例確保了基于局部模型的結(jié)構(gòu)的一定質(zhì)量的覆蓋指標。以這樣的方式,可使用此處公開的方法和系統(tǒng)來確定產(chǎn)生的測試套件的質(zhì)量。特別地,本文中公開ー種方法,用于關(guān)于具有不同于SUT代碼的邊界的邊界的局部設(shè)計模型(PDM)的測試中軟件(SUT代碼)的測試。該方法包括記錄ー組輸入信息,包括SUT代碼、PDM和限定了需要數(shù)目的測試案例的覆蓋標準。該方法還包括經(jīng)由主機識別SUT中對應于PDM的I/O邊界信號的ー組變量。繼而使用SUT、PDM和該組變量提取滿足覆蓋標準的一組測試案例。可使用主機來使用提取的該組測試案例來測試SUT代碼。提取ー組測試案例可包括從SUT代碼產(chǎn)生初始的ー組測試案例,且繼而測量初始的該組測試案例在PDM上的覆蓋。該方法還可包括在PDM水平上產(chǎn)生附加的一組測試案例,且繼而使用正向/反向傳播或基于啟發(fā)的導向技術(shù)將具有相應的約束函數(shù)的附加的該組測試案例映射至SUT代碼的邊界。可隨后使用主機來求解相應的約束函數(shù),以產(chǎn)生測試案例的其他部分,且獲得關(guān)于SUT的完整或匹配測試案例。
用于關(guān)于PDM測試SUT的系統(tǒng)包括主機和存儲器。該主機接收和記錄輸入組,包括SUT、PDM和限定了需要數(shù)目的測試案例的覆蓋標準。存儲器記錄用于測試SUT的處理指令。主機配置為執(zhí)行該處理指令以識別對應于PDM的I/O邊界信號的SUT中的變量,并提取測試案例。該測試案例使用SUT、PDM或該組變量滿足覆蓋標準。當結(jié)合附圖時,上述特征和優(yōu)勢從下文中用于實施本發(fā)明的最佳模式的詳盡描述中是輕易地明顯的。
圖1是用于產(chǎn)生用于關(guān)于局部設(shè)計模型或模塊的軟件實施代碼的測試的測試案例的系統(tǒng)的不意圖。圖2是軟件實施代碼和局部模型或模塊的輸入/輸出(I/o)信號和邊界的示意性流程圖。圖3是描述本方法的實施例的流程圖。
具體實施例方式參見附圖,其中相同的附圖標記在若干幅附圖中指示相同或相似的構(gòu)件,系統(tǒng)10在圖1中示意地示出。本系統(tǒng)10配置為自動產(chǎn)生用于軟件實施代碼(即測試中的軟件(SUT)15)關(guān)于下文中所述的局部設(shè)計模型(PDM)的測試的測試案例。在被完全測試和驗證后,SUT 15可被最終加載到相應的裝置20的存儲器中。該裝置20可為任意機械、電、或電動機械系統(tǒng),例如車輛用剎車系統(tǒng)或?qū)⑦\行軟件作為其操作的一部分的任意其他的車輛/非車輛系統(tǒng)或裝置。裝置20因此包括適于執(zhí)行該處理指令、或至少和提供該功能的分立裝置通信的處理器30??砂ň€路、通信端ロ、端子、和/或其他合適的數(shù)據(jù)采集點的數(shù)據(jù)端ロ 25存在于裝置20中,且配置為按需要輸出一組輸出信號23。裝置20可(作為其普通功能的常規(guī)部分)接收ー組輸入信號13,且響應于其產(chǎn)生該組輸出信號23,或以隨著裝置20的內(nèi)部操作變動的方式產(chǎn)生該組輸出信號23。例如,根據(jù)上述的剎車系統(tǒng)示例,輸入信號13可為油門水平和制動水平。前者可通過測量加速器踏板(未示出)的應用水平檢測到,而后者可通過測量制動器踏板(也未示出)的應用水平而獲知。此處的輸出信號23可通過非限制性示例的方式代表車倆的可變速度。自然,裝置20的其他實施例可使用不同的輸入和輸出信號,其中輸入/輸出信號的數(shù)量隨裝置20的設(shè)計和用途而變動。系統(tǒng)10可包括配置為執(zhí)行實現(xiàn)本方法100的處理指令的服務(wù)器或主機12,其示例性實施例參照圖3在下文中示出。在執(zhí)行該處理指令時,系統(tǒng)10作為整體自動產(chǎn)生用于測試用于SUT15的軟件實施代碼的測試案例,該SUT在測試后可安裝在裝置20中,如虛線所
/Jn o系統(tǒng)10經(jīng)由主機12產(chǎn)生關(guān)于PDM16的測試案例。傳統(tǒng)的基于模型的測試(MBT)方法不能夠充分地處理這樣的局部設(shè)計模型,這部分地是由于上述的邊界不一致。在ー些實施例中,主機12可布置為和裝置20通信,如雙箭頭11所示。這樣的實施例可允許裝置20的周期性在線測試,以確保加載的軟件的正確運行。
圖1中的系統(tǒng)10可具有一個或多個處理器22和存儲器24。存儲器24可實現(xiàn)為非易失性或易失性介質(zhì)。非易失性介質(zhì)可示例性地包括光盤或磁盤以及其他永久存儲器。示例性易失性介質(zhì)可包括動態(tài)隨機存取存儲器(DRAM),其可構(gòu)成主存儲器。存儲器的實施例的其他示例包括軟盤、柔性盤、或硬盤、磁帶或其他磁性介質(zhì)、CD-ROM、DVD、和/或任意其他光學介質(zhì),以及諸如閃存的其他可能的存儲裝置。存儲器24可包括任何參與提供數(shù)據(jù)或計算機可讀指令的非瞬時性/有形介質(zhì)。主機12可包括執(zhí)行本方法100所需要的任何其它需要的硬件和軟件構(gòu)件。例如,主機12可包括高速時鐘、摸/數(shù)(A/D)電路、數(shù)/摸(D/A)電路、和任何需要的輸入/輸出(I/O)電路、I/O裝置、和通信接ロ,以及信號調(diào)節(jié)和緩沖電子裝置。圖1中示出的主機12配置為接收輸入組14并將該輸入組14記錄在存儲器24中。輸入組14可至少包括SUT 15,PDM 16和測試覆蓋標準17。實施本方法100的測試產(chǎn)生エ具50提供如下文中參照圖2和圖3所述的測試生成能力。即,通過處理輸入組14,主機12可使用工具50來提取輸出組18,其中輸出組18形成用于測試SUT 15的特定的一組測試案例或目標。參見圖2,基本邏輯流程圖描述了隨局部模型(高層次模型)(例如圖1中的PDM16)產(chǎn)生的邊界條件。此處,沒有建立圖1的SUT 15關(guān)于高層次模型的一致性的有效的方式,也沒有確定各個測試場景或目標關(guān)于該高層次模型的測試覆蓋程度的有效的方式。即,圖1的PDM 16對應于的SUT 15的部分可表示為具有邊界43的局部模型代碼160。圖1中示出的SUT 15的SUT代碼150具有不同的邊界33。引導到邊界33的輸入信號32的值產(chǎn)生來自SUT代碼150的輸出信號34中的值。由于相應的SUT代碼150和局部模型代碼160的邊界33和43之間的差異,至局部模型代碼160的輸入信號42的值可產(chǎn)生來自局部模型代碼160的輸出信號44中不同的值,該值不同于SUT代碼150的輸入和輸出信號32和34的各個值。圖1中的本系統(tǒng)10因此從SUT代碼150產(chǎn)生初始的ー組測試案例,并登錄對于初始的該組測試案例的局部模型代碼160上的邊界值。由主機12登錄的值被在PDM 16中使用,以測量由初始的該組測試案例獲得的覆蓋。如上所述,系統(tǒng)10識別SUT代碼150中的局部模型代碼160邊界,并實現(xiàn)邊界43的該登錄能力。圖1中的主機12致カ于關(guān)于圖1中示出的具體覆蓋標準17的完全測試覆蓋。因此,為了實現(xiàn)完全測試覆蓋,圖1中的主機12也在PDM 16的層次上產(chǎn)生附加的測試案例,并將這些測試案例映射回SUT代碼150的邊界33,例如使用正向/反向傳播技術(shù)和/或啟發(fā)導向技術(shù)。來自PDM 16的測試案例可為邊界43的值。邊界43的值可繼而被正向/反向傳播至SUT代碼150的邊界33。傳播或?qū)蚣夹g(shù)的使用在此處被認為是對局部模型問題的解決方案。但是,該技術(shù)的實際方法將由本領(lǐng)域技術(shù)人員方便地理解。這些技術(shù)的詳盡的解釋因此出于簡明的目的在此處被省略。參見圖3,本方法100的示例性實施例以步驟102開始。如上所述,用于執(zhí)行下列步驟中的每ー個的任意基礎(chǔ)處理指令可編程到圖1中的主機12中,并在軟件測試和驗證過程期間自動地執(zhí)行。在步驟102處,圖1中的主機12接收輸入組14。輸入組14至少包括實現(xiàn)了 SUT15、PDM 16和覆蓋標準17的實施軟件或代碼。主機12繼而將輸入組14記錄在存儲器24中。PDM 16可使用各種商用建模方案,諸如IBM 的Rationa膽Rhapsody 事先產(chǎn)生。方法100隨后可繼續(xù)至步驟104。在步驟104處,主機12繼而標識對應于SUT代碼150中的PDM 16的局部模型代碼160和局部模型代碼160的I/O邊界信號。步驟104提供了 SUT15的“白匣子”類型的視圖,該術(shù)語在本領(lǐng)域中已知,且因此包括訪問SUT15的所有內(nèi)部,例如在SUT 15中使用的控制變量以及其相應的名稱。在I/O信號已經(jīng)被恰當?shù)赜成浜?,方?00前進至步驟106。在步驟106處,主機12繼而從SUT15的代碼中提取一些測試案例。步驟106可包括對于預定義的迭代次數(shù)以隨機輸入模擬代碼。在主動地模擬時,主機12可同時采集或登錄對應于PDM 16的局部模型代碼的I/O值(即圖2中示出的局部模型代碼160的輸入信號42和輸出信號44)。方法100隨后可繼續(xù)至步驟108。在步驟108處,主機12使用來自步驟106的登錄輸入模擬圖1中的PDM16,并將測得的輸出值和期望的值(例如使用圖1中的裝置20的校準數(shù)據(jù)事先記錄在存儲器24中的值)進行比較。步驟108還可包括在以登錄的輸入的PDM 16的模擬期間測量結(jié)構(gòu)覆蓋,例如當PDM 16被實現(xiàn)為有限狀態(tài)模型時通過確定關(guān)于PDM 16的各種狀態(tài)轉(zhuǎn)換。在步驟110處,主機12確定產(chǎn)生為圖1中的輸出組18的測試案例是否提供關(guān)于相同附圖中示意地示出的覆蓋標準17的PDM 16的100%測試覆蓋。如果實現(xiàn)了 100%覆蓋,方法100行進至步驟112。如果關(guān)于覆蓋標準17實現(xiàn)了小于100%的覆蓋,則方法100前進至步驟114。在步驟112處,主機12返回由圖1中輸出信號18代表的測試案例,例如通過將其記錄在主機12的存儲器24中。主機12可隨后執(zhí)行關(guān)于SUT 15的需要的控制動作,例如通過針對至裝置20的操作公開來驗證SUT 15。方法100在該點處結(jié)束。在步驟114處,已經(jīng)在步驟110處確定實現(xiàn)了小于100%的覆蓋,圖1的主機12標識PDM 16中任何未覆蓋的測試案例或目標,并前進至步驟116。在步驟116處,主機12運行以自動產(chǎn)生附加的測試數(shù)據(jù),以覆蓋PDM16的這些未覆蓋的目標。用于獲得完整測試套件的兩個示例性方法包括基于規(guī)范方法的方法(normalmethods-based method)以及基于啟發(fā)的導向技術(shù),以動態(tài)地近似未被初始的該組測試案例覆蓋的任意測試案例的表示或函數(shù)。在其中,通過非限制性示例的方式,基于規(guī)范方法的方法可包括在上文中參照圖2間接提到的正向傳播或反向傳播技木。即,圖1中的主機12可將從圖2的局部模型代碼160的邊界43對主輸入信號32需要的約束傳播至同一附圖中的相應的SUT代碼150,以獲得在步驟116中獲得的測試數(shù)據(jù)的數(shù)學約束表達式。主機12可繼而對于產(chǎn)生的/需要的值求解該表達式,以產(chǎn)生SUT代碼150的最終測試案例。此后,可模擬測試數(shù)據(jù),例如使用MATLAB的Simulink部分、Rhapsody環(huán)境或其他合適的方式。替換地,基于啟發(fā)的導向技術(shù)或方法可使得圖1中的主機12能夠動態(tài)地近似任何未覆蓋的測試案例或目標的表示/函數(shù)。該替代方式將需要在SUT代碼150的主輸入32和進入圖2的局部模型代碼160的邊界43的信號(例如通過預定義的輸入模式)之間的關(guān)系的提取。圖2中的SUT代碼150以預定義的輸入模式模擬,且在42處針對信號的表現(xiàn)被觀察,并由此提取該關(guān)系。主機12可繼而提取局部模型代碼160的輸入信號42關(guān)于SUT代碼150的主輸入32的關(guān)系。例如,主機12可將除ー個之外的全部輸入固定至最低常數(shù)值,并線性増加或降低主輸入32。這可針對全部的輸入信號重復。通過該方法,可確定局部模型代碼160的輸入信號42相對主輸入32的關(guān)系或表現(xiàn)模式,即,主輸入的哪些組合増加或降低局部模型代碼160的邊界處的信號。這即為可應用以獲得需要的值的模式,該需要的值為在步驟116中獲得的用于局部模型代碼160的輸入的測試數(shù)據(jù)。使用非限制性示例性示例,當圖1中的裝置20是機動車剎車系統(tǒng)時,基本頂部水平輸入的基本對可包括油門輸入水平和剎車應用水平。該系統(tǒng)的輸出是車輛的可變速度。在該示例中,圖1中的主機12可通過將制動輸入水平保持為0 (即,沒有制動)、變動油門、并觀察/記錄車速的變化來觀察響應。類似地,主機12可將油門保持在恒定的水平,并觀察増加制動輸入水平如何影響車速。因此,為了達到特定的車速值,主機12可學習如何操縱至裝置20的輸入。該學習的表現(xiàn)可用于提供對任何未覆蓋目標的覆蓋。在步驟118處,圖1中的主機12驗證是否現(xiàn)在實現(xiàn)了 100%的測試覆蓋。如果是的話,方法前進至步驟112。如果不是,方法100行進至步驟120。在步驟120處,主機12估計剩余的未覆蓋目標。步驟120可包括簡單的估計,例如使用上述的啟發(fā)性方法。步驟120以循環(huán)重復,直至全部測試案例已經(jīng)被解出,或?qū)崿F(xiàn)了100%的測試覆蓋,然后前進至步驟112。盡管已經(jīng)對用于實施本發(fā)明的最佳模式進行了詳盡的描述,對本發(fā)明所涉及的領(lǐng)域熟悉的技術(shù)人員將辨識出在所附的權(quán)利要求內(nèi)用于實施本發(fā)明的各種可替換設(shè)計和實施例。
權(quán)利要求
1.一種用于關(guān)于局部設(shè)計模型(PDM)的測試中軟件(SUT)的測試方法,該PDM具有不同于SUT邊界的邊界,該方法包括記錄一組輸入信息,包括SUT、PDM、限定了需要數(shù)目的測試案例的覆蓋標準;經(jīng)由主機識別SUT中對應于PDM的邊界信號的一組變量;和使用SUT、PDM和該組變量提取滿足覆蓋標準的一組測試案例。
2.如權(quán)利要求1所述的方法,其中提取一組測試案例包括從SUT產(chǎn)生初始的一組測試案例;和測量初始的該組測試案例在PDM上的覆蓋。
3.如權(quán)利要求2所述的方法,其還包括在PDM水平上產(chǎn)生附加的一組測試案例;使用傳播技術(shù)和啟發(fā)導向技術(shù)中的一種利用相應的約束函數(shù)將附加的該組測試案例映射至SUT的邊界;和使用所述主機求解所述相應的約束函數(shù)。
4.如權(quán)利要求1所述的方法,其還包括在對于預定數(shù)量的迭代利用隨機輸入模擬SUT的同時登錄PDM的輸入和輸出(I/O) 值;和使用登錄的輸入模擬PDM;和將PDM的輸出和一組期望輸出進行比較。
5.一種用于關(guān)于局部設(shè)計模型(PDM)的測試中軟件(SUT)的測試系統(tǒng),該PDM具有不同于SUT邊界的邊界,該系統(tǒng)包括主機,其接收和記錄輸入組,該輸入組包括SUT、PDM和限定了需要數(shù)目的測試案例的覆蓋標準;和有形/非易失性存儲器,其上記錄有測試生成工具和用于測試所述SUT的一組處理指令;其中所述主機配置為執(zhí)行所述處理指令,以由此識別SUT中的一組變量,該組變量對應于PDM的邊界信號,且使用SUT、PDM和該組變量提取滿足覆蓋標準的一組測試案例。
6.如權(quán)利要求5所述的系統(tǒng),其中所述主機配置為從所述SUT產(chǎn)生該組測試案例的初始版本;和測量該組測試案例的初始版本在PDM上的覆蓋。
7.如權(quán)利要求5所述的系統(tǒng),其中所述主機執(zhí)行正向傳播技術(shù)或反向傳播技術(shù)中的一種以將來自PDM的測試案例的至少一些自動映射至SUT。
8.如權(quán)利要求5所述的系統(tǒng),其中所述主機配置為通過下列方式提取該組測試案例 從SUT產(chǎn)生初始的一組測試案例;和測量初始的該組測試案例在PDM上的覆蓋。
9.如權(quán)利要求5所述的系統(tǒng),其中所述主機被配置為在所述PDM的水平上產(chǎn)生附加的一組測試案例;使用正向傳播技術(shù)、反向傳播技術(shù)和啟發(fā)導向技術(shù)中的一種利用相應的約束函數(shù)將附加的該組測試案例映射至SUT的邊界;和使用所述主機求解所述相應的約束函數(shù)。
10.如權(quán)利要求5所述的系統(tǒng),其中所述主機被配置為將對所述SUT的一組輸入信號映射至PDM中相應的值。
全文摘要
一種方法,其允許關(guān)于具有不同于SUT邊界的邊界的局部設(shè)計模型(PDM)測試測試中軟件(SUT)。該方法包括記錄輸入信息,包括SUT、PDM、限定了需要數(shù)目的測試案例的覆蓋標準。對應于PDM的邊界信號的SUT中的變量被識別出。提取滿足覆蓋標準的測試案例。該方法還包括在PDM水平上產(chǎn)生附加的測試案例,且繼而使用正向/反向傳播或基于啟發(fā)的導向技術(shù)將具有相應的約束函數(shù)的附加案例映射至SUT編碼的邊界。用于測試SUT的系統(tǒng)包括主機和存儲器。該主機執(zhí)行來自存儲器的處理指令,以識別SUT中對應于PDM的邊界信號的變量,且提取滿足覆蓋標準的測試案例。
文檔編號G06F11/36GK103019669SQ20121035718
公開日2013年4月3日 申請日期2012年9月21日 優(yōu)先權(quán)日2011年9月21日
發(fā)明者P.M.佩拉南達姆, A.A.嘉德卡里, R.賽瑟 申請人:通用汽車環(huán)球科技運作有限責任公司