http://blog.csdn.net/lykangjia/article/details/53837070轉載《IT衝浪者》mysql
上次在個人博客中講述了sql
quest公司的spotlight系列軟件,此次來扯淡一下quest公司的另外一測試輔助軟件 datafactory(數據工廠),顧名思義,數據工廠是生產數據的,主要應用領域是性能測試中的大數據量測試, 也就是性能測試數據準備階段。數據庫
原理說明:多線程
經過和數據庫進行鏈接後,對選定表的字段設定必定的插入規則,而後批量插入記錄。Datafactory支持各類主流數據庫(Oracle、DB二、MS SQL),甚至excel、access等。下面以以主流的oracle爲例進行說明。併發
環境說明:oracle
Oracle10g,建立2個表,一個是testtable,一個testtable2。計劃用datafactory往testtable中插入記錄,其中須要讀取testtable2中的部分字段信息。testtable表的字段類型以下(字段類型已經儘量覆蓋多種狀況):oop
Testtable表:性能
Testable2字段類型和testtable相似,裏面記錄狀況以下:測試
編號大數據 |
姓名 |
性別 |
出生日期 |
畢業院校 |
分數 |
照片 |
考覈狀況 |
1 |
張三 |
1 |
2009-12-21 |
北京大學 |
85.5 |
<BLOB> |
<NCLOB> |
2 |
李四 |
0 |
2002-7-16 |
清華大學 |
78.2 |
<BLOB> |
<NCLOB> |
3 |
王五 |
1 |
1999-6-8 |
湖南大學 |
65.5 |
<BLOB> |
<NCLOB> |
詳細操做描述:
安裝完datafactory以後,進入file菜單下面點擊new,而後選擇oracle數據庫類型。
而後會要求輸入oracle的net服務,和鏈接的用戶名和密碼。
選擇要插入記錄的表。
進入設置插入表規則界面,對每一個字段的插入規則在右邊界面進行設置。
設定規則,testtable表中編號字段爲long integer類型,這裏設定爲插入順序值(insert sequential values)。
設定規則,testtable表中姓名字段爲vachar2類型,這裏設定從testtable2表中查詢結果隨機取值。
設定規則,testtable表中出生日期爲date類型,這裏設定設定一個隨機的時間,時間跨度爲1982年-1988年的任何一天。
設定規則,testtable表中分數爲爲number類型,這裏設定設定一個隨機數值,數字跨度爲50-85.5。
設定規則,testtable表中考覈狀況爲NCLOB類型,這裏設定隨機從文件夾中的text文件得到內容。
設定規則,testtable表中照片爲BLOB類型,這裏設定隨機從文件夾中的得到圖片。
設定完畢後,點擊上面的run按鈕,成功執行插入。插入後的效果以下所示:
引起的另一個問題:
由於datafactory試用版只能每次插入100條數據,購買正版又沒有錢,而大數據量的測試動不動就要100萬級的數據,那要準備100萬條數據但是要點10000次鼠標啊,那樣的話,性能測試尚未開始,人就已經崩潰了。其實,有不少辦法可以解決這個問題。如寫一個多線程的程序,反覆觸發插入事件。固然最簡單的辦法,仍是用HP公司的Loadrunner錄一段插入的腳本,而後設定幾個虛擬用戶(原理上也是多線程插入的方式)進行插入就能夠輕鬆搞定了。
錄製插入腳本,把整個插入操做看成一個事務。
設定場景,這裏設定8個虛擬用戶,併發插入,時限爲5分鐘。
場景運行狀況,插入事務一共經過了2635個。
從上面的事務來看,一共有2635個事務經過,由於試用版每次插入100條數據,則應該插入的總記錄數爲:2635×100=263500條,進入數據庫,執行查詢,能夠發現記錄數正確。