http://blog.csdn.net/lykangjia/article/details/53837070轉載《IT沖浪者》
上次在我的博客中講述了
quest公司的spotlight系列軟件,這次來扯淡一下quest公司的另一測試輔助軟件 datafactory(數據工廠),顧名思義,數據工廠是生產數據的,主要應用領域是性能測試中的大數據量測試, 也就是性能測試數據准備階段。
原理說明:
通過和數據庫進行連接后,對選定表的字段設定一定的插入規則,然后批量插入記錄。Datafactory支持各種主流數據庫(Oracle、DB2、MS SQL),甚至excel、access等。下面以以主流的oracle為例進行說明。
環境說明:
Oracle10g,創建2個表,一個是testtable,一個testtable2。計划用datafactory往testtable中插入記錄,其中需要讀取testtable2中的部分字段信息。testtable表的字段類型如下(字段類型已經盡可能覆蓋多種情況):
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條,進入數據庫,執行查詢,可以發現記錄數正確。