利用loadrunner的net插件测试c#程序的性能

上一篇 / 下一篇  2011-01-19 16:33:19

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:

 

评分:0

我来说两句

Open Toolbar