Datafactory 實際使用案例

Datafactory 實際使用案例

1、       簡介

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

2、       原理說明

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

3、       安裝說明

第一步:解壓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

 

4、       數據庫環境說明

 

 

 

圖表 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

5、       詳細操做步驟

一、            鏈接數據庫,建立工程文件

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

 

圖表 4

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

 

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

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

 

下一步,輸入工程名稱爲「JH_test後,下一步完成便可。

 

 

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

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

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

 

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

 

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

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(日期格式)設置按鈕

 

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

 

四、     Run(運行)

 

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

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

 

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

+

 


 

  

 

 

  • 從數據表插入數據,這裏的數據表是系統提供的。
  • 從數據庫插入數據,咱們須要本身編寫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)   字符型

 

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

實例說明:

一、     外部數據(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’。

六、     外鍵字段的產生

說明:外健是數據庫關係中最普通也是使用最平凡的約束方式,咱們能夠經過二種方式來實現外健約束. 一種是 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 的碼值。

八、 運行(Run)

九、          運行後出現的一些約束問題

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

 

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

 

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

相關文章
相關標籤/搜索