技术开发 频道

LR9.1测试ADO.net程序

  【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;

  }

  }

  }

  其实,可以看出,这个录制的脚本实际上跟源程序非常接近。

0
相关文章