用于重復使用部分現(xiàn)有測試【技術領域】的方法和裝置制造方法
【專利摘要】一種裝置、由計算機化設備執(zhí)行的計算機實施的方法和計算機程序產(chǎn)品,該方法包括:接收與域有關的屬性集合,該屬性集合包括兩個或更多個屬性;接收一個或多個約束,每個約束指示一個或多個屬性,其中,屬性的值將從一個現(xiàn)有測試中選擇;接收現(xiàn)有測試;以及通過設置兩個或更多個屬性的值來生成一個或多個新測試,其中,一個或多個約束的一個或多個屬性的值從現(xiàn)有測試中選擇,一個或多個其它屬性的一個或多個值不從現(xiàn)有測試中選擇。
【專利說明】用于重復使用部分現(xiàn)有測試
【技術領域】
的方法和裝置【技術領域】
[0001]本發(fā)明一般涉及測試,更具體地,涉及結合了測試選擇和生成的混合方法。
【背景技術】
[0002]計算機化設備幾乎控制了我們生活的每個方面一從寫文檔到控制交通燈。然而,計算機化系統(tǒng)容易出錯,因此,要求應當發(fā)現(xiàn)故障的測試階段。測試階段被認為是在設計計算機化設備中最困難的任務之一。沒有發(fā)現(xiàn)故障的代價可能是巨大的,因為故障的后果可能是災難性的。例如,故障可導致依賴于計算機化系統(tǒng)的指定行為的人受到傷害。此夕卜,修復已銷售產(chǎn)品的硬件或固件中的故障可能是昂貴的,因為對其打補丁要求召回計算機化設備。因此,計算機化系統(tǒng)的許多開發(fā)者投入大部分的開發(fā)周期以發(fā)現(xiàn)計算機化設備的錯誤行為。
[0003]測試的重要部分涉及測試計劃和設計,即,提供充分覆蓋系統(tǒng)的一組測試,以使得如果所有測試都通過,則系統(tǒng)被認為是有效的。然而,通常要求提高測試效率,并盡可能減少測試的數(shù)量或總成本。
[0004]用于測試計劃和設計的常用方法是組合測試設計(CTD)。當將問題描述為一組屬性或性質、與屬性對應的值、以及對不可能在測試中一起出現(xiàn)的值的組合的約束時,可以使用CTD。每個測試包括每個屬性的值,以使得組合表示特定情形。因此,測試可被表示為其中每一個屬性都被賦值的元組。
[0005]例如,考慮需要測試的醫(yī)療保健系統(tǒng)。每個測試可包括病人的詳情,諸如年齡層、居住區(qū)域、醫(yī)療詳情、病人在上個月接受治療的次數(shù)等;與醫(yī)護人員相關聯(lián)的詳情,諸如紀律、工作經(jīng)驗、實踐區(qū)域等;以及所提供的治療的詳情,諸如治療的種類、診斷、在何處提供治療等。醫(yī)療保健提供者可設置例如成對測試(pairwise testing)的覆蓋目標,S卩,任意病人詳情的每個可能值必須與任意醫(yī)護人員詳情的每個可能值進行測試,這同樣用于任何其它對的詳情。因此,測試可與腿部骨折的年輕病人有關。然而,與相同測試相關聯(lián)的其它詳情可指示醫(yī)護人員是在私人診所實踐的兒科醫(yī)生或任何其它組合。因此,單個測試可覆蓋多個對。在其它系統(tǒng)中,可形成不同的要求,例如可要求三方測試(three-way testing)。
[0006]應當認識到,術語“測試”可與被分配給屬性的值、與測試相關聯(lián)的數(shù)據(jù)、生產(chǎn)數(shù)據(jù)、測試制造過程和結果等有關。測試可以指示或可以不指示測試將如何執(zhí)行。
[0007]當構建用于實現(xiàn)系統(tǒng)的所要求的覆蓋水平的測試計劃時,存在兩個主要準則:測試生成和測試選擇。測試生成可與從零生成的一組測試(即,多組屬性值)有關。然而,諸如CTD的測試計劃算法可生成由于成本、所要求的工作量等很難實施或昂貴的測試。例如,生成與去年在五個不同地點接受五個不同醫(yī)護人員的五次治療的病人有關的數(shù)據(jù)可能耗費巨大的工作量。
[0008]測試選擇是補充方法。在測試選擇中,指定例如由系統(tǒng)設計者(諸如,醫(yī)療保健系統(tǒng)的設計者)提供的一組測試。然后,可選擇保持相同覆蓋的測試的子集。例如,指定測試A、B和C,其中,測試A和測試B具有除了病人年齡層和居住區(qū)域以外的相同屬性,測試C具有與測試B相同的病人年齡層和居住區(qū)域,則測試B可以消除。
[0009]在測試生成后進行測試選擇的優(yōu)點是不需要生成新測試。然而,缺點是現(xiàn)有測試通常實現(xiàn)相對低的覆蓋。測試選擇沒有改善測試計劃的覆蓋,而僅僅減小了它的大小,因此保留低覆蓋。
【發(fā)明內容】
[0010]本發(fā)明的一個方面涉及由計算機化設備執(zhí)行的計算機實施的方法,其包括:接收與域有關的屬性集合,該屬性集合包括兩個或更多個屬性;接收一個或多個約束,每個約束指示一個或多個屬性,其中,屬性的值將從一個現(xiàn)有測試中選擇;接收現(xiàn)有測試;以及通過設置屬性的值來生成一個或多個新測試,其中,屬性的值從現(xiàn)有測試中選擇,一個或多個其它屬性的一個或多個值不從現(xiàn)有測試中選擇。
[0011]本發(fā)明的另一個方面涉及具有處理單元和存儲裝置的裝置,該裝置包括:數(shù)據(jù)接收組件,用于接收與域有關的屬性集合,該屬性集合包括兩個或更多個屬性、一個或多個約束和現(xiàn)有測試,每個約束指示一個或多個屬性,其中屬性的值將從一個現(xiàn)有測試中選擇;測試生成組件,用于生成符合約束的一個或多個新測試,該測試生成組件包括:屬性選擇組件,用于從現(xiàn)有測試中選擇新測試中屬性的值;以及屬性分配組件,用于向新測試中的一個或多個其它屬性分配一個或多個值,其中,這些值不從現(xiàn)有測試中選擇。
[0012]本發(fā)明的再一個方面涉及計算機程序產(chǎn)品,其包括:非瞬態(tài)計算機可讀介質;第一程序指令,用于接收與域有關的屬性集合,該屬性集合包括兩個或更多個屬性;第二程序指令,用于接收一個或多個約束,每個約束指示一個或多個屬性,其中,屬性的值將從一個現(xiàn)有測試中選擇;第三程序指令,用于接收現(xiàn)有測試;以及第四程序指令,用于通過設置屬性的值來生成一個或多個新測試,其中,屬性的值從現(xiàn)有測試中選擇,一個或多個其它屬性的一個或多個值不從現(xiàn)有測試中選擇;其中,第一、第二、第三和第四程序指令都存儲在所述非瞬態(tài)計算機可讀介質上。
[0013]從另一個方面來看本發(fā)明,提供了由計算機化設備執(zhí)行的計算機實施的方法,其包括:接收與域有關的屬性集合,該屬性集合包括至少兩個屬性;接收一個或多個現(xiàn)有測試;獲得測試計劃;識別測試計劃中的至少一個測試中可被改變而不減少覆蓋的至少一個值的組合;以及用來自一個或多個現(xiàn)有測試的至少一個值替換至少一個值的組合。
【專利附圖】
【附圖說明】
[0014]本公開的主題將從以下結合附圖的詳細描述中更充分地理解和認識,在附圖中,相應或相同的數(shù)字或字符表示相應或相同的組件。除非指示相反的情況,否則附圖提供本發(fā)明的示例性實施例或方面,其并不限制本發(fā)明的范圍。在附圖中:
[0015]圖1示出根據(jù)本發(fā)明的某些示例性實施例的用于將測試選擇與測試生成相結合的混合方法的例子;
[0016]圖2示出根據(jù)本發(fā)明的某些示例性實施例的用于將測試選擇與測試生成相結合的方法中的步驟的流程圖;
[0017]圖3示出根據(jù)本發(fā)明的某些示例性實施例的用于將測試選擇與測試生成相結合的裝置的組件的框圖。
【具體實施方式】
[0018]下面將參照根據(jù)本主題的實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明的實施例。應當認識到,流程圖和/或框圖的方框以及流程圖和/或框圖中方框的組合,都可以由計算機程序指令實施。這些計算機程序指令可以被提供給通用計算機、專用計算機、測試處理器或其它可編程數(shù)據(jù)處理裝置的一個或多個處理器,以產(chǎn)生機器,以使得經(jīng)由計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令創(chuàng)建用于實施在流程圖和/或框圖的一個或多個方框中規(guī)定的功能/動作的裝置。
[0019]這些計算機程序指令還可以存儲在非瞬態(tài)計算機可讀介質中,其可引導計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作,以使得存儲在非瞬態(tài)計算機可讀介質中的指令產(chǎn)生包括實施在流程圖和/或框圖的一個或多個方框中規(guī)定的功能/動作的指令裝置的制造品(article of manufacture)。
[0020]計算機程序指令還可以被加載到裝置上。計算機或其它可編程數(shù)據(jù)處理裝置促使一系列操作步驟在計算機或其它可編程裝置上執(zhí)行以產(chǎn)生計算機實施的過程,以使得在計算機或其它可編程裝置上執(zhí)行的指令提供用于實施在流程圖和/或框圖的一個或多個方框中規(guī)定的功能/動作的過程。
[0021]由所公開的主題處理的一個技術問題是創(chuàng)建用于測試系統(tǒng)的一個或多個測試。應當注意,該上下文中的測試包括系統(tǒng)的屬性的值的集合。例如,在需要被測試的醫(yī)療保健系統(tǒng)中,每個測試可包括病人的詳情,諸如年齡層、居住區(qū)域、醫(yī)療詳情、上個月病人接受治療的次數(shù)等;與醫(yī)護人員相關聯(lián)的詳情,諸如紀律、工作經(jīng)驗、實踐區(qū)域等;以及所提供的治療詳情,諸如治療的種類、診斷、在何處提供治療等。應當認識到,在該上下文中,測試并不必需指示如何進行測試,而是指示屬性的值。測試應當被生成以達到可由用戶定義的覆蓋目標,以使得當所有測試都通過時,系統(tǒng)被認為是有效的。覆蓋目標可例如是所有屬性的成對測試,即,任意病人詳情的每個可能值必須與對于任意醫(yī)護人員詳情的每個可能值進行測試,這同樣用于任何其它詳情對。覆蓋目標可包括組合或組合集,可例如指示特定屬性的成對測試、其它的三方測試、其它屬性的自由設置等。
[0022]目前可用的技術包括測試生成。然而,測試生成的主要阻礙因素是用于所生成的測試的數(shù)據(jù)或設置的產(chǎn)生可能是昂貴的。另一種可用的技術是測試選擇,其中測試的子集從測試的全集中選擇。然而,測試選擇可能會遭受系統(tǒng)的低覆蓋,其通過選擇測試的子集也不能改進。
[0023]因此,有利的是將兩種方法相結合。已知的解決方案包括將測試生成與測試選擇相結合,首先通過添加測試來加強指定的測試計劃以完成覆蓋目標,然后在擴展的測試計劃上應用測試選擇。然而,這種解決方案仍然要求完整生成新創(chuàng)建的測試,這可能使該解決方案不合格,因為完整的測試生成可能以太昂貴而告終。
[0024]因此,要求產(chǎn)生一方面提供如設計者或其它人員所限定的期望覆蓋而另一方面可以從實際角度來生成的一個或多個測試。
[0025]一種技術解決方案包括在每個測試內將選擇和可選的生成相結合。該解決方案包括從用戶接收現(xiàn)有測試的全集,并接收值需要從現(xiàn)有測試中選擇的屬性的組合的一個或多個指示,而其它屬性可以從其它測試中或以任何其它方式選擇。
[0026]例如,假設系統(tǒng)具有6個布爾屬性:A、B、C、D、E和F。用戶可指定A和B的組合必須從一個指定測試中選擇。因此,例如,A和B的特定值的組合,諸如“A =真”且“B =真”,只有當它在已在全集中存在的測試中出現(xiàn)時才被允許在所構建的測試中出現(xiàn),這同樣用于A和B的值的其它組合??捎捎脩魧傩訡和D設置類似的約束,以使得C和D的值的組合只有當它在現(xiàn)有測試中出現(xiàn)時才可在結果中出現(xiàn)。然而,沒有要求A、B、C和D的值的組合必須如同在現(xiàn)有測試中一樣出現(xiàn)。相反,可建議A和B的值從一個現(xiàn)有測試中選擇,而C和D的值從另一個現(xiàn)有測試中選擇的測試。諸如E和F的其它取值可從任何一個或多個測試中選擇或者可被補足。
[0027]應當認識到,某些要求還可涉及單個屬性。例如,年齡屬性可限制為O至120的范圍,如果被指示為“選擇”(selected),則被分配給該屬性的值必須從現(xiàn)有測試中選擇。
[0028]可應用涉及可能或不可能的組合的某些一般約束,而不管這樣的組合是否在現(xiàn)有測試中出現(xiàn)。還應當認識到,某些約束可涉及被排除和不應該被設置的組合,例如,老年病人和兒科醫(yī)生的組合等。
[0029]可根據(jù)由用戶設置的要求生成其它測試,直到實現(xiàn)所期望的覆蓋目標。應當認識至IJ,覆蓋目標可僅用指定測試和約束盡可能地實現(xiàn)。例如,如果覆蓋目標指示成對測試,并且特定組合被標記為將被選擇,但是組合屬性的一組值不在指定測試集中出現(xiàn),則不會測試該組合。因此,覆蓋目標將要根據(jù)約束和在指定測試集內可用的值而確定。
[0030]因此,難以生成的值的組合應當由用戶標記以用于選擇,以使得在測試計劃中出現(xiàn)的任何組合已在指定測試集中存在并可被重復使用。在另一個方面,對于其它屬性,最佳可能值可自由選擇或分配,即,不要求它們在測試中出現(xiàn),這使得能夠用最少的測試實現(xiàn)覆至JHL ο
[0031]利用所公開的主題的一個技術效果是實現(xiàn)測試覆蓋目標,同時避免生成昂貴的測試,即,包括已知生成很昂貴的組合的測試。該混合方法利用了測試選擇的優(yōu)點——測試成本低(或者使用費用已支付過的測試),以及測試生成的優(yōu)點——系統(tǒng)的有效覆蓋。
[0032]現(xiàn)參照圖1,其示出了舉例說明用于將測試選擇與測試生成相結合的混合方法的示意圖。
[0033]屬性集合100包含6個屬性A、B、C、D、E和F。屬性與可測試的組件相關聯(lián),諸如經(jīng)歷單元測試的單元、完整的系統(tǒng)、設計等。
[0034]用戶指示的A和B屬性的組合101與D和E屬性的組合102作為應當從現(xiàn)有測試中選擇的組合,而不是從零生成的組合。
[0035]集合104和108將屬性值指示為用于兩個可用測試的集合,從其中可進行選擇。集合104測試具有屬性值Al至Fl的系統(tǒng),集合108測試具有屬性值A2至F2的系統(tǒng)。
[0036]集合112、116、120和124描述了可通過所公開的方法和裝置生成的一些測試。
[0037]在集合112中,組合101和組合102都從測試104中選擇,并對兩個剩余的屬性C和F創(chuàng)建了新的值。因此,集合112包括從測試104中選擇的Al-Bl和Dl-El的組合以及新生成的值C3和F3。
[0038]在集合116中,組合101從測試104中選擇,組合102從測試108中選擇。集合116還使用了在測試104和108中出現(xiàn)的其它屬性的兩個值。因此,集合116包括從測試104中選擇的Al和BI的組合、從測試108中選擇的D2和E2的組合、來自測試104的Cl值和來自測試108的F2。
[0039]在集合120中,組合101從測試108中選擇,組合102從測試104中選擇。集合120還使用了來自測試108的屬性F的值F2,并為屬性C分配了新的值C4。被分配給C的值可自由生成,或者則從可能值的集合中選擇,如果這種集合已被指示,例如,可以對年齡屬性指示O至120的范圍。因此,集合120包括從測試108中選擇的A2和B2的組合、從測試104中選擇的Dl和El的組合、新創(chuàng)建的值C4以及從測試108中選擇的F2。
[0040]在集合124中,組合101和102從測試108中選擇,并對屬性C和F生成了新的值C5和F5。因此,集合124包括來自測試108的A2-B2和D2-E2的組合以及新創(chuàng)建的值C5和F5。
[0041]應當認識到,也可以創(chuàng)建其它組合,其中,A和B組合從測試104或測試108中選擇,D和E組合從測試104或測試108中選擇,C和F各自可以從測試104、測試108、任何其它可用的測試中選擇或者新創(chuàng)建。
[0042]現(xiàn)參照圖2,其示出用于將測試選擇與測試生成相結合的方法中的步驟的流程圖。
[0043]在步驟200,接收與域或系統(tǒng)相關聯(lián)的屬性集合。例如,在醫(yī)療保健系統(tǒng)的情況下,該組屬性可包括病人統(tǒng)計和醫(yī)療詳情、醫(yī)護人員詳情、由醫(yī)護人員提供給病人的治療的詳情、在其中提供治療的機構的詳情等的集合。
[0044]在步驟204,可接收約束集,其指示約束集合,并包括必須從指定測試中選擇的一個或多個屬性組合。應當認識到,每個組合可包括兩個或更多個屬性。然而,每個組合可從不同測試中選擇,或者兩個或更多個組合可從特定測試中選擇。例如,如果A和B被指示為將被選擇的組合,這同樣用于C和D,則A和B必須從同一個測試中選擇,C和D必須從同一個測試中選擇,但是A、B、C和D不必全部從同一個測試中選擇。零個、一個或多個約束可涉及單一的屬性;零個、一個或多個其它約束可涉及兩個屬性的組合;還有零個、一個或多個其它約束可涉及三個屬性的組合,等等。應當認識到,在約束之間可存在重疊。例如,一個約束可涉及A和B的組合,另一個約束可涉及A和C的組合。在這種情況下,所有的值可以或者可以不從單個測試中選擇。例如,如果第一測試具有(A = 1,B = 1,C = 1),第二測試具有(A = I, B = 2, C = 2),則新測試可具有(A=l,B=I,C = 2),其符合這兩個約束,但A、B和C并沒有從同一個測試中選擇。應當認識到,由于約束涉及至少兩個屬性,而且約束并不是指所有屬性(否則,唯一的解決方案將是利用現(xiàn)有測試),因此,屬性集包括至少三個屬性。
[0045]在步驟208,可接收現(xiàn)有測試的集合,其中每個測試可指示每個屬性的值。在步驟204中指示的那些必須被選擇的組合可以從任何所接收的測試中選擇。應當認識到,現(xiàn)有測試集合可以或者可以不是由該方法最終提供的測試集合的一部分。因此,在某些實施例中,所創(chuàng)建的測試集合可以從空集開始,并可隨著方法的進行而添加測試。在其它實施例中,現(xiàn)有測試集可用作初始集,新生成的測試可被添加到其中。在其它實施例中,初始處理可對初始集執(zhí)行以減少測試的數(shù)量,同時基本上維持相同或相似的覆蓋,隨后創(chuàng)建新測試并將其添加到被減少了的初始集中。
[0046]在步驟212,確定可由用戶聲明或者從外部源接收的覆蓋目標是否已經(jīng)實現(xiàn)。覆蓋目標可例如是成對覆蓋,即,兩個屬性的所有組合都必須進行測試,例如,年輕病人和骨科、老年病人和上個月至少去過一次診所等。應當認識到,某些組合可被禁止、排斥或排除,例如年輕病人和老年醫(yī)學專家等,以使得零個、一個或多個組合將被選擇,而零個、一個或多個其它組合被禁止。還應當認識到,覆蓋目標應當根據(jù)可用測試來確定,因為一組值在指定測試集內不可用的“所選擇的”組合不能被測試。
[0047]如果覆蓋目標已經(jīng)實現(xiàn),則不要求更多測試,方法在步驟216退出。
[0048]如果目標還未實現(xiàn),則在步驟220,生成符合約束的新測試。測試通過設置屬性的值而生成,以使得在步驟204中指示的所有屬性組合都從在步驟208中接收的任意一個或多個測試中選擇,導致測試的至少一個屬性從指定測試中的一個選擇。如果接收了多個約束,則該約束的屬性的值可取自相同的測試,而另一個約束的屬性的值可取自另一個測試。
[0049]在步驟224,未被選擇的屬性可例如通過重新生成來設置。在某些實施例中,生成如步驟220和224所生成的每個這樣的新測試,以使得擴大現(xiàn)有覆蓋。
[0050]應當認識到,在圖2中表示的迭代流僅僅是示例性的,可設計可選的實施例。例如,某些算法可擴展用于多個測試的特定約束,然后移動到下一個約束。其它算法可以從較大的測試集開始,并取出冗余的測試,等等。
[0051]現(xiàn)參照圖3,根據(jù)所公開的主題的某些示例性實施例示出了用于將測試選擇與測試生成相結合的裝置的組件的框圖。
[0052]裝置可包括計算平臺300。計算平臺300可包括處理器304。處理器304可以是中央處理單元(CPU)、微處理器、電子電路、集成電路(IC)等??蛇x地,計算平臺300可被實現(xiàn)為寫入或移植到諸如數(shù)字信號處理器(DSP)或微控制器的特定處理器的固件,或者可被實現(xiàn)為諸如現(xiàn)場可編程門陣列(FPGA)或專用集成電路(ASIC)的硬件或可配置硬件。處理器304可用于執(zhí)行計算平臺300或任何其子組件所要求的計算。
[0053]在所公開的主題的某些示例性實施例中,計算平臺300可包括MMI模塊308。MMI模塊308可用于在裝置與用于提供諸如描述約束的輸入并接收諸如所建議的測試的輸出等的用戶之間提供通信。
[0054]在某些實施例中,計算平臺300可包括用于與系統(tǒng)交互的輸入-輸出(I/O)裝置312,諸如終端、顯示器、鍵盤、輸入設備等,以調用系統(tǒng)并接收結果。然而,應當認識到,系統(tǒng)可以無人工操作地運行。
[0055]在某些示例性實施例中,計算平臺300可包括諸如存儲裝置316的一個或多個存儲裝置。存儲裝置316可以是永久的或易失的。例如,存儲裝置316可以是閃存盤、隨機存取存儲器(RAM)、內存芯片、諸如⑶、DVD或激光盤的光存儲裝置、諸如磁帶、硬盤、存儲區(qū)域網(wǎng)絡(SAN)、網(wǎng)絡附加存儲(NAS)或其它的磁存儲裝置、諸如閃存裝置、記憶棒等的半導體存儲裝置。在某些示例性實施例中,存儲裝置316可保持程序代碼,其可操作以使得處理器304執(zhí)行與上面圖2所示的任意步驟相關聯(lián)的動作,例如,生成測試、檢查覆蓋等。
[0056]下面詳述的組件可被實現(xiàn)為例如由處理器304或另一個處理器執(zhí)行的一組或多組相互關聯(lián)的計算機指令。組件可被設置為以任意編程語言并在任意計算環(huán)境下編程的一個或多個可執(zhí)行文件、動態(tài)庫、靜態(tài)庫、方法、功能、服務等。
[0057]存儲裝置316可包括輸入接收組件320,其用于接收例如包括將要被測試的系統(tǒng)的屬性集、約束或現(xiàn)有測試的輸入。輸入可通過網(wǎng)絡、使用任何協(xié)議的計算機通信、外部存儲裝置接收,或者從數(shù)據(jù)庫接收等。
[0058]存儲裝置316還可包括覆蓋確定組件324,其用于確定所生成的測試集合是否提供足夠的系統(tǒng)的覆蓋,其中覆蓋目標可由用戶提供。
[0059]存儲裝置316還可包括測試生成組件326,其用于生成符合約束的測試。
[0060]測試生成組件326可包括用于從現(xiàn)有測試中選擇用于受約束組合的屬性的屬性選擇組件328和用于生成或者另外接收不構成受約束組合的一部分的那些屬性的值的屬性分配組件332。
[0061]存儲裝置316還可包括數(shù)據(jù)和控制流管理組件336,其用于管理其它組件之間的信息和控制的流,例如,存儲由輸入接收組件320接收的測試和約束,使用屬性選擇組件328和屬性分配組件332來生成測試,由覆蓋確定組件324確定覆蓋等。
[0062]所公開的方法和裝置使得能夠根據(jù)用戶提供的約束來生成測試,其中用戶提供的約束指示值必須從現(xiàn)有測試中選擇的屬性組合,而其它屬性的值可自由選擇或生成。
[0063]應當認識到,可存在多種對方法和裝置的改進和修改。
[0064]一個這樣的改進可涉及其中組合可被設置成能夠使用任何形式邏輯以有條件的方式選擇的情況,例如,如果A= 1,則必須選擇B和C屬性的組合,S卩,應當取自相同的現(xiàn)有測試的所分配的值,否則(如果A不等于I),B和C的值可自由選擇或生成。在另一個例子中,必須選擇其中A等于B的A和B的組合,S卩,在A和B相等的任何測試中,它們的值必須從現(xiàn)有測試中選擇,而其中A不同于B的其它組合可以任何所需要的方式選擇或設置。
[0065]另一個改進可涉及混合約束。例如,A可采用已在指定測試中存在的I至10之間的值,或者可以是11至20之間的任意值。相似的約束可應用于組合,例如,組合A= I和B = 1、A = I和B = 2以及A = 2和B = 2可僅在它們已在現(xiàn)有測試中使用時才被使用,而A和B的其它組合可自由分配。
[0066]在再一個改進中,代替組合被標記為“選擇”或者其可自由生成或分配,組合可與生成權重或成本相關聯(lián)。因此,“選擇”指示可被解釋為無限的生成成本,而“生成”指示被解釋為零生成成本,也可被分配任何其它值。因此,當試圖最小化成本時,如果可行,將選擇被指示為“選擇”的組合,而其它屬性將根據(jù)相關聯(lián)的成本來選擇或生成。這種生成的目標可以是最小化或降低每個測試或所生成的測試的整個全集的成本,同時實現(xiàn)所要求的覆蓋目標。
[0067]最新的修改也可被擴展到其中數(shù)據(jù)生成總是可能的但與成本相關聯(lián)的情況。在該情況下,用戶可能更愿意重復使用盡可能多的現(xiàn)有數(shù)據(jù),但并未降低覆蓋或者犧牲簡潔性。該修改的可能的方法會是:
[0068]1.生成包括多個測試的測試計劃,而忽略現(xiàn)有測試??蛇x地,測試計劃可從任何源獲得。
[0069]2.在測試計劃的一個或多個測試中,識別可被修改而不降低覆蓋的屬性值或其組合,即,不要求被覆蓋的組合或者被其它測試覆蓋的組合,因此,改變這些屬性的值不會減少對這些屬性所覆蓋的值組合的數(shù)量。
[0070]3.用來自現(xiàn)有測試的取值替換這種組合,因此,不需要其它的值生成資源。
[0071]該方法不改變測試計劃的大小,也不改變它的覆蓋,但是可通過使用現(xiàn)有數(shù)據(jù)來減少要求生成的數(shù)據(jù)的量。該方法在識別相對更容易生成的組合而難以生成的組合中可以或者可以不使用用戶干預。應當認識到,該改進可應用于一組屬性的一部分。還應當認識至IJ,該方法可以被實現(xiàn)而無需約束。該算法可以嘗試并改變不影響覆蓋的組合,即使用戶并未指定這些組合。
[0072]應當認識到,本發(fā)明可以在系統(tǒng)開發(fā)的任何階段使用,包括設計、單元測試、系統(tǒng)測試、調試或其它。還應當認識到,所公開的主題可應用于為其開發(fā)了計算機化系統(tǒng)且可被建模為屬性和值的集合的任何科目,例如,醫(yī)療、銀行、保險、金融、運輸、制造、教育、旅游、商貿等。
[0073]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖中的每個方框以及框圖中的某些方框可以代表程序代碼的模塊、段或一部分,其包括一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。還應當注意,在某些可選實現(xiàn)中,方框中所標注的功能可以以不同于附圖中所標注的順序發(fā)生。例如,連續(xù)示出的兩個方框實際上可以基本并行地執(zhí)行,或者方框有時可以按相反的順序執(zhí)行,這取決于所涉及的功能。還應當注意,框圖和/或流程圖中的每個方框以及框圖和/或流程圖中的方框的組合可以通過執(zhí)行規(guī)定功能或動作的專用的基于硬件的系統(tǒng)或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0074]在此使用的術語僅僅為了描述特定實施例的目的,而并不意圖限制本發(fā)明。如在此所使用的,單數(shù)形式“一”、“一個”和“該”也意圖包括復數(shù)形式,除非上下文清楚地指示相反的情況。進一步應當理解,術語“包括”和/或“包含”在本說明書中使用時指明所陳述的特征、整數(shù)、步驟、操作、元件和/或部件的存在,但不排除存在或增加一個或多個其它特征、整數(shù)、步驟、操作、元件、部件和/或其組合。
[0075]所屬【技術領域】的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以采用在任何有形表達的介質中具體化的計算機程序產(chǎn)品的形式,該計算機程序產(chǎn)品具有在該介質中具體化的計算機可用程序代碼。
[0076]可以采用一個或多個計算機可用或可讀介質的任意組合。計算機可用或可讀介質可以例如但不限于:任何非瞬態(tài)計算機可讀介質,電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者傳播介質。計算機可讀介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CDROM)、光存儲裝置、諸如支持互聯(lián)網(wǎng)或內部網(wǎng)的傳輸介質、或磁存儲裝置。應當注意,計算機可用或計算機可讀介質甚至可以是在其上印刷程序的紙或其它適當介質,因為程序可例如經(jīng)由紙或其它介質的光學掃描而電子地捕獲,然后編譯、解釋或以適當方式另行處理(如果需要的話),然后存儲在計算機存儲器中。在本文的上下文中,計算機可用或計算機可讀介質可以是能夠包含、存儲、通信、傳播、或傳輸用于由指令執(zhí)行系統(tǒng)、裝置或器件使用或者與其結合使用的程序的任何介質。計算機可用介質可以包括在基帶中或者作為載波的一部分的具有承載于其中的計算機可用程序代碼的傳播的數(shù)據(jù)信號。計算機可用程序代碼可以使用任何適當介質來傳輸,包括但不限于,無線、有線、光纖電纜、RF等。
[0077]可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本發(fā)明的操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++等,還包括常規(guī)的過程式程序設計語言一諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供者來通過因特網(wǎng)連接)。
[0078]在下面的權利要求中的所有裝置或步驟加功能元件的對應結構、材料、動作和等同物意圖包括任何用于結合其它明確要求保護的元件而執(zhí)行功能的結構、材料或動作。已經(jīng)提供本發(fā)明的描述以用于說明和描述的目的,但并不意味著窮盡。在不脫離本發(fā)明的范圍的情況下,許多修改和變形對于本領域技術人員將是明顯的。為了最好地解釋本發(fā)明的原理和實際應用,已選擇并描述了實施例,這些實施例使得本領域技術人員能夠理解本發(fā)明的各種實施例以及與所考慮的特定應用相適宜的各種修改。
【權利要求】
1.一種由計算機化設備執(zhí)行的計算機實施的方法,包括: 接收與域有關的屬性集合,所述屬性集合包括至少兩個屬性; 接收至少一個約束,所述至少一個約束指示至少一個屬性,其中,所述至少一個屬性的值將從一個現(xiàn)有測試中選擇; 接收現(xiàn)有測試;以及 通過設置所述至少兩個屬性的值來生成至少一個新測試,其中,所述至少一個約束的所述至少一個屬性的值從所述現(xiàn)有測試中選擇,至少一個其它屬性的至少一個值不從所述現(xiàn)有測試中選擇。
2.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束與至少兩個屬性有關。
3.根據(jù)權利要求2所述的計算機實施的方法,其中,所述至少一個約束還包括與所述至少兩個屬性的值的排除組合有關的約束。
4.根據(jù)權利要求1所述的計算機實施的方法,其中,所述生成被重復,直到達到覆蓋目標。
5.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個其它屬性的所述至少一個值從第二現(xiàn)有測試中選擇。
6.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束的所述至少一個屬性的值從第一現(xiàn)有測試中選擇,至少一個第二約束的至少一個屬性的值從第二現(xiàn)有測試中選擇。
7.根據(jù)權利要求1所述的計算機實施的方法,其中,生成所述至少一個其它屬性的所述至少一個值。
8.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束是有條件的,并取決于至少一個屬性的值。
9.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束是有條件的,并取決于至少兩個屬性的值之間的關系。
10.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束指示至少一個屬性的至少一個可能值。
11.根據(jù)權利要求1所述的計算機實施的方法,其中,所述至少一個約束指示將要從現(xiàn)有測試中選擇的所述至少一個屬性的至少一個可能值,以及將要被自由地或者根據(jù)與所述現(xiàn)有測試無關的約束而分配給所述至少一個屬性的至少一個可能值。
12.根據(jù)權利要求1所述的計算機實施的方法,其中,至少一個組合與成本相關聯(lián),以使得將要被選擇的組合與高成本相關聯(lián),將要被生成的組合與低成本相關聯(lián),并且要求實現(xiàn)覆蓋目標,同時降低成本。
13.一種具有處理單元和存儲裝置的裝置,所述裝置包括: 數(shù)據(jù)接收組件,用于接收與域有關的屬性集合、至少一個約束和現(xiàn)有測試,所述屬性集合包括至少兩個屬性,所述至少一個約束指示至少一個屬性,其中,所述至少一個屬性的值將從一個現(xiàn)有測試中選擇;以及 測試生成組件,用于生成符合所述約束的至少一個新測試,所述測試生成組件包括: 屬性選擇組件,用于從所述現(xiàn)有測試中選擇所述新測試中所述至少一個屬性的值;以及 屬性分配組件,用于向所述新測試中至少一個其它屬性分配至少一個值,其中,所述至少一個值不從所述現(xiàn)有測試中選擇。
14.根據(jù)權利要求13所述的裝置,其中,所述至少一個其它屬性的所述至少一個值從第二現(xiàn)有測試中選擇。
15.根據(jù)權利要求13所述的裝置,其中,生成所述至少一個其它屬性的所述至少一個值。
16.根據(jù)權利要求14所述的裝置,還包括:覆蓋確定組件,用于確定覆蓋目標是否已經(jīng)由所述新測試實現(xiàn)。
17.一種計算機程序產(chǎn)品,包括: 非瞬態(tài)計算機可讀介質; 第一程序指令,用于接收與域有關的屬性集合,所述屬性集合包括至少兩個屬性;第二程序指令,用于接收至少一個約束,所述至少一個約束指示至少一個屬性,其中,所述至少一個屬性的值將從一個現(xiàn)有測試中選擇; 第三程序指令,用于接收現(xiàn)有測試;以及 第四程序指令,用于通過設置所述至少兩個屬性的值來生成至少一個新測試,其中,所述至少一個約束的所述至少一個屬性的值從所述現(xiàn)有測試中選擇,至少一個其它屬性的至少一個值不從所述現(xiàn)有測試中選擇; 其中,所述第一、第二、第三和第四程序指令被存儲在所述非瞬態(tài)計算機可讀介質上。
【文檔編號】G06F11/22GK104185842SQ201380016025
【公開日】2014年12月3日 申請日期:2013年3月21日 優(yōu)先權日:2012年4月3日
【發(fā)明者】I·塞加爾, R·特佐羅夫-布里爾, A·茲洛特尼克 申請人:國際商業(yè)機器公司