• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    數據庫數據產生工具 DBMonster 應用詳解

    發布: 2007-10-08 11:30 | 作者: 關河 | 來源: 網絡轉載 | 查看: 248次 | 進入軟件測試論壇討論

    領測軟件測試網 在進行某些側重數據計算相關的應用(例如報表程序),或是在對一個應用進行負載和壓力測試時,往往需要在數據庫中產生大量的負載,對測試工程師來說,這個工作往往會不那么輕松。當然,從“現場數據庫”中獲得現有的數據作為測試基礎數據是一個辦法,但如果目前還得不到現場數據,或者,很難獲得現場數據,那該怎么辦呢?
            答案只有一個——使用工具:)。這方面的商業工具有 Quest 公司的 DataFactory 工具,幾乎可以產生任何你所需要的數據。不過,作為開源工具的提倡者,我今天要介紹的,是一個可用于這個目的的開源測試工具 DBMonster。
            DBMonster ( http://dbmonster.kernelpanic.pl )是一個Java的開源項目,通過JDBC方式連接數據庫,因此可以在任何支持Java和JDBC的平臺上運行。DBMonster開發的原意是為數據庫開發者服務,可以協助產生大量的規則或不規則數據,便于數據庫開發者基于這些數據進行數據庫的調優。
            DBMonster通過兩個XML文件(配置文件 和 schema文件)控制數據產生的行為,配置文件指明需要連接的數據庫、連接使用的用戶名和口令、需要操作的sheme、重試次數等全局設置,而scheme文件則指明針對每張數據表的每個字段產生數據的規則。

    DBMonster的下載和安裝

            DBMonster的下載和安裝非常簡單,直接從sourceforge上下載dbmonster-core,解壓到本地的任一目錄即可。如果需要DBMonster和Ant的集成,則還需下載dbmonster-ant。

    DBMonster的運行

            DBMonser的運行也很簡單,DBMonster解壓后的bin目錄中有dbmonster.bat和dbmonster文件,如果是在windows平臺上,則可以直接運行dbmonster.bat文件;如果是在Unix平臺上,則運行dbmonster文件。
            DBMonster運行時的主要參數是-c和-s,分別指明配置文件和schema文件的位置。缺省的配置文件位于DBMonster的安裝目錄下,名稱是dbmonster.properties。例如,如果我們使用缺省的配置文件,指明schema文件為test-schema.xml,則命令行為:
    dbmonster -s test-schema.xml
    另外,DBMonster可以直接抓取數據庫schema中的表結構,使用--grab參數即可。但要注意的是,如果你沒有在配置文件中指定schema名稱,dbmonster會抓取全部的表。

    DBMonster的配置文件

            缺省的配置文件位于DBMonster的安裝目錄下,名稱是dbmonster.properties。其內容如下(以Oracle為例,其他的數據庫類型請自行修改JDBC驅動名稱、數據庫連接字符串等內容):
    dbmonster.jdbc.driver=oracle.jdbc.driver.OracleDriver dbmonster.jdbc.url=jdbc:oracle:thin:@testdb:1521:test dbmonster.jdbc.username=student dbmonster.jdbc.password=123456 dbmonster.jdbc.transaction.size=50 # for Oracle and other schema enabled databases dbmonster.jdbc.schema=student # maximal number of (re)tries dbmonster.max-tries=1000 # default rows number for SchemaGrabber dbmonster.rows=1000 # progres monitor class dbmonster.progress.monitor=pl.kernelpanic.dbmonster.ProgressMonitorAdapter

    DBMonster的schema文件

            schema文件描述了產生數據的規則,在DBMonster中,數據的產生是通過Generator生成的,DBMonster中缺省的數據Generator包括兩個Key Generator(用于產生不重復的數據,分別為MaxKeyGenerator和StringKeyGenerator)和 10 個Data Generator。以下簡單說明一下Data Generator的使用。
            BinaryGenerator用于從外部文件中獲取二進制數據并插入相應字段,該Generator有兩個屬性,分別為file和nulls,file屬性描述數據來源,而nulls屬性則給出該字段生成null的幾率。
            BooleanGenerator用于產生bool型數據,該Generator包括兩個屬性,分別為probability和nulls,probability屬性描述產生true值數據的幾率,nulls屬性給出生成null的幾率。
            ConstantGenerator用于產生固定值的數據,該Generator只有一個屬性constant,給出要插入數據庫的值;
            DateTimeGenerator用于產生DateTime型數據,該Generator包括四個屬性,分別是startDate,endDate,returnedType和nulls,startDate描述開始時間,endDate描述終止時間,格式為“yyyy-mm-dd hh24:MM:ss”;returnedType描述生成數據的類型,可以為date、time或是timestamp;
            DirectoryGenerator用于根據本地文件(字典)的條目向數據庫插入數據,該Generator包括兩個屬性,分別為dictFile和unique,dictFile指明字典文件所在的位置,unique指明產生的數據是unique的還是random的;
            ForeignKeyGenerator用于為設置了外鍵的字段生成數據,該Generator包含兩個屬性,分別是tableName和columnName,tableName指明外鍵引用的表名,columnName指明外鍵引用的字段名;
            NullGenerator用于產生null類型的數據,該Generator不帶任何參數(只產生null);
            NumberGenerator用戶產生數值類型的數據,該Generator包括5個屬性,分別是minValue、maxValue、returnedType、scale和nulls。其中,minValue和maxValue分別給出產生值的下邊界和上邊界;returnedType給出生成數據的類型,可以是short、integer、long、float、double和numeric類型;scale指明小數位數;nulls表示產生null的幾率;
            StringGenerator用于產生字符串類型的數據,該Generator包括5個屬性,分別是minLength、maxLength、allowSpaces、excludeChars和nulls。其中,minLength和maxLength限定了字符串長度;allowSpaces控制字符串中是否包含空格;excludeChars排除產生字符串時不使用的字符;nulls表示產生null的幾率;
            StringChoiceGenerator用于從給定的字符串中隨機挑選一個作為字段內容,該Generator包含兩個屬性,分別是choice和nulls。其中choice是以逗號分隔的字符串,逗號分隔開的每個內容是一個字段可用的內容。
            例如,如果我們有一張數據表的DDL如下:
    CREATE TABLE "TEST"."TEST_DATA" ("INT_ID" NUMBER NOT NULL, "IPADDR" VARCHAR2(15 byte) NOT NULL, "COMPRESS_DAY" DATE NOT NULL, "CPUIDLE" NUMBER, "CPUSYSUTIL" NUMBER, "CPUUSRUTIL" NUMBER, "SYSTEM_LOAD" NUMBER, "MEMRATIO" NUMBER, "MEMFREE" NUMBER, "SWAPFREE" NUMBER, "SWAPRATIO" NUMBER, "BUSY_FLAG" NUMBER(5)) TABLESPACE "TS_IPWEB" PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 120K NEXT 512K MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0) LOGGING
    則,對應的產生數據的schema文件如下(只包含部分字段):
    <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE dbmonster-schema PUBLIC "-//kernelpanic.pl//DBMonster Database Schema DTD 1.1//EN" "http://dbmonster.kernelpanic.pl/dtd/dbmonster-schema-1.1.dtd"> <dbmonster-schema> <name>ipnms</name> <table name="test.test_data" rows="500"> <column name="int_id"> <generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> <property name="nulls" value="0"/> <property name="minValue" value="20"/> <property name="maxValue" value="20"/> <property name="returnedType" value="numeric"/> <property name="scale" value="0"/> </generator> </column> <column name="ipaddr"> <generator type="pl.kernelpanic.dbmonster.generator.ConstantGenerator"> <property name="constant" value="10.1.200.201"/> </generator> </column> <column name="compress_day"> <generator type="pl.kernelpanic.dbmonster.generator.DateTimeGenerator"> <property name="nulls" value="0"/> <property name="startDate" value="2006-03-01 00:00:00"/> <property name="endDate" value="2006-03-31 00:00:00"/> <property name="returnedType" value="date"/> </generator> </column> <column name="disk_dir"> <generator type="pl.kernelpanic.dbmonster.generator.ConstantGenerator"> <property name="constant" value="/var/mqm"/> </generator> </column> <column name="disk_device"> <generator type="pl.kernelpanic.dbmonster.generator.ConstantGenerator"> <property name="constant" value="/dev/c0s0t1"/> </generator> </column> <column name="disk_used_rate"> <generator type="pl.kernelpanic.dbmonster.generator.NumberGenerator"> <property name="nulls" value="0"/> <property name="minValue" value="1"/> <property name="maxValue" value="80"/> <property name="returnedType" value="numeric"/> <property name="scale" value="0"/> </generator> </column> </table> </dbmonster-schema>

    DBMonster 和 DataFactory 的對比

            作為一款開源的數據產生工具,DBMonster與Data Factory想比較,在功能方面DBMonster顯得弱一些,例如,在產生composite類型的字段、在自動查找關聯表方面,DBMonster都只能讓用戶自己解決;另外,在使用的便利性方面DBMonster也沒有提供漂亮的GUI界面,因此肯定會有些人覺得這個工具不好用(但對我來說,我似乎更加習慣于這種用xml描述數據產生的方式)。
    不過,DBMonster其實已經可以勝任大多數情況下的數據庫數據產生了,我在使用中發現的它的最大的局限性是在針對具有多字段約束(例如,包含多個字段的unique index約束)時數據產生的不便,當然,在DBMonster的Manual中也提到了,可以通過自己寫代碼來擴展這些,而且也給出了相應的代碼示例,但對普通用戶來說,還是希望工具能夠用起來更加方便吧。

    結語

            如果你正在尋找一個能夠為你產生大量數據庫數據的免費的工具,毫無疑問,DBMonster可以幫助你;如果你希望找到一個可以和Ant工具協作的數據產生器,DBMonster是一個很好的選擇;如果更進一步,你希望找到一個可以自行擴展的數據產生工具,那么相信我,DBMonster一定是你的最佳選擇:) 

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 數據庫 dbmonster


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>