基于規(guī)則的自動化測試數(shù)據(jù)生成的制作方法
【專利摘要】本文公開的示例實施例涉及基于規(guī)則的數(shù)據(jù)填充系統(tǒng),其包括:規(guī)則分派器引擎,用于自動將數(shù)據(jù)生成規(guī)則綁定到數(shù)據(jù)庫。該系統(tǒng)還可以包括:數(shù)據(jù)生成器引擎,用于基于規(guī)則來生成用于數(shù)據(jù)庫的測試數(shù)據(jù)。
【專利說明】基于規(guī)則的自動化測試數(shù)據(jù)生成
【背景技術(shù)】
[0001] 性能測試對于軟件的質(zhì)量保證來說是必要的??煽康男阅軠y試很大程度上取決于 合適的測試數(shù)據(jù)。軟件開發(fā)商和制造商受到以下挑戰(zhàn):提供用于測試軟件數(shù)據(jù)庫的測試數(shù) 據(jù),其中這樣的測試數(shù)據(jù)與客戶的數(shù)據(jù)對準(zhǔn)。作為結(jié)果,在測試期間錯過與軟件性能相關(guān)的 許多缺陷,并且這些缺陷隨后在軟件被部署之后被客戶報告,因為性能測試數(shù)據(jù)未合適地 與客戶的真實數(shù)據(jù)對準(zhǔn)。
【專利附圖】
【附圖說明】
[0002] 圖1描繪了其中可以實現(xiàn)各種實施例的環(huán)境。
[0003] 圖2A和2B描繪了根據(jù)示例的基于規(guī)則的數(shù)據(jù)填充系統(tǒng)。
[0004] 圖3A-3B描繪了利用用于實現(xiàn)基于規(guī)則的數(shù)據(jù)填充方法的指令編碼的計算機可 讀存儲介質(zhì)和處理器的示例實現(xiàn)。
[0005] 圖4描繪了基于規(guī)則的數(shù)據(jù)填充系統(tǒng)的另一示例。
[0006] 圖5是描繪圖2A-2B和圖4的系統(tǒng)的示例實現(xiàn)的框圖。
[0007] 圖6是用于基于規(guī)則的數(shù)據(jù)填充的方法的示例實現(xiàn)的流程圖。
[0008] 圖7是用于基于規(guī)則的數(shù)據(jù)填充的方法的另一示例實現(xiàn)的流程圖。
【具體實施方式】
[0009] 介紹:下文描述的各種實施例被開發(fā)來提供用于例如在性能測試階段期間測試數(shù) 據(jù)庫的基于規(guī)則的數(shù)據(jù)填充系統(tǒng)。對于填充性能測試數(shù)據(jù)來說存在許多挑戰(zhàn)。例如,在數(shù) 據(jù)庫中可能存在數(shù)百個表,這使得分析針對每個表的數(shù)據(jù)約束以及手動生成被模式化到每 個表的數(shù)據(jù)是費力的。因此,將期望實現(xiàn)這樣的測試工具,該測試工具自動生成針對數(shù)據(jù)庫 表的特定結(jié)構(gòu)調(diào)整的測試數(shù)據(jù)。在軟件程序中定義了若干數(shù)據(jù)關(guān)系,并且這些關(guān)系可能未 被反映在數(shù)據(jù)庫約束中。因此,可能需要性能測試數(shù)據(jù)和軟件商業(yè)邏輯知識來確定要填充 數(shù)據(jù)庫以用于測試目的的性能測試數(shù)據(jù)的類型。因此,可能需要一平臺來使得軟件架構(gòu)師 能夠提供這樣的輸入并且使得性能調(diào)優(yōu)架構(gòu)師能夠提供這樣的輸入以配置測試工具以便 生成相關(guān)性能測試數(shù)據(jù),軟件架構(gòu)師具有軟件商業(yè)邏輯的知識,性能調(diào)優(yōu)架構(gòu)師具有測試 設(shè)計知識。此外,數(shù)據(jù)庫中的一些數(shù)據(jù)結(jié)構(gòu)可能太具體(即,針對具體商業(yè)需要而調(diào)整)或者 太復(fù)雜,從而使得難以開發(fā)支持這樣的數(shù)據(jù)結(jié)構(gòu)以保證它們的完整性的數(shù)據(jù)填充工具。因 此,還將期望開發(fā)對于對具有變化復(fù)雜度的不同數(shù)據(jù)庫的不同軟件的性能測試來說可重用 (即,通用)的數(shù)據(jù)測試工具。所描述的實施例提供用于解決以上挑戰(zhàn)和需要的測試工具。所 描述的實施例通過提供魯棒的測試工具來減少在測試期間逃脫檢測且隨后被客戶發(fā)現(xiàn)的 性能缺陷的數(shù)量。
[0010] 示例實現(xiàn)包括:提供用于數(shù)據(jù)庫的數(shù)據(jù)生成規(guī)則。數(shù)據(jù)生成規(guī)則包括數(shù)據(jù)約束(例 如,實體關(guān)系圖(ERD))。此外,可以針對數(shù)據(jù)庫表和列指定數(shù)據(jù)規(guī)模。在一個實施例中,創(chuàng) 建描述要生成的測試數(shù)據(jù)的規(guī)則實例,其中,規(guī)則實例包括數(shù)據(jù)庫規(guī)則實例、表規(guī)則實例和 列規(guī)則實例。該實現(xiàn)還包括:自動將數(shù)據(jù)生成規(guī)則綁定到數(shù)據(jù)庫。例如,數(shù)據(jù)生成規(guī)則被綁 定到數(shù)據(jù)庫的列和表。該實現(xiàn)還包括:基于數(shù)據(jù)生成規(guī)則來生成測試數(shù)據(jù)。例如,測試數(shù)據(jù) 可以被輸出為結(jié)構(gòu)化查詢語言(SQL)腳本文件、電子表格文件、測試文件、標(biāo)準(zhǔn)測試員數(shù)據(jù) 格式(STDF)文件、或可以用于在性能測試期間將生成的數(shù)據(jù)注入到軟件中的其他腳本文件 格式。
[0011]以下描述被分解成節(jié)。被標(biāo)記為"環(huán)境"的第一節(jié)描述了其中可以實現(xiàn)各種實施 例的網(wǎng)絡(luò)環(huán)境的示例。被標(biāo)記為"部件"的第二節(jié)描述了用于實現(xiàn)各種實施例的物理和邏 輯部件的示例。被標(biāo)記為"操作"的第三節(jié)描述了實現(xiàn)各種實施例所采取的步驟。
[0012] 環(huán)境:圖1描繪了其中可以實現(xiàn)各種實施例的環(huán)境100。環(huán)境100被示出為包括基 于規(guī)則的數(shù)據(jù)填充系統(tǒng)102、數(shù)據(jù)儲存器104、服務(wù)器設(shè)備106和客戶端設(shè)備108。下文參照 圖2A-2B、3A-3B、4和5描述的基于規(guī)則的數(shù)據(jù)填充系統(tǒng)102總體地代表被配置為基于供應(yīng) 的數(shù)據(jù)生成規(guī)則生成測試數(shù)據(jù)的編程和硬件的任何組合。數(shù)據(jù)儲存器104總體地代表被配 置為存儲數(shù)據(jù)以供基于規(guī)則的數(shù)據(jù)填充系統(tǒng)102使用的任何設(shè)備或設(shè)備的組合。這樣的數(shù) 據(jù)可以包括數(shù)據(jù)庫信息114、數(shù)據(jù)模式、數(shù)據(jù)生成規(guī)則、數(shù)據(jù)樣式和趨向以及歷史測試數(shù)據(jù)。
[0013] 在圖1的示例中,數(shù)據(jù)生成規(guī)則代表數(shù)據(jù)約束,該數(shù)據(jù)約束包括在數(shù)據(jù)儲存器104 中供應(yīng)和/或記錄或者在一個或多個服務(wù)器設(shè)備106與一個或多個客戶端設(shè)備108之間傳 送的ERD。服務(wù)器設(shè)備106總體地代表被配置為對從客戶端設(shè)備108接收的網(wǎng)絡(luò)請求進行 響應(yīng)的任何計算設(shè)備。給定服務(wù)器設(shè)備106可以包括web服務(wù)器、應(yīng)用服務(wù)器、文件服務(wù)器 或數(shù)據(jù)庫服務(wù)器。客戶端設(shè)備108總體地代表被配置有用于傳送這樣的請求且接收和處理 對應(yīng)響應(yīng)的瀏覽器或其他應(yīng)用的任何計算設(shè)備。鏈路110總體地代表經(jīng)由電信鏈路、紅外 鏈路、射頻鏈路或提供電子通信的任何其他連接器或系統(tǒng)的線纜、無線、光纖或遠程連接中 的一個或多個。鏈路110可以至少部分地包括內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)或這二者的組合。鏈路110還 可以包括居間代理、路由器、交換機、負(fù)載平衡器等等。圖4描繪了一個或多個用戶(例如, 軟件架構(gòu)師和性能調(diào)優(yōu)架構(gòu)師)與系統(tǒng)102交互以配置該系統(tǒng)用于數(shù)據(jù)生成的示例實現(xiàn)。 為了說明,軟件架構(gòu)師和性能調(diào)優(yōu)架構(gòu)師可以經(jīng)由一個或多個客戶端設(shè)備108和/或來自 服務(wù)器設(shè)備106 (例如,數(shù)據(jù)庫服務(wù)器)的請求向系統(tǒng)102提供配置輸入(例如,數(shù)據(jù)生成規(guī) 則)??蛻舳嗽O(shè)備108可以包括例如筆記本計算機、臺式計算機、膝上型計算機、手持計算設(shè) 備、移動電話或智能電話、板或平板計算設(shè)備、便攜式閱讀設(shè)備或任何其他處理設(shè)備。圖5 描繪了自動將數(shù)據(jù)生成規(guī)則(經(jīng)由規(guī)則分派器引擎202)綁定到數(shù)據(jù)庫的表的示例。例如,規(guī) 則分派器引擎202可以被配置為自動將數(shù)據(jù)生成規(guī)則402綁定到表502的一個或多個列, 如圖5中所示。
[0014] 部件:圖2A-5描繪了用于實現(xiàn)各種實施例的物理和邏輯部件的示例。圖2A描繪 了基于規(guī)則的數(shù)據(jù)填充系統(tǒng)102,其包括規(guī)則分派器引擎202和數(shù)據(jù)生成器引擎204。圖2A 還描繪了耦合到數(shù)據(jù)儲存器104的基于規(guī)則的數(shù)據(jù)填充系統(tǒng)102。數(shù)據(jù)儲存器104可以包 括數(shù)據(jù)庫信息114。
[0015] 規(guī)則分派器引擎202總體地代表被配置為自動將數(shù)據(jù)生成規(guī)則綁定到數(shù)據(jù)庫的 編程和硬件的任何組合。數(shù)據(jù)生成規(guī)則可以被自動綁定到數(shù)據(jù)庫表和數(shù)據(jù)庫列。數(shù)據(jù)生成 規(guī)則描述要生成以用于測試數(shù)據(jù)庫的數(shù)據(jù)的類型和范圍。數(shù)據(jù)生成規(guī)則可以包括規(guī)則模板 和數(shù)據(jù)約束,諸如ERD和在對應(yīng)于數(shù)據(jù)庫的軟件程序中定義的邏輯(例如,在軟件程序中定 義的商業(yè)邏輯)。數(shù)據(jù)生成規(guī)則可以是從現(xiàn)有數(shù)據(jù)(例如,存儲在數(shù)據(jù)儲存器104中)、歷史 測試數(shù)據(jù)、數(shù)據(jù)樣式和趨向或它們的組合創(chuàng)建的。可替代地或附加地,數(shù)據(jù)生成規(guī)則可以是 用戶定義的(例如,被軟件架構(gòu)師和/或性能調(diào)優(yōu)架構(gòu)師提供作為輸入)。用戶定義的規(guī)則 可以包括數(shù)據(jù)庫級規(guī)則、表級規(guī)則、列級規(guī)則或它們的任何組合。數(shù)據(jù)庫級規(guī)則描述數(shù)據(jù)庫 的表之間的比率,并可以包括例如產(chǎn)業(yè)值類型、編碼信息、數(shù)據(jù)庫最大大小和商業(yè)規(guī)則。表 級規(guī)則描述相同表的列的關(guān)系,并可以包括例如表最大大小、表關(guān)系和表依賴性。列級規(guī)則 描述每個列的數(shù)據(jù)格式,并可以包括例如數(shù)據(jù)樣式、列關(guān)系和列依賴性。
[0016] 除了自動綁定數(shù)據(jù)生成規(guī)則之外,規(guī)則分派器引擎202還可以自動綁定數(shù)據(jù)庫規(guī) 貝U,其中數(shù)據(jù)庫規(guī)則包括基本規(guī)則和先進規(guī)則?;疽?guī)則是來自數(shù)據(jù)庫實例的數(shù)據(jù)庫約束, 并可以包括例如大小、類型、空值、受限值、可用值、主鍵、外鍵、唯一鍵、索引值和樣本數(shù)據(jù)。 先進規(guī)則包括例如數(shù)據(jù)趨向、數(shù)據(jù)頻率、歷史數(shù)據(jù)、數(shù)據(jù)屬性、數(shù)據(jù)范圍和數(shù)據(jù)樣式。
[0017] 以下樣本代碼示出根據(jù)實施例可以如何定義規(guī)則,且被描述如下:
【權(quán)利要求】
1. 一種基于規(guī)則的數(shù)據(jù)填充系統(tǒng),所述系統(tǒng)包括: 規(guī)則分派器引擎,用于自動將數(shù)據(jù)生成規(guī)則綁定到數(shù)據(jù)庫;以及 數(shù)據(jù)生成器引擎,用于基于該規(guī)則來生成用于所述數(shù)據(jù)庫的測試數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),還包括: 圖形用戶界面(⑶I)引擎,用于從用戶接收配置輸入,其中所述配置輸入包括所述數(shù)據(jù) 生成規(guī)則,并且其中所述數(shù)據(jù)生成規(guī)則包括規(guī)則實例、規(guī)則模板和數(shù)據(jù)約束; 存儲引擎,用于存儲數(shù)據(jù)庫信息,其中所述數(shù)據(jù)庫信息包括數(shù)據(jù)庫模式和所述數(shù)據(jù)生 成規(guī)則;以及 模式解析器引擎,用于將來自所述數(shù)據(jù)庫的數(shù)據(jù)約束解析成所述數(shù)據(jù)生成器引擎可使 用的統(tǒng)一格式。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述模式解析器引擎還用于從所存儲的數(shù)據(jù)、歷 史測試數(shù)據(jù)或其組合創(chuàng)建數(shù)據(jù)生成規(guī)則。
4. 根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述數(shù)據(jù)約束包括所述數(shù)據(jù)庫的對應(yīng)于在與所述 數(shù)據(jù)庫有關(guān)的可執(zhí)行程序中定義的邏輯的邏輯數(shù)據(jù)約束,并且其中所述數(shù)據(jù)約束包括實體 關(guān)系圖(ERD)。
5. 根據(jù)權(quán)利要求2所述的系統(tǒng),還包括數(shù)據(jù)庫連接器引擎,用于: 檢索與所述數(shù)據(jù)庫有關(guān)的信息; 檢索所述測試數(shù)據(jù);以及 操縱所述測試數(shù)據(jù)。
6. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述規(guī)則分派器引擎還用于自動綁定數(shù)據(jù)庫規(guī) 貝U,其中所述數(shù)據(jù)庫規(guī)則包括基本規(guī)則和先進規(guī)則。
7. 根據(jù)權(quán)利要求6所述的系統(tǒng),其中所述基本規(guī)則包括數(shù)據(jù)信息,所述數(shù)據(jù)信息包括 數(shù)據(jù)大小、數(shù)據(jù)類型、空數(shù)據(jù)值、受限數(shù)據(jù)值、可用數(shù)據(jù)值、主鍵、外鍵、唯一鍵、索引、樣本數(shù) 據(jù)、數(shù)據(jù)格式或它們的任何組合。
8. 根據(jù)權(quán)利要求6所述的系統(tǒng),其中所述先進規(guī)則包括數(shù)據(jù)趨向、數(shù)據(jù)頻率、歷史數(shù) 據(jù)、數(shù)據(jù)屬性、數(shù)據(jù)范圍、數(shù)據(jù)樣式或它們的任何組合。
9. 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述規(guī)則分派器引擎還用于自動綁定用戶定義 的規(guī)則,其中所述用戶定義的規(guī)則包括數(shù)據(jù)庫級規(guī)則、表級規(guī)則、列級規(guī)則或它們的任何組 合。
10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述數(shù)據(jù)庫級規(guī)則包括產(chǎn)業(yè)值類型、編碼信息、 數(shù)據(jù)庫最大大小、商業(yè)規(guī)則或它們的任何組合。
11. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述表級規(guī)則包括表最大大小、表關(guān)系、表依賴 性或它們的任何組合。
12. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述列級規(guī)則包括數(shù)據(jù)樣式、列關(guān)系、列依賴性 或它們的任何組合。
13. -種包括指令的非暫態(tài)計算機可讀介質(zhì),所述指令當(dāng)被執(zhí)行時實現(xiàn)用于測試數(shù)據(jù) 庫的基于規(guī)則的數(shù)據(jù)填充方法,所述方法包括: 提供用于生成用于所述數(shù)據(jù)庫的測試數(shù)據(jù)的規(guī)則; 自動將所述規(guī)則綁定到所述數(shù)據(jù)庫;以及 基于所綁定的規(guī)則來生成測試數(shù)據(jù)。
14. 根據(jù)權(quán)利要求13所述的非暫態(tài)計算機可讀介質(zhì),其中所述規(guī)則包括數(shù)據(jù)約束,所 述數(shù)據(jù)約束包括實體關(guān)系圖(ERD)。
15. 根據(jù)權(quán)利要求13所述的非暫態(tài)計算機可讀介質(zhì),其中自動將所述規(guī)則綁定到所述 數(shù)據(jù)庫包括將所述規(guī)則綁定到數(shù)據(jù)庫表、數(shù)據(jù)庫列或它們的組合。
16. 根據(jù)權(quán)利要求13所述的非暫態(tài)計算機可讀介質(zhì),還包括輸出所述測試數(shù)據(jù)作為 結(jié)構(gòu)化查詢語言(SQL)腳本文件、電子表格文件、文本文件、標(biāo)準(zhǔn)測試員數(shù)據(jù)格式(STDF)文 件、其他腳本文件格式或它們的任何組合。
17. 根據(jù)權(quán)利要求13所述的非暫態(tài)計算機可讀介質(zhì),其中,提供規(guī)則包括: 指定數(shù)據(jù)庫表和數(shù)據(jù)庫列的數(shù)據(jù)規(guī)模;以及 指定所述數(shù)據(jù)庫中的表關(guān)系。
18. 根據(jù)權(quán)利要求13所述的非暫態(tài)計算機可讀介質(zhì),其中,提供規(guī)則包括創(chuàng)建描述要 生成的測試數(shù)據(jù)的規(guī)則實例,其中,所述規(guī)則實例包括數(shù)據(jù)庫規(guī)則實例、表規(guī)則實例以及列 規(guī)則實例。
19. 一種用于測試數(shù)據(jù)庫的基于規(guī)則的數(shù)據(jù)填充方法,所述方法包括: 提供用于所述數(shù)據(jù)庫的數(shù)據(jù)生成規(guī)則,其中所述數(shù)據(jù)生成規(guī)則包括數(shù)據(jù)約束; 自動將所述數(shù)據(jù)生成規(guī)則綁定到所述數(shù)據(jù)庫;以及 基于所述數(shù)據(jù)生成規(guī)則來生成測試數(shù)據(jù)。
20. 根據(jù)權(quán)利要求19所述的方法,還包括基于所述測試數(shù)據(jù)來創(chuàng)建腳本。
【文檔編號】H04L12/26GK104380663SQ201280074365
【公開日】2015年2月25日 申請日期:2012年6月29日 優(yōu)先權(quán)日:2012年6月29日
【發(fā)明者】B.郭, Q.馬, Y.阮 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)