QuestDataFactory 是一種快速的、易於產生測試數據工具,它能建模複雜數據關係,且有帶有GUI界面。DataFactory是一個功能強大的數據產生器,它容許開發人員和QA絕不費力地產生百萬行有意義的測試數據。sql
經過和數據庫進行鏈接後,首先讀取數據庫中表的schema(概要),即表的定義之類的內容,以列表的形式顯示;而後由用戶定製要產生數據的具體內容,如數字範圍、字符串長度、要產生數據記錄的個數等等,最後運行工程,批量生成數據,Datafactory支持各類主流數據庫(oracle、DB二、MS SQL),甚至excel、access等。下面以以主流的oracle爲例進行說明。數據庫
第一步:解壓Quest DataFactory v5.6 英文正式版.zip,執行setup.exe文件,按嚮導安裝。express
第二步:運行Keygen.exe,在Site Message中設置名稱,下拉框中選擇DataFactory生成 key。oracle
第三步:安裝成功後,使用key在bin文件中的工具(dfactory.exe)進行註冊,選擇DataFactory,點擊Edit key,輸入第二步中生成的key以及Site message中設置的名稱便可。dom
圖表 1數據庫設計
數據庫中有3個表,一個是FW_DEPARTMRNT(部門表),一個UP_STAFFROOM(教研室表),另外一個爲JH_COURSE(課程表)。如今咱們須要用datafactory往JH_COURSE中插入記錄,JH_COURSE中的STAFFROOMID須要讀取UP_STAFFROOM中的STAFFROOMID,而 UP_STAFFROOM中的STAFFROOMID又取自FW_DEPARTMRNT的DEPID,因此咱們須要先給UP_STAFFROOM插入記錄,才能在繼續添加課程記錄。工具
下圖爲JH_COURSE中的字段信息:測試
圖表 2ui
下圖爲UP_STAFFROOM中的字段信息this
圖表 3
安裝完datafactory以後,進入file菜單下面點擊new,而後選擇oracle數據庫類型。
圖表 4
下一步,輸入須要鏈接數據庫服務、用戶名和密碼。
下一步,選擇須要插入數據的表UP_STAFFROOM和JH_COURSE。
注意:「Fetch Dependent Tables」按鈕,用來加入對應所選表在數據庫設計中有依賴關係的表,防止生成數據庫時的疏漏。(不建議使用)
下一步,輸入工程名稱爲「JH_test後,下一步完成便可。
Datafactory可對每一個字段進行設置,在導入數據表時工具已經過數據字典讀取每一個字段的數據類型,根據不一樣的數據類型datafactory可進行不一樣的規則設置:
首先選擇左側的表設置須要插入的數據數量,如圖:
Datafactory工具欄中的setting可進行通用設置,以下所示
1) 數字型
將本地數據文件導入DataFactory的配置中,下次能夠方便選擇。
導入數據文件的操做以下:
第一步:準備數據文件,要求TXT格式,文件模版。
COURSENAME:varchar(64) 評論寫做 論文寫做 外貿英語 專業英語 低溫物理導論 英語影視 英語據說訓練 ………… |
第二步:按圖將數據文件導入DF。
好比,有2張表課程表(COURSE)和教研室表(STAFFROOM),課程的STAFFROOMID須要部門表STAFFROOMID中取值,如圖設置:
將查詢的sql 語句粘入文本框,如教研室表中的STAFFROOMID信息須要在部門表的PEDID中取值,如圖設置:
咱們可以設定起始值及增加值的大小,系統自動計算結果,如:起始值爲001,增加值爲1,則產生的數據序列爲001,002,003,……例如編號(COURSENO),具體設置以下圖:
插入隨機值,咱們能夠設置其範圍,則結果大小在設定範圍以內,因此選擇Insert random values方式,例如學分(CREDITHOUR)設置爲0—20之間隨機取值,具體設置以下圖:
將字段信息設置爲一個常量,例如總學時(TOTALPERIOD)設置爲80,方法如圖所示:
2) 字符型
具體方式參考:(A.從本地表格中選擇數據)
具體方式參考:(B取相關聯的表的數據信息(主從表關係的字段))
具體方式參考:(C從數據庫的查詢結果中選擇數據(具備主鍵關係和轉碼的字段))
插入隨機的字符組合,能夠設置字符組合的長度,例如SHORTNAME(課程簡稱),具體設置以下圖:
將字段信息設置爲一個常量字符串,例如「是否實踐環節」(ISPRACTICE)這個字段,能夠根據體的業務要求輸入一個常量字符串「是」或「否」,具體設置如圖所示:
設置一個固定字符串+一個遞增值爲1的流水號的字段。
例如課程名稱(COURSENAME)須要設置固定字符串爲「英語」,遞增值爲1,具體操做以下:
第一步:選擇Build a composite field(組合文本)方式。
第二步:經過點擊的 add 按鈕獲得下圖界面
第三步:根據具體要求選擇首先選擇Text字符型,點擊Ok,獲得下圖,進行設置以下:
第四步:點擊Add,由於要插入遞增流水號,隨意選擇Numerice,點擊ok獲得下圖進行設置:
3) 日期/時間
具體方式參考:(B取相關聯的表的數據信息(主從表關係的字段))
具體方式參考:(C從數據庫的查詢結果中選擇數據(具備主鍵關係和轉碼的字段))
插入連續的時間,能夠指定起始時間和增加時間,例如入學時間(ENROLDATE)設置以下圖:
插入隨機的時間,能夠設置時間範圍,例如畢業時間(GRADUATEDATE)具體設置以下圖:
插入系統當前的時間,能夠設置日期的格式。
格式設置方式以下:
第一步:點擊Format(日期格式)設置按鈕
第二步:進入頁面進行設置
出現一些字段有關於約束的提示
根據提示的字段到數據庫中進行相關約束的查找查詢,後根據具體的字段約束,選擇合適的方式進行設置。
+
實例說明:
數據型有4種設置規則 Insert values from an arithmetic expression、Insert sequential values、Insert random values、Insert a constant value.
用表達式產生數據,咱們能夠編寫表達式,系統將使用結果生成數據,以下圖:
如JH_COURSE表中的COURSENO(教研室編號),COURSENO編號字段爲long integer類型,這裏設定爲插入順序值(insert sequential values)。
如JH_COURSE表中的TOTALPERIOD(總學時)爲number類型,這裏設定一個隨機數值(Insert random values),數字跨度爲1—200以下圖:
例如TOTALPERIOD(總學時),咱們須要設置它爲一個固定的數字,就直接選擇Insert a constant value(插入常量)方式,而後自定義將要應用的常量數據,以下圖:
4) 字符型
實例說明:
一、 外部數據(TXT 文檔)的引入
說明: 在測試數據庫時,不少狀況要求根據真實的數據來作必要的測試,這就須要咱們能夠經過外部自定義的文檔來產生數據表中的數據,好比我如今有一個 TXT 文檔,裏面我想要錄入到數據表」港口」的值,上海,大連,香港,福建,青島 .....
首先建立一個 TXT 文件,名字任意,格式以下
注意: 字段名稱:字段類型 (字段類型長度)
引入 TXT 文件的方法:
右擊項目名稱(好比說這裏的 JH_COURSE),如圖下圖所視
選擇 Insert Create Datatable 進入以下圖界面
點選 Import data from file,點擊下一步,點擊 Browse 選擇相應的 TXT 文件,點擊下一步,而後爲該引入的 TXT 自定義一個名字,下一步,最後完成引入 TXT 文件的操做.引入成功後,而後選擇Insert value from data table方式,在data中選擇剛剛定義的那個名稱。
例如JH_COURSE表中的COURSENAME(教研室名稱),咱們須要設置的字段要求是:教研室+一個自動增長的流水號,方式以下:
首先選擇Build a composite field(建立一個合成字段)方式,而後咱們來對這個合成字段作格式設置,經過點擊的 add 按鈕獲得下圖界面
由於咱們要產生COURSENAME這個固定的字符,因此咱們選擇 Text 類型,點擊 OK,進入下圖界面,在 Option 中選擇對應的 Insert a string constant ,
而後在 Constant Text Expression 中輸入自定義的字符,好比這裏的教研室,完成後保存設置
由於還要生成一個流水帳號,因此還要經過點擊的 add 按鈕,咱們選擇 Numeric 類型
點擊 OK,進入下圖界面,在 Option 中選擇對應的 Insert sequential values,
而後進行字段規則的設置,start表示開始流水號,Increment表示遞增值,
完成後保存設置
對於合成字段的元素,選取後能夠進行策略修改(Modify),刪除(Remove),順序上移(Move up),順序下移(Move down)
5) 日期/時間
日期/時間有3種設置規則 Insert sequential values、Insert random values、Insert the current system date
例如JH_COURSE表中的CREATETIME(建立時間),咱們須要設置當前時間+遞增值爲1,遞增類型爲月的規則,咱們將在Option中先選擇Insert sequential values方式,start選擇當前時間,Increment爲1,類型選擇month,進行設置,以下圖:
例如JH_COURSE表中的CREATETIME(建立時間),在Option中先選擇Insert random values方式(某一個時間段),咱們在Between this date時間選填控件中進行設置,時間跨度選擇爲2005年-2013年的任何一天,以下圖:
例如JH_COURSE表中的LASTMODIFYTIME(最後修改時間),在Option中先選擇Insert the current system date方式(插入系統當前時間),既然是最後修改時間那咱們就設置爲系統當前日期。
可經過format選項來設置日期格式,分別設置Date和Time的格式,生成數據將以設置樣式保存到數據庫中,樣式可參照最下方Sample。此外,也能夠在Custom Format選項中指定自定義格式,如‘2010-08-18’。
說明:外健是數據庫關係中最普通也是使用最平凡的約束方式,咱們能夠經過二種方式來實現外健約束. 一種是 Insert value from a data table,另外一種是 Insert value from an sql database
1) Insert value from an sql database 方式
例如:UP_STAFFROOM表中STAFFROOMID和 FW_DEPARTMENG表中 DEPID 之間是外健關係, 因此選擇從數據庫插入數據,咱們須要本身編寫SQL語句從數據庫中提取數據,STAFFROOMID須要取DEPID值,所以咱們使用Insert value from an sql database方式。
咱們把DEPID字段產生的方式先設置成爲寫 SQL 語句的方式,而後在SQL Statement 中填入Select DEPID from GDS_CS.FW_DEPRATMENT 這個簡單的SQL語句使STAFFROOMID 獲得 DEPID 的值,而且用戶能夠在 SQL 返回的結果中,篩選所須要的內容 if more than one recode is returned(若是返回的條件超過一行),Use first record(只選擇第一行做爲當前字段值),Select a record at random(隨機選擇一個值做爲當前字段值) 注意:因爲教研室ID字段是惟一的,因此要勾選Unique(惟一的)。
2) Insert value from an sql database 方式
例如:表UP_STAFFROOM中的SATFFROOMID與表JH_COURSE中的SATFFROOMID爲外鍵關係,因此表JH_COURSE中的SATFFROOMID須要取值與表UP_STAFFROOM中的SATFFROOMID,須要使用Insert value from a data table 方式,分別出現如下設置內容,在Data(產生數據的數據源)中選擇與之關聯的~GDS_CS.UP_STAFFROOM 表,而後在Field中選擇SATFFROOMID 如圖:
例如:FW_COURSE表中的SUBJECTTYPE(課程學科分類碼),轉碼問題須要選用Insert value from an sql database方式,首先在數據庫中查詢出須要轉碼的字段。
根據表中的提示,先在FW_CODELIST視圖中查看有沒有KCXKFLM的碼值。
咱們把須要轉碼的字段產生的方式先設置成爲寫 SQL 語句的方式,而後在SQL Statement 中填入select CODEVALUE from GDS_CS.FW_CODELIST where CODETYPE='KCXKFLM' 這個簡單的SQL語句使SUBJECTTYPE獲得KCXKFLM 的碼值。
若是運行中出現一些字段有關於約束的提示
根據提示的字段到數據庫中進行相關約束的查找查詢。
而後根據具體的字段約束,選擇合適的方式進行設置。