【IT168 技术文档】等了好久,到目前为止LoadRunner9.5也是只支持VS2005(.net2.0)环境,也就是说,在VS2008,VS2010里面都用不了LR的插件。然后刚才试了一下,用VS2010写的ADO.net程序(.net framework4.0),用LR9.1也是无法录制出来的,不过在VS2005(.net framework2.0)下面却是可以录制出来。
这个是比较麻烦的问题,因为现在.net平台发展太快了,可是LR跟不上,而且.net平台自带的有性能测试工具,进步也很快,这样下去,LR很可能失去.net平台新技术的市场。
把代码和程序拉出来给大家看看,也许有一定参考。
被测试.net程序代码如下:
\\读取数据库表TB_DIVISION中的字段名,并显示在treeView中。这段代码在.net2.0,4.0平台都可用。但是4.0平台的程序LR无法录制。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string con = "Server = 10.72.128.xxx; Initial Catalog=QA;User ID=DV_User;PassWord=xxxxxx";
string cmd = "select * from TB_DIVISION";
SqlConnection thisConnect = new SqlConnection(con);
\\连接数据库,简便期间,没有做异常处理
thisConnect.Open();
SqlDataAdapter thisAdapter = new SqlDataAdapter(cmd, thisConnect);
DataSet thisDataSet = new DataSet();
thisAdapter.Fill(thisDataSet, "TB_DIVISION");
string rootNodeStr = thisDataSet.Tables["TB_DIVISION"].Columns[1].ColumnName;
TreeNode rootNode = new TreeNode(rootNodeStr);
treeView1.Nodes.Add(rootNode);
foreach (DataColumn thisCol in thisDataSet.Tables["TB_DIVISION"].Columns)
{
rootNode.Nodes.Add(thisCol.ColumnName);
}
thisConnect.Close();
}
}
}
LR,首先安装LRVS2005IDEAddInSetup.exe插件,启动,选择Microsoft.net协议。录制刚才的程序后,LR,Action代码如下:
namespace Script. {
using LoadRunner;
using Mercury.LoadRunner.DotNetProtocol.Replay;
using System;
using System.Data;
using System.Data.SqlClient;
public partial class VuserClass {
public virtual int Action() {
String connectionString_1;
connectionString_1 = "Server = 10.72.128.135; Initial Catalog=QA_PTMES;User ID=DV_User;Pass" +
"Word=Pass1234";
lr.log("Event 1: new SqlConnection(connectionString_1);");
SqlConnection_1 = new SqlConnection(connectionString_1);
lr.log("Event 2: SqlConnection_1.Open();");
SqlConnection_1.Open();
lr.log("Event 3: new SqlDataAdapter(\"select * from TB_DIVISION\", SqlConnection_1);");
SqlDataAdapter_1 = new SqlDataAdapter("select * from TB_DIVISION", SqlConnection_1);
lr.log("Event 4: new DataSet();");
DataSet_1 = new DataSet();
lr.log("Event 5: SqlDataAdapter_1.Fill(DataSet_1, \"TB_DIVISION\");");
// For data set named DataSet_1:
// No tables found
Int32RetVal = SqlDataAdapter_1.Fill(DataSet_1, "TB_DIVISION");
// For data set named DataSet_1:
\\此处在LR中显示的是TB_DIVISION的表结构和相应数据
DATASET_XML(1);
lr.log("Event 6: SqlConnection_1.Close();");
SqlConnection_1.Close();
return 0;
}
}
}
其实,可以看出,这个录制的脚本实际上跟源程序非常接近。