LoadRunner调用Oracle存储过程

发表于:2014-9-29 13:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小 蔡    来源:51Testing软件测试网采编

  为了测试这个存储过程,我遥了一圈去做这个事情,这里说一下我自己接受到任务和自己开始是怎么想的。
  方法一:
  一开始我想着可以使用C#直接去调用存储过程,然后用Loadrunner调用C#的dll去测试,后来发现找不到LoadRunner怎样直接调用C#写的dll;可是dll存储过程都已经写好,不可能推倒重新用其他的方式去做,由于任务时间比较紧,就山寨的用C#写了个 .exe 去调用 dll,完成后执行,印象是:数据库跟本一点压力都没有,可是负载机都已经 100%了,并且这种做法得需要在每台负载机都安装一个oracle 客户端,要不访问不了,负载机有 30台,每台都去安装一编,我倒!
  方法二:
  最后想到一种方法,写一个WebService 去调用Dll,Loadrunner再去调用WebService去进行测试。(这种做法是不是很笨?有没有其他更好的方法,请留言给我!)
  下面就把整个过程详细列一下,其实这个之前也都有做过,但由于没有记录到博客,全忘记了,重写是多么的痛苦,血的教训说明:写博客还是有必需的!
  Step1:编写访问存储过程的dll
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Linq;
using System.Text;
namespace PaysysInterfaceTest
{
public class PaysysBase
{
public OracleConnection conn = null;
public OracleCommand cmd = null;
/// <summary>
/// 数据库初始化
/// </summary>
/// <param name="DataSource">数据库源(Orlacle Client下的tnsnames.ora配置</param>
/// <param name="DataUserId">数据库登录名</param>
/// <param name="DataPassword">数据库登录密码</param>
/// <returns></returns>
public int PaysysInit(string DataSource, string DataUserId, string DataPassword)
{
var mConn = string.Format("Data Source={0};User Id={1};Password={2};", DataSource, DataUserId, DataPassword);
conn = new OracleConnection(mConn);
try
{
conn.Open();
cmd = new OracleCommand();
cmd.Connection = conn;
}
catch (Exception ex)
{
return 0;
}
return 1;
}
/// <summary>
/// 调用的存储过程
/// </summary>
/// <param name="interfaceName">存储过程名称</param>
/// <returns></returns>
public int CallInterface(string interfaceName)
{
var nResult = 0;
var queryString = interfaceName;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = queryString;
try
{
cmd.ExecuteNonQuery();
Console.WriteLine("Query Success!!");
nResult = Convert.ToInt32(cmd.Parameters["result"].Value);
}
catch (Exception ex)
{
Console.WriteLine("Query Error!!\r\n" + ex.Message);
nResult = Convert.ToInt32(cmd.Parameters["result"].Value); ;
}
finally
{
cmd.Clone();
conn.Close();
Console.WriteLine("Close Db");
}
return nResult;
}
}
public class PlayerLogin : PaysysBase
{
public string s_account = "";
public string s_password = "";
/// <summary>
/// 存储过程初始化参数
/// </summary>
/// <param name="account">用户账号</param>
/// <param name="password">用户密码</param>
public void LoginInit(string account, string password)
{
s_account = account;
s_password = password;
InitParam();
}
/// <summary>
/// 初始化信息
/// </summary>
private void InitParam()
{
//反回值
cmd.Parameters.Add("result", OracleType.Float);
cmd.Parameters["result"].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add("s_account", OracleType.VarChar);
cmd.Parameters["s_account"].Direction = ParameterDirection.Input;
cmd.Parameters["s_account"].Value = s_account;
cmd.Parameters.Add("s_password", OracleType.VarChar);
cmd.Parameters["s_password"].Direction = ParameterDirection.Input;
cmd.Parameters["s_password"].Value = s_password;
//==================out==================
cmd.Parameters.Add("d_login_time", OracleType.DateTime);
cmd.Parameters["d_login_time"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("d_last_login_time", OracleType.DateTime);
cmd.Parameters["d_last_login_time"].Direction = ParameterDirection.Output;
cmd.Parameters.Add("d_last_logout_time", OracleType.DateTime);
cmd.Parameters["d_last_logout_time"].Direction = ParameterDirection.Output;
}
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号