一種測試工具的生成方法和終端設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機領(lǐng)域,特別是涉及一種測試工具的生成方法和終端設(shè)備。
【背景技術(shù)】
[0002] 數(shù)據(jù)倉庫是一個面向主題的、集成的、相對穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,其 主要功能是進行分析型處理。隨著網(wǎng)絡(luò)技術(shù)和計算機應(yīng)用的發(fā)展,互聯(lián)網(wǎng)、電信和銀行等行 業(yè)的企業(yè)在運營過程中產(chǎn)生的數(shù)據(jù)量快速膨脹,對數(shù)據(jù)倉庫的性能、可擴展性等有著巨大 影響。傳統(tǒng)的集中式數(shù)據(jù)倉庫架構(gòu)已經(jīng)無法滿足大型企業(yè)的經(jīng)營分析系統(tǒng)在數(shù)據(jù)集成性、 及時性和查詢響應(yīng)時間等各方面的要求。
[0003] 當(dāng)前的很多第三方工具,都是針對數(shù)據(jù)庫的,而現(xiàn)有的數(shù)據(jù)倉庫的測試方法又多 是針對傳統(tǒng)的集中型數(shù)據(jù)倉庫提出的。大數(shù)據(jù)時代的信息爆炸,使得分布式/并行處理變 得如此重要。無論是傳統(tǒng)行業(yè),還是新興行業(yè),特別是互聯(lián)網(wǎng)行業(yè),日常業(yè)務(wù)運行所產(chǎn)生的 海量用戶和服務(wù)數(shù)據(jù)都需要更大的硬件資源來處理。SQL (Structured Query Language, 結(jié)構(gòu)化查詢語言)是一種數(shù)據(jù)倉庫查詢和程序設(shè)計語言,用于數(shù)據(jù)的存取以及查詢、更新 和管理,SQL測試是數(shù)據(jù)倉庫產(chǎn)品測試的一個重要而繁瑣的部分。目前,業(yè)界普遍利用第 三方提供的測試工具直接進行基準測試,例如,Sysbench、Supersmach、Benchmark SQL和 Jmeter 等測試工具以及業(yè)界廣泛使用的 TPC_H(Transaction Processing Performance Council-H,數(shù)據(jù)倉庫決策支持能力的測試基準)標準。
[0004] 在實現(xiàn)本申請的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下問題:
[0005] SQL語法很復(fù)雜,手工寫SQL語法成本很大,且很容易產(chǎn)生錯誤,并且手寫產(chǎn)生的 SQL語法也可能存在不能使用的情況,一般采用語法模板推導(dǎo)來生成SQL測試集,但是利用 推導(dǎo)來生成SQL測試集,只能生成簡單的SQL語法,對于復(fù)雜的需要進行分支組合的場景不 能勝任,很可能不能遍歷所有的分支路徑的所有組合,并且使用起來較為復(fù)雜。第三方提供 的測試工具中框架復(fù)雜,組件繁多,移植性較差,無法模擬實際場景下實際數(shù)據(jù)的測試。傳 統(tǒng)的數(shù)據(jù)倉庫的測試工具與大數(shù)據(jù)的數(shù)據(jù)倉庫平臺的測試并不能很好地結(jié)合。
【發(fā)明內(nèi)容】
[0006] 本申請的目的在于提供一種測試工具的生成方法和終端設(shè)備,以已有程序語句 測試集為基準,以程序指紋為測試用例識別規(guī)則,將線上真實的用戶數(shù)據(jù)訪問的程序語句 持續(xù)地補充到已有測試集,以期最大化地覆蓋程序功能測試,為此,本申請采用如下技術(shù)方 案:
[0007] -種測試工具的生成方法,其特征在于,包括以下步驟:
[0008] 終端設(shè)備獲取服務(wù)器中的工作日志,并提取所述工作日志中對應(yīng)執(zhí)行狀態(tài)為成功 的程序語句;
[0009] 所述終端設(shè)備根據(jù)所述程序語句生成程序指紋;
[0010] 所述終端設(shè)備將所述程序指紋與程序語句測試集中已有的程序指紋進行匹配,如 果存在相同程序指紋,則將所述程序指紋及其所對應(yīng)的程序語句丟棄;
[0011] 如果不存在相同程序指紋,則將所述程序指紋及其所對應(yīng)的程序語句添加到所述 程序語句測試集中。
[0012] 所述終端設(shè)備獲取所述服務(wù)器中的工作日志,具體為:
[0013] 所述終端設(shè)備周期性獲取所述服務(wù)器中的工作日志;或,
[0014] 所述終端設(shè)備獲取所述服務(wù)器推送的工作日志。
[0015] 所述工作日志,具體為:
[0016] 所述終端設(shè)備使用程序語句訪問服務(wù)器時的實時訪問日志;或,
[0017] 歷史訪問日志。
[0018] 所述終端設(shè)備根據(jù)所述程序語句生成所述程序指紋,具體為:
[0019] 所述終端設(shè)備將所述程序語句解析為抽象語法樹;
[0020] 所述終端設(shè)備將所述抽象語法樹轉(zhuǎn)換為操作算子樹;
[0021] 所述終端設(shè)備根據(jù)所述操作算子樹生成數(shù)據(jù)流的執(zhí)行單元;
[0022] 所述終端設(shè)備提取所述數(shù)據(jù)流的執(zhí)行單元中的特征字符串,將所述特征字符串作 為所述程序語句的程序指紋。
[0023] 所述特征字符串,具體為:
[0024] 根據(jù)所述數(shù)據(jù)流的執(zhí)行單元各層級的名稱所生成。
[0025] -種測試工具的生成終端設(shè)備,其特征在于,包括:
[0026] 數(shù)據(jù)獲取模塊,用于獲取服務(wù)器中的工作日志,并提取所述工作日志中對應(yīng)執(zhí)行 狀態(tài)為成功的程序語句;
[0027] 指紋生成模塊,用于根據(jù)所述程序語句生成一個程序指紋;
[0028] 測試反饋模塊,用于將所述程序指紋與程序語句測試集中已有的程序指紋進行匹 配,如果存在相同程序指紋,則將所述程序指紋及其所對應(yīng)的程序語句丟棄;
[0029] 如果不存在相同程序指紋,則將所述程序指紋及其所對應(yīng)的程序語句添加到所述 程序語句測試集中。
[0030] 所述數(shù)據(jù)獲取模塊獲取所述服務(wù)器中的工作日志,具體為:
[0031] 所述數(shù)據(jù)獲取模塊周期性獲取所述服務(wù)器中的工作日志;或,
[0032] 所述數(shù)據(jù)獲取模塊獲取所述服務(wù)器推送的工作日志。
[0033] 所述終端設(shè)備,還包括:
[0034] 訪問模塊,用于使用程序語句訪問所述服務(wù)器;
[0035] 所述工作日志,具體為:
[0036] 所述訪問模塊業(yè)務(wù)請求訪問所述服務(wù)器時的實時訪問日志;或,
[0037] 歷史訪問日志。
[0038] 所述指紋生成模塊,具體用于:
[0039] 將所述程序語句解析為抽象語法樹;
[0040] 將所述抽象語法樹轉(zhuǎn)換為操作算子樹;
[0041] 根據(jù)所述操作算子樹生成數(shù)據(jù)流的執(zhí)行單元;
[0042] 提取所述數(shù)據(jù)流的執(zhí)行單元中的特征字符串,將所述特征字符串作為所述程序語 句的程序指紋。
[0043] 所述特征字符串,具體為:
[0044] 根據(jù)所述數(shù)據(jù)流的執(zhí)行單元各層級的名稱所生成。
[0045] 本申請的實施例包括以下優(yōu)點,以SQL指紋為測試用例的基準,收集線上真實執(zhí) 行的SQL語句并補充到數(shù)據(jù)倉庫平臺產(chǎn)品的測試集,這樣不僅可以避免大量的手寫工作和 手寫過程中產(chǎn)生的錯誤,節(jié)省了工作人員的時間,還能適用于復(fù)雜的需要進行分值組合的 場景,且能夠盡可能地覆蓋所有的分支路徑的所有組合,使SQL測試集更加準確、完善,從 而保證數(shù)據(jù)倉庫平臺的可靠性、可用性以及穩(wěn)定性。
【附圖說明】
[0046] 圖1為本申請實施例中的測試工具的生成方法流程圖;
[0047] 圖2為本申請實施例中的測試工具的生成終端設(shè)備結(jié)構(gòu)示意圖。
【具體實施方式】
[0048] 本申請實施例提供的技術(shù)方案中,依據(jù)服務(wù)器線上的實際提交并成功執(zhí)行的程序 語句來補充測試集,設(shè)備終端獲取到所述服務(wù)器的工作日志,并從獲取到的工作日志中提 取對應(yīng)執(zhí)行狀態(tài)為成功的程序語句,將所述程序語句解析為抽象語法樹,再將所述抽象語 法樹轉(zhuǎn)換為操作算子樹后生成相應(yīng)的數(shù)據(jù)流的執(zhí)行單元,然后遍歷所述數(shù)據(jù)流的執(zhí)行單元 組成的特征樹,提取所述特征樹中的特征字符串,將所述特征字符串作為所述程序語句的 程序指紋,基于新得到的程序指紋,在程序測試集中已有的程序指紋中驗證是否存在指紋 一樣的程序語句,如果不存在,則將所述程序指紋及其所對應(yīng)的程序語句添加到程序測試 集中,如果存在,則將所述程序指紋及其所對應(yīng)的程序語句丟棄,以達