亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Multi-RQP方法的數(shù)據(jù)庫測試數(shù)據(jù)生成研究

        2013-10-17 03:19:10王瑩瑩
        計算機與現(xiàn)代化 2013年1期
        關(guān)鍵詞:數(shù)據(jù)庫方法

        王瑩瑩

        (廣東機電職業(yè)技術(shù)學(xué)院信息工程學(xué)院,廣東 廣州 510515)

        0 引言

        在這科技日新月異的時代,數(shù)據(jù)庫在各個領(lǐng)域發(fā)揮著極為重要的作用。數(shù)據(jù)庫是軟件程序的核心部分。軟件測試是保證軟件質(zhì)量的重要手段,數(shù)據(jù)庫測試已被高度重視。數(shù)據(jù)庫測試與傳統(tǒng)軟件測試有所區(qū)別。因為在實際應(yīng)用中,增、刪、改、查是最常用的數(shù)據(jù)操作,所以數(shù)據(jù)庫測試是要驗證并確保數(shù)據(jù)的映射、事務(wù)的ACID屬性、數(shù)據(jù)的完整性及業(yè)務(wù)的準確性,這些測試工作主要以SQL程序的方式進行。設(shè)計、執(zhí)行測試用例要求有相應(yīng)的數(shù)據(jù)庫測試數(shù)據(jù)。理想的測試數(shù)據(jù)應(yīng)是實際的、有效的、覆蓋盡可能多的應(yīng)用場景的最小數(shù)據(jù)集合,并且包括某些特殊數(shù)據(jù)。

        1 常用數(shù)據(jù)庫測試數(shù)據(jù)生成方法簡析

        目前,已有不少成熟的專用測試數(shù)據(jù)生成工具可以快速產(chǎn)生大量有效的測試數(shù)據(jù)。如DataFactory能建立復(fù)雜數(shù)據(jù)關(guān)系,允許測試人員毫不費力地產(chǎn)生百萬行有意義的測試數(shù)據(jù);在使用中首先讀取數(shù)據(jù)庫中表的schema,即表的定義之類的內(nèi)容,以列表的形式顯示;然后由用戶定制要產(chǎn)生數(shù)據(jù)的具體內(nèi)容,如數(shù)字范圍、字符串長度、要產(chǎn)生數(shù)據(jù)記錄的個數(shù)等;最后運行工程,生成數(shù)據(jù)。再如TestDataBuilder可以幫助程序開發(fā)或測試人員自動生成數(shù)據(jù)庫中的測試數(shù)據(jù),并且具有期望的值分布和列間相關(guān)性,生成的測試數(shù)據(jù)既能直接插入到數(shù)據(jù)表中,也能以Insert語句形式記錄在文件中。當然,還可以使用自動化測試工具、其它數(shù)據(jù)庫輔助工具等生成數(shù)據(jù)庫測試數(shù)據(jù)。但以上這些方法只能生成一般的測試數(shù)據(jù),很可能與實際測試工作中要執(zhí)行的測試用例無關(guān)。為了解決這一問題,Binning等人提出了 RQP和Multi-RQP(簡稱MRQP)方法,將Select查詢語句(組)、期望結(jié)果(組)與數(shù)據(jù)庫模式作為輸入,得到滿足該查詢語句(組)、期望結(jié)果(組)與數(shù)據(jù)庫模式的一個數(shù)據(jù)庫實例。

        2 Multi-RQP基本思想

        定義1(RQP) 給出一個SQL查詢語句Q和該語句相應(yīng)的期望結(jié)果R,以及一個關(guān)系數(shù)據(jù)庫模式S(包括數(shù)據(jù)庫的完整性約束),找到一個數(shù)據(jù)庫實例D,使得R=Q(D),同時D滿足S及其各種完整性約束。

        定義2(Multi-RQP) 給出一組任意的SQL查詢語句Q={Q1,Q2,…,Qn}和這些語句相應(yīng)的一組期望結(jié)果 R={R1,R2,…,Rn},以及一個關(guān)系數(shù)據(jù)庫模式S(包括數(shù)據(jù)庫的完整性約束),找到一個數(shù)據(jù)庫實例D,使D對于任意一個Ri=Q(Di)(1≤i≤n),同時D滿足S及其各種完整性約束。

        MRQP的數(shù)據(jù)生成算法如下:

        其中,Q表示一組任意的SQL查詢語句;R表示和查詢語句組Q對應(yīng)的一組期望結(jié)果;S表示一個關(guān)系數(shù)據(jù)庫模式(包括數(shù)據(jù)庫的完整性約束);Query Refinements(Fi,RFi)表示對應(yīng)Q的查詢改進語句組及其期望結(jié)果。

        該算法首先生成一個空的數(shù)據(jù)庫實例D。接著檢查Q中的每一個查詢語句Qi是否存在查詢改進語句Fi。如果存在,則遞歸調(diào)用MRQP,根據(jù)Fi、Rfi和S生成一個數(shù)據(jù)庫實例DFi,然后調(diào)整Ri(從原來的Ri中移除Qi在DFi上的查詢結(jié)果),調(diào)整Qi使Qi與Fi不相交。跟著,將原來的D與DFi及使用RQP(根據(jù)調(diào)整后的Qi,調(diào)整后的Ri與S)得到的數(shù)據(jù)庫實例合并,生成新的D。如果合并出錯,或合并后的D不滿足主鍵約束或唯一約束,則返回錯誤,否則返回數(shù)據(jù)庫實例D。

        3 Multi-RQP應(yīng)用分析

        3.1 RQP-disjoint

        成功使用MRQP生成數(shù)據(jù)庫測試數(shù)據(jù)有一個前提:查詢語句組Q必須為RQP-disjoint,即查詢語句組中Q的任意一對查詢語句(Qj,Qk)(j≠k)必須為RQP-disjoint。如果由Qj定義的視圖的更新獨立于用RQP(Qk,Rk,S)方法得到的任意更新操作(如 insert語句),反之亦然,則這對查詢語句(Qj,Qk)為RQP-disjoint。

        例如數(shù)據(jù)庫模式S為:

        現(xiàn)有兩個查詢語句與相應(yīng)的期望結(jié)果:

        可見,即使R1、R2變?yōu)槠渌担琎1的視圖更新獨立于I2,Q2的視圖更新獨立于 I1。因此 Q1和 Q2為RQP-disjoint。

        通過對 Q1和 R1,Q2和 R2應(yīng)用 MRQP,最終得到數(shù)據(jù)庫測試數(shù)據(jù)如下,滿足數(shù)據(jù)庫模式與完整性約束,如表1和表2所示。

        表1 book表中的數(shù)據(jù)

        表2 course表中的數(shù)據(jù)

        3.2 Query Refinement

        在實際測試工作中,找到符合數(shù)據(jù)庫實際應(yīng)用場景且滿足RQP-disjoint的一組查詢語句并不容易。如,將上例中的 Q1和 R1,Q2和 R2變?yōu)?

        則可能使用MRPQ生成的數(shù)據(jù)庫實例滿足數(shù)據(jù)庫模式的完整性約束,但不符合實際應(yīng)用場景,如表3、表4所示。

        表3 book表中的數(shù)據(jù)

        表4 course表中的數(shù)據(jù)

        在表4中的列bookid值均為'b0000001',表示該課程所用的教材編號均為'b0000001',即均使用'VB'這本書,雖滿足與表book主鍵列bookid的參照完整性,卻不符合實際授課所用教材的實際情況。

        為此,可引入對應(yīng)Q的Query Refinement,即查詢改進語句組。在上例中,已有Q1和R1,Q2和R2的基礎(chǔ)上增加查詢改進語句F21及期望查詢結(jié)果RF21(對應(yīng)Q2):

        應(yīng)用MRQP生成數(shù)據(jù)庫測試數(shù)據(jù)的過程如下:

        D1(即 RQP(Q1,R1,S)):得到的結(jié)果如表3 所示。

        DF21(即 MRQP(F21,RF21,S)):得到的表 book 的數(shù)據(jù)與表3相同,表course中的數(shù)據(jù)如表5所示。

        表5 course表中的數(shù)據(jù)

        R2(即 R2Q2(DF21)):為空;

        D2(即 RQP(Q2,R2,S)∪DF21):其中 RQP(Q2,R2,S)的結(jié)果與表5相同,該結(jié)果與DF21合并后則得到表book(詳見表3)與表course(詳見表5)。

        最終得到的數(shù)據(jù)庫測試數(shù)據(jù)為D1∪D2,即表book(詳見表3)與表course(詳見表5)。

        4 Multi-RQP應(yīng)用拓展

        MRQP方法只能針對查詢語句生成數(shù)據(jù)庫實例,無法對其他數(shù)據(jù)操作(增、刪、改等)生成測試數(shù)據(jù)。如果能把插入語句、刪除語句、修改語句轉(zhuǎn)化為等價的查詢語句,那么問題就基本解決了。

        例如,根據(jù)前面的例子,設(shè)有Delete語句:delete from course where courseid=‘c0000001’,若要使該刪除操作成功,那么數(shù)據(jù)庫實例中應(yīng)有courseid值為‘c0000001’的記錄。則可將該刪除語句轉(zhuǎn)化為對應(yīng)的查詢語句select*from course where courseid=‘c0000001’,期望結(jié)果包含courseid值為‘c0000001’的記錄(如{<‘c0000001’,‘VB programming’,3,54,‘b0000001’>}。類似地,可將插入語句、修改語句轉(zhuǎn)化為等價的查詢語句。之后,應(yīng)用MRQP方法求得相應(yīng)的測試數(shù)據(jù)庫。

        5 結(jié)束語

        通過以上應(yīng)用分析可知,成功使用MRQP生成數(shù)據(jù)庫測試數(shù)據(jù)要求符合 RQP-disjoint,具有Query Refinement。但在實際測試工作中,面對大型數(shù)據(jù)庫測試,找到符合數(shù)據(jù)庫實際應(yīng)用場景且滿足RQP-disjoint的查詢語句組以及Query Refinement,確實比較繁瑣、困難。因此,進一步的研究方向應(yīng)是考慮根據(jù)非RQP-disjoint的任意查詢語句組生成數(shù)據(jù)庫測試數(shù)據(jù)的方法,其中的關(guān)鍵就是保證表間參照完整性。

        [1]Vijay.Tips to Design Test Data Before Executing Your Test Cases[EB/OL].http://www.softwaretestinghelp.com/tips-to-design-test-data-before-executing-your-test-cases,2008-01-29.

        [2]Carsten Binning,Donail Kossmann,Eric Lo.Reverse query processing[C]//IEEE 23rd International Conference on Data Engineering.Washington,DC:ICDE,2007:506-515.

        [3]Carsten Binning,Donail Kossmann,Eric Lo.Multi-RQP generating test database for the functional testing of OLTP applications[C]//Proceeding of the 1st International Wordshop on Testing Database Systems.Newwork:ACM,2008:1-6.

        [4]馮麗云,洪玫,楊秋輝,等.基于逆向查詢處理算法的數(shù)據(jù)庫系統(tǒng)測試數(shù)據(jù)生成方法[J].計算機應(yīng)用,2011,31(4):948-951.

        [5]董敏,畢盛,齊德昱.基于正則表達式的測試數(shù)據(jù)自動生成技術(shù)[J].計算機工程,2009,35(16):29-31.

        [6]朱如龍.SQL Server 2005數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)技術(shù)[M].北京:機械工業(yè)出版社,2010.

        [7]鞏文化,畢學(xué)軍,劉娟.基于數(shù)據(jù)庫的快速測試數(shù)據(jù)生成方法研究[J].電腦知識與技術(shù),2010,6(4):775-777.

        [8]曾明,洪玫,王卓,等.數(shù)據(jù)庫系統(tǒng)測試中測試用例的自動規(guī)范方法[J].計算機工程與設(shè)計,2009,30(15):3577-3580.

        [9]陳鄭珍.基于數(shù)據(jù)庫應(yīng)用系統(tǒng)的數(shù)據(jù)庫測試[J].科技與生活,2012(15):112.

        [10]何湘智,郭得廣,王榮春.一種基于數(shù)據(jù)庫的測試程序自動生成設(shè)計[J].機械工程與自動化,2010(5):166-167.

        [11]李征宇,陳磊.數(shù)據(jù)庫性能評測指標及其測試方法研究[J].電子設(shè)計工程,2011,19(4):4-5.

        [12]費雯悅.一種基于改進遺傳算法的測試用例自動生成研究[J].北京石油化工學(xué)院學(xué)報,2011,19(4):43-48.

        [13]陳劍.基于RQP的測試數(shù)據(jù)庫生成技術(shù)研究[D].長沙:長沙大學(xué),2010.

        [14]潘福霞.大型關(guān)系數(shù)據(jù)庫自動化測試方法研究[D].武漢:華中科技大學(xué),2009.

        猜你喜歡
        數(shù)據(jù)庫方法
        學(xué)習(xí)方法
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        可能是方法不對
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢方法
        国内精品久久久人妻中文字幕| 一区二区在线观看日本视频| 亚洲av高清一区二区| 97久久综合区小说区图片专区 | av无码电影一区二区三区| 国产内射视频免费观看| 新久久国产色av免费看| 看久久久久久a级毛片| 熟女少妇在线视频播放| av无码久久久久久不卡网站| 99热这里只有精品69| 99久久久69精品一区二区三区| 一区二区三区在线免费av| 亚洲av色福利天堂久久入口| 免费av一区二区三区| 人妻 色综合网站| 国产精品区一区第一页| 日本手机在线| 国产小视频一区二区三区| 亚洲av天堂一区二区| 国产又黄又硬又粗| 免费观看激色视频网站| 日韩AV不卡一区二区三区无码| 亚洲高清国产品国语在线观看 | 日本不卡在线视频二区三区| 久久综合亚洲色一区二区三区| 又污又爽又黄的网站| 青草热久精品视频在线观看| 欧美一级视频在线| 一区二区三区在线乱码 | 日本在线观看一区二区视频| 91精品久久久老熟女91精品| 亚洲无av在线中文字幕| 男同gay毛片免费可播放| 欧美日韩不卡中文字幕在线| 久九九久视频精品网站| 日本久久大片中文字幕| 亚洲综合国产成人丁香五月激情 | 国产av无毛无遮挡网站| 无码人妻丰满熟妇啪啪网不卡| 国产精品.xx视频.xxtv|