在做單元測試和功能測試的時候,需要比較多的數據來發現問題,對於軟件工程師來講,手動輸入這些數據
是蠻浪費時間的事。為了減輕咱們工程師的工作壓力和工作量,我開發了這個系統。
希望大家在使用過程中提供更多寶貴意見。
該系統的主要功能
1> 自動生成字符串、中文字符串、整數和浮點數。
2> 目前支持MSSql,MySql, Oracle,Sqlite
3> 對需要加密用戶密碼的系統,提供加密
4> 支持第三方開發的插件
該系統的使用方法
該系統已內置了三種常用的數據庫,包括MSSql,MySql, 和Oracle.
對於這幾種數據庫的使用方法如下: (在App.Config需要配置ConnectionString)
MSSql:
//定義插入數據表的sql語句
string query = "insert into Users(Email,Password, Salt, Status, Online, CreateDate, VerifyDate, LastLoginDate) values(@Email, @Password, @Salt, @Status, @Online, @CreateDate, @VerifyDate, @LastLoginDate)";
//創建 PreparedStatement
PreparedStatement pstmt = new PreparedStatement(DBType.MSSql, query);
for (int index = 0; index < 1000000; index++)
{
var email = Gloser.GetRandomEmail(8, "@gmail.com");
var password = Gloser.getRandomString(8);
pstmt.SetParam("@Email", email);
pstmt.SetParam("@Password", CryptographyManager.EncodePassowrd(password));
pstmt.SetParam("@Salt", Gloser.getRandomString(15));
pstmt.SetParam("@Status", 1);
pstmt.SetParam("@Online", 1);
pstmt.SetParam("@CreateDate", DateTime.Now);
pstmt.SetParam("@VerifyDate", DateTime.Now);
pstmt.SetParam("@LastLoginDate", DateTime.Now);
pstmt.AddBatch();
if ((index > 0) && (index % 500 == 0))
{
pstmt.Execute();
pstmt.ClearParameters();
}
}
pstmt.Execute();
MySql
string query = "insert into settings(k,v) values(@k,@v)";
PreparedStatement pstmt = new PreparedStatement(DBType.MySql, query);
for (int index = 0; index < 100000; index++)
{
pstmt.SetParam("@k", Gloser.getRandomString(32));
pstmt.SetParam("@v", Gloser.GetRandomChinese(100));
pstmt.AddBatch();
if ((index > 0) && (index % 500 == 0))
{
pstmt.Execute();
pstmt.ClearParameters();
}
}
pstmt.Execute();
Oracle:
string query = "insert into book(bookid,bookname,author,price) values(:bookid,:bookname,:author,:price)";
PreparedStatement pstmt = new PreparedStatement(DBType.Oralce, query);
for (int index = 0; index < 100000; index++)
{
pstmt.SetParam(":bookid", Gloser.GetRandomInt(100000));
pstmt.SetParam(":bookname", Gloser.GetRandomChinese(25));
pstmt.SetParam(":author", Gloser.GetRandomChinese(10));
pstmt.SetParam(":price", Gloser.GetRandomInt(200));
pstmt.AddBatch();
if ((index > 0) && (index % 500 == 0))
{
pstmt.Execute();
pstmt.ClearParameters();
}
}
pstmt.Execute();
Sqlite:
Sqlite的使用方法與以上數據庫類似,不同的地方是系統通過插件接口調用的。需要在配置文件中定義:
<appSettings>
<add key="SqlCacheAssembly" value="PerfRunner.Sqlite"/>
<add key="SqlCacheName" value="PerfRunner.Sqlite.SqlitePerformanceTest"/>
</appSettings>
SqlCacheAssembly指實現Sqlite的程序集名稱,SqlCacheName指實現ISqlCache接口的類名
配置Connection:
<add name="OtherDbConnectionString" connectionString="Data Source=E:\test.db" />
生成海量數據代碼如下:
string query = "insert into book(bookid,bookname,author,price) values(@bookid,@bookname,@author,@price)";
PreparedStatement pstmt = new PreparedStatement(query);
for (int index = 0; index < 100000; index++)
{
pstmt.SetParam("@bookid", index);
pstmt.SetParam("@bookname", Gloser.GetRandomChinese(25));
pstmt.SetParam("@author", Gloser.GetRandomChinese(10));
pstmt.SetParam("@price", Gloser.GetRandomInt(200));
pstmt.AddBatch();
if ((index > 0) && (index % 500 == 0))
{
pstmt.Execute();
pstmt.ClearParameters();
}
}
pstmt.Execute();
該系統的架構
未來的發展路徑
以後的版本會提供如下功能:
1>支持Mono
2>支持更多的數據庫,包括DB2,Postgsql等等。
3>界面操作
4>集成在開發環境中
5>支持更多業務規則