利用loadrunner的net插件测试c#程序的性能
Loadrunner V9.5
Visual Studio 2005
按照顺序安装lr,vs2005,lr的net2005插件;
安装完成后,会在vs2005的的菜单栏多出Vuser
在vs种开发脚本,如下:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LoadRunnerUserTest.WebReferenceTest;
using LoadRunnerUserTest.WebReferenceMeeting;
using System.IO;
namespace LoadRunnerUserTest
{
/// <summary>
/// Summary description for VuserClass.
/// </summary>
[ClassInterface(ClassInterfaceType.AutoDual)]
public class VuserClass
{
LoadRunner.LrApi lr;
public VuserClass()
{
// LoadRunner Standard API Interface :: DO NOT REMOVE!!!
lr = new LoadRunner.LrApi();
}
// ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
public int Initialize()
{
// TO DO: Add virtual user's initialization routines
return lr.PASS;
}
// ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
public int Actions()
{
lr.rendezvous("IMlogin");
// TO DO: Add virtual user's business process actions
WebReferenceTest.UserService request = new WebReferenceTest.UserService();
WebReferenceMeeting.MeetingService meetingRequest = new MeetingService();
request.CookieContainer = new System.Net.CookieContainer();
meetingRequest.CookieContainer = request.CookieContainer;
//UserEntity[] userEntities;
bool result = false;
string errorCode = null;
MeetingEntity meetingEntity = new MeetingEntity();
MeetingResourceResult meetingResourceResult;
bool meetingResult;
string meetingErrorCode = null;
//meetingEntity.VCRoomID = "Room10000";
//meetingEntity.NRoomID = 10001;
meetingEntity.UserId = "usr00050";
meetingEntity.Name = "PT0119";
meetingEntity.MaxNum = 4;
meetingEntity.Pwd = "1";
meetingEntity.ChairPwd = "2";
meetingEntity.FactStart = new DateTime(2011, 1, 19, 8, 0, 0);
//meetingEntity.FactStart = new DateTime();
// meetingEntity.FactStart = DateTime.Now;
meetingEntity.FactEnd = new DateTime(2011, 1, 19, 8, 30, 0);
// meetingEntity.FactEnd = new DateTime();
// meetingEntity.FactEnd = DateTime.Now.AddMinutes(1.00);
meetingEntity.CompanyID = 2;
meetingEntity.MeetingMembers = null;
meetingEntity.Modal = 0;
meetingEntity.Memo = "YWtest";
meetingEntity.Option = 1;
meetingEntity.Status = 2;
//meetingEntity.Preend = new DateTime(2011, 1, 11, 19, 55, 0);
//meetingEntity.Prestart = new DateTime(2011, 1, 11, 18, 55, 0);
meetingEntity.StartAlertMinutes = 5;
meetingEntity.StartAlertTimes = 1;
meetingEntity.RoomType = 0;
meetingEntity.CloseAlertTimes = 1;
meetingEntity.EndAlertMinutes = 5;
meetingEntity.BandwidthDown = 255;
meetingEntity.BandwidthUp = 500;
/*MeetingMember definition*/
MeetingMemberEntity member1 = new MeetingMemberEntity();
member1.UserID = "usr00044";
member1.RoomID = meetingEntity.VCRoomID; //
member1.CurrentStatus = 0;
//member1.WinID = 0;
member1.AcceptInvite = 2;
member1.IsChair = 0;
meetingEntity.MeetingMembers = new MeetingMemberEntity[1];
meetingEntity.MeetingMembers[0] = member1;
try
{
lr.start_transaction("IMlogin");
//string userName = lr.eval_string("{user}");
result = request.Login("usr00050"/*userName*/, "LuwKEXgt1TGqnQ/KxLve8a9xH", "F04DA23167EA", "11111").IsSuccessfull;
//lr.log_message("now user is:" + userName);
//errorCode = request.SearchUsersByName(userName, "1111", out userEntities).ErrorCode.ToString();
if (!result)
{
lr.log_message("the reason of login fail is " + errorCode);
StreamWriter SW = File.AppendText("D:\\log.txt");
SW.WriteLine(errorCode);
SW.WriteLine("####");
SW.Close();
lr.end_transaction("IMlogin", lr.FAIL);
}
else
{
lr.end_transaction("IMlogin", lr.PASS);
}
/**/
lr.start_transaction("IM_MeetingCreated.");
lr.think_time(120);
LoadRunnerUserTest.WebReferenceMeeting.IMResult scheduleMeeting = meetingRequest.ScheduleMeeting(meetingEntity, out meetingResourceResult);
meetingResult = scheduleMeeting.IsSuccessfull;
if(!meetingResult)
{
meetingErrorCode = scheduleMeeting.ErrorCode.ToString();
lr.log_message("meetingErrorCode is " + meetingErrorCode);
StreamWriter SW = File.AppendText("D:\\meetingLog.txt");
SW.WriteLine(errorCode);
SW.WriteLine("####");
SW.Close();
lr.end_transaction("IM_MeetingCreated.", lr.FAIL);
}
else
{
lr.end_transaction("IM_MeetingCreated.", lr.PASS);
}
}
catch (Exception ex)
{
// lr.log_message("Exception message:" + ex);
//Console.WriteLine(ex.ToString());
}
finally
{
// lr.log_message("login fail " + errorCode);
// lr.log_message("meetingErrorCode is " + meetingErrorCode);
//Console.WriteLine(result);
//Console.WriteLine(errorCode);
}
// Console.ReadKey();
return lr.PASS;
//lr.end_transaction("IM login",lr.AUTO);
}
// ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
public int Terminate()
{
// TO DO: Add virtual user's termination routines
return lr.PASS;
}
}
}
脚本开发完成后,在vs种编译通过,然后在lr种运行,不能直接在lr种修改脚本以及参数化等操作;
不过在controller种,遇见一个问题,我设置的集合点函数无法识别出来;
有做这种性能测试的同学,可以参考我的脚本及过程
我在之前也是尝试了一周才找到这种方式测试c#程序的性能;我们程序是c/s架构的;
TAG:
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | ||||||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 30 | 31 |
我的存档
数据统计
- 访问量: 19898
- 日志数: 14
- 建立时间: 2009-04-10
- 更新时间: 2014-05-13