Datafactory 實際使用案例


Datafactory 實際使用案例

一、       簡介

QuestDataFactory 是一種快速的、易於產生測試數據工具,它能建模復雜數據關系,且有帶有GUI界面。DataFactory是一個功能強大的數據產生器,它允許開發人員和QA毫不費力地產生百萬行有意義的測試數據。

二、       原理說明

通過和數據庫進行連接后,首先讀取數據庫中表的schema(概要),即表的定義之類的內容,以列表的形式顯示;然后由用戶定制要產生數據的具體內容,如數字范圍、字符串長度、要產生數據記錄的個數等等,最后運行工程,批量生成數據,Datafactory支持各種主流數據庫(oracle、DB2、MS SQL),甚至excel、access等。下面以以主流的oracle為例進行說明。

三、       安裝說明

第一步:解壓Quest DataFactory v5.6 英文正式版.zip,執行setup.exe文件,按向導安裝。

第二步:運行Keygen.exe,在Site Message中設置名稱,下拉框中選擇DataFactory生成 key。

 

 

第三步:安裝成功后,使用key在bin文件中的工具(dfactory.exe)進行注冊,選擇DataFactory,點擊Edit key,輸入第二步中生成的key以及Site message中設置的名稱即可。

 

四、       數據庫環境說明

 

 

 

圖表 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中的字段信息:

圖表 2

下圖為UP_STAFFROOM中的字段信息

圖表 3

五、       詳細操作步驟

1、            連接數據庫,創建工程文件

安裝完datafactory之后,進入file菜單下面點擊new,然后選擇oracle數據庫類型。

 

圖表 4

下一步,輸入需要連接數據庫服務、用戶名和密碼。

 

下一步,選擇需要插入數據的表UP_STAFFROOM和JH_COURSE。

注意:“Fetch Dependent Tables”按鈕,用來加入對應所選表在數據庫設計中有依賴關系的表,防止生成數據庫時的疏漏。(不建議使用)

 

下一步,輸入工程名稱為“JH_test后,下一步完成即可。

 

 

2、            設置數據量及生成數據方式

Datafactory可對每個字段進行設置,在導入數據表時工具已通過數據字典讀取每個字段的數據類型,根據不同的數據類型datafactory可進行不同的規則設置:

首先選擇左側的表設置需要插入的數據數量,如圖:

 

Datafactory工具欄中的setting可進行通用設置,如下所示

 

3、            常見的三種數據類型的設置

1)   數字型

  1. 從本地表格中選擇數據

將本地數據文件導入DataFactory的配置中,下次可以方便選擇。

 

導入數據文件的操作如下:

第一步:准備數據文件,要求TXT格式,文件模版。

COURSENAME:varchar(64)

評論寫作

論文寫作

外貿英語

專業英語

低溫物理導論

英語影視

英語聽說訓練

 …………

第二步:按圖將數據文件導入DF。

 

 

 

 

  1. 取相關聯的表的數據信息(主從表關系的字段)

比如,有2張表課程表(COURSE)和教研室表(STAFFROOM),課程的STAFFROOMID需要部門表STAFFROOMID中取值,如圖設置:

 

  1. 從數據庫的查詢結果中選擇數據(具有主鍵關系和轉碼的字段)

將查詢的sql 語句粘入文本框,如教研室表中的STAFFROOMID信息需要在部門表的PEDID中取值,如圖設置:

 

  1. 插入連續的值

   我們能夠設定起始值及增長值的大小,系統自動計算結果,如:起始值為001,增長值為1,則產生的數據序列為001,002,003,……例如編號(COURSENO),具體設置如下圖:

 

  1. 插入一定范圍內的隨機值

插入隨機值,我們可以設置其范圍,則結果大小在設定范圍之內,所以選擇Insert random values方式,例如學分(CREDITHOUR)設置為0—20之間隨機取值,具體設置如下圖:

 

  1. 插入常量

將字段信息設置為一個常量,例如總學時(TOTALPERIOD)設置為80,方法如圖所示:

 

2)   字符型

  1. 從本地表格中選取數據

具體方式參考:(A.從本地表格中選擇數據

  1. 取相關聯的表的數據信息(主從表關系的字段)

具體方式參考:(B取相關聯的表的數據信息(主從表關系的字段))

  1. 從數據庫的查詢結果中選擇數據(具有主鍵關系和轉碼的字段)

具體方式參考:(C從數據庫的查詢結果中選擇數據(具有主鍵關系和轉碼的字段))

  1. 插入隨機的字符組合

插入隨機的字符組合,可以設置字符組合的長度,例如SHORTNAME(課程簡稱),具體設置如下圖:

 

  1. 插入常量字符串

將字段信息設置為一個常量字符串,例如“是否實踐環節”(ISPRACTICE)這個字段,可以根據體的業務要求輸入一個常量字符串“是”或“否”,具體設置如圖所示:

 

  1. 插入組合文本,可以插入文本,數字,日期時間混合的文本。

設置一個固定字符串+一個遞增值為1的流水號的字段。

 

例如課程名稱(COURSENAME)需要設置固定字符串為“英語”,遞增值為1,具體操作如下:

第一步:選擇Build a composite field(組合文本)方式。

 

第二步:通過點擊的 add 按鈕得到下圖界面

 

第三步:根據具體要求選擇首先選擇Text字符型,點擊Ok,得到下圖,進行設置如下:

 

第四步:點擊Add,因為要插入遞增流水號,隨意選擇Numerice,點擊ok得到下圖進行設置:

3)   日期/時間

  1. 取相關聯的表的數據信息(主從表關系的字段)

具體方式參考:(B取相關聯的表的數據信息(主從表關系的字段))

  1. 從數據庫的查詢結果中選擇數據(具有主鍵關系和轉碼的字段)

具體方式參考:(C從數據庫的查詢結果中選擇數據(具有主鍵關系和轉碼的字段))

  1. 插入連續的時間

插入連續的時間,可以指定起始時間和增長時間,例如入學時間(ENROLDATE)設置如下圖:

 

  1. 插入隨機的時間(可以設置時間范圍)

插入隨機的時間,可以設置時間范圍,例如畢業時間(GRADUATEDATE)具體設置如下圖:

 

  1. 插入當前系統時間

插入系統當前的時間,可以設置日期的格式。

 

格式設置方式如下:

第一步:點擊Format(日期格式)設置按鈕

 

第二步:進入頁面進行設置

 

4、     Run(運行)

 

5、          運行時出現的一些關於約束的問題

出現一些字段有關於約束的提示

 

根據提示的字段到數據庫中進行相關約束的查找查詢,后根據具體的字段約束,選擇合適的方式進行設置。

+

 


 

  

 

 

  • 從數據表插入數據,這里的數據表是系統提供的。
  • 從數據庫插入數據,我們需要自己編寫SQL語句從數據庫中提取數據。
  • 用表達式產生數據,我們可以編寫表達式,系統將使用結果生成數據。
  • 插入連續的值,我們能夠設定種子及增長值的大小,系統自動計算結果,如:種子為1,增長值為2,則產生的數據序列為1,3,5,7……
  • 插入隨機值,我們可以設置其范圍,則結果大小在設定范圍之內。
  • 插入常量,結果將為常量值

實例說明:

數據型有4種設置規則 Insert values  from  an arithmetic expression、Insert sequential values、Insert random values、Insert a constant value.

  1. 1.   Insertvalues  from  an arithmetic expression方式如下

用表達式產生數據,我們可以編寫表達式,系統將使用結果生成數據,如下圖:

 

  1. 2.   Insert sequential values方式如下:

如JH_COURSE表中的COURSENO(教研室編號),COURSENO編號字段為long integer類型,這里設定為插入順序值(insert sequential values)。

 

  1. 3.   Insert random values方式設定規則如下:

如JH_COURSE表中的TOTALPERIOD(總學時)為number類型,這里設定一個隨機數值(Insert random values),數字跨度為1—200如下圖:

 

  1. 4.   Insert a constant value.方式

例如TOTALPERIOD(總學時),我們需要設置它為一個固定的數字,就直接選擇Insert a constant value(插入常量)方式,然后自定義將要應用的常量數據,如下圖:

 

4)   字符型

 

  • 從數據表中插入數據。
  • 從數據庫中插入數據。
  • 從外部文件中插入數據。
  • 插入隨機的字符組合,可以設置字符組合的長度。
  • 插入常量字符串
  • 插入組合文本,可以插入文本,數字,日期時間混合的文本。

實例說明:

1、     外部數據(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

  1. 1.   Insert sequential values方式

例如JH_COURSE表中的CREATETIME(創建時間),我們需要設置當前時間+遞增值為1,遞增類型為月的規則,我們將在Option中先選擇Insert sequential values方式,start選擇當前時間,Increment為1,類型選擇month,進行設置,如下圖:

 

  1. Insert  random  values方式

例如JH_COURSE表中的CREATETIME(創建時間),在Option中先選擇Insert  random  values方式(某一個時間段),我們在Between this date時間選填控件中進行設置,時間跨度選擇為2005年-2013年的任何一天,如下圖:

 

  1. Insert  the  current  system  date 方式

  例如JH_COURSE表中的LASTMODIFYTIME(最后修改時間),在Option中先選擇Insert  the  current  system  date方式(插入系統當前時間),既然是最后修改時間那我們就設置為系統當前日期。

  1. 此外可以通過weekdays and weekend days(工作日+周末)/weekdays only(只有工作日)/weekend days only(只有周末)來設置周末,如下圖:

可通過format選項來設置日期格式,分別設置Date和Time的格式,生成數據將以設置樣式保存到數據庫中,樣式可參照最下方Sample。此外,也可以在Custom Format選項中指定自定義格式,如‘2010-08-18’。

6、     外鍵字段的產生

說明:外健是數據庫關系中最普通也是使用最平凡的約束方式,我們可以通過二種方式來實現外健約束. 一種是 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 如圖:

 

 

7、 字段轉碼問題

例如: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 的碼值。

8、 運行(Run)

9、          運行后出現的一些約束問題

如果運行中出現一些字段有關於約束的提示

 

根據提示的字段到數據庫中進行相關約束的查找查詢。

 

然后根據具體的字段約束,選擇合適的方式進行設置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM