发布新日志

  • Loadrunner性能测试学习经历-2

    2009-03-30 14:01:32

    问题概述:

    部门的一个重要系统随着用户量的不断增加,系统架构各个部分的性能瓶颈都在不断显现,比如:WEB服务器的IIS当机(并发连接用户数过大)、数据库死锁、签核引擎调用失败等等。因此现阶段该系统的开发团队在从各个不同角度提升性能,但困难处在于无法准确地获知性能提升的状况如何。由于前期的扩展性方面的欠缺,后期性能的提升是个艰巨而痛苦的过程。

    WEB服务器的IIS当机(并发连接用户数过大)问题目前正在解决中,由于第一次使用负载均衡技术,一切实施及其效果都在摸索过程中,而由于没有直接参与,因此我就不做细说,如果后期对其有进一步的了解,我再加以整理公布。我这里主要介绍的是另一个问题,即签核引擎调用失败的问题。

    该系统的签核引擎是一个WEB Servers服务,系统在签核单据时调用该服务以达到证书签核的目的,而现在的问题就是在这个过程中,由于用户并发量过大,经常会有部分用户在部分单据签核过程中出现签核失败的情况。开发人员对签核引擎的程序及其服务器配置均进行了调整,为了验证其是否目前的性能状况,需要对其进行性能测试。

    解决过程:

    原本以为这个测试过程很简单,只要请开发人员写一个简单的HTML页面调用签核引擎,记录其成功与失败数及其相关的各方面性能数据就可以了。而事实证明性能测试光知道工具使用是远远不够的,因为我最终没有找到如何记录成功与失败数的办法,其中尝试了加文本检查点(无法同时检查两种状态的页面,而我又不知道其是否可以抓取到非静态文本内容多次尝试后均失败),也想过在录制的脚本中加入计数变量(发现我并不知道如何在录制的函数内插入语句,也许根本就不能插)。

    通过了以上的失败之后,我苦恼了好几天,最后我不得不找寻自己撰写脚本代码的方法(前面之所以没有直接用这种办法是因为我对其一无所知),最终通过这种方法解决了以上的脚本问题,而且比录制更为的简单明了。

    解决办法:

    寻找.NET的脚本撰写插件(不要在网上到处找,因为它就在LR9.1的安装包里有),安装后,在VS2005环境中使用C#语言撰写脚本

    using System;

    using System.Runtime.InteropServices;

    using Com.Foxconn.Ca.Esign;

    using Com.Foxconn.Ca.Esign.PdfSigner;

     

    namespace LoadRunnerUser2

    {

        /// <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()

            {

                           return lr.PASS;

            }

    // ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            public int Actions()

            {

                string ID;

     

                PdfSigner signer = new PdfSigner();

                ID = lr.eval_string("{username}");

    //     这里的参数化曾花费了我近一天的时间,因为网上资料实例中用"<>"而我在LR中一直用的是“{}”,而其中我来去折腾了很多次,过程基本记不清了,只不过确定了这里用“{}”才真正起到参数化的效果

                string temp0 = signer.SignByName2(ID, "Sign1", "熊罡", "FOXCONN CA");

                if (temp0 == false)

                {

                    lr.end_transaction("ttt", lr.PASS);

                }

                else

                {

                    lr.end_transaction("ttt", lr.FAIL);

                }

    //     这里并没有真正起到统计成功与失败总数的作用,这个问题需要进一步通过摸索去验证实现方式(在函数中使用变量计数显然存在问题,因为会有很多虚拟用户同时调用这个脚本)

                return lr.PASS;

            }

            public int Terminate()

            {

                           return lr.PASS;

            }

        }

    }

     

    经验与教训:

    1.      永远都不要去害怕未知的事物,勇敢地去做起来,碰到问题就去解决问题,人人都是这么过来的。

    2.      要做好性能测试,仅仅是知道工具如何使用是远远不够的,只有真正了解其工作方式、原理及其执行后的结果,你才算是熟悉了工具的使用。

     

    注:如果有人知道如何解答我上文中的问题的,请务必赐教。谢谢!

  • Loadrunner性能测试学习经历-1

    2009-03-30 11:08:23

    前不久,安装了LR9.1,面对着比LR8.0更为强大的功能,我又燃起了进一步学习它的欲望。

    以后的笔记中我主要会记录一些探索中发现的问题及相关的解决办法,以此记录学习的过程,同时希望能够给看到这些内容的人一些启示或帮助!

    问题:

    在本机上安装了LR9.1后,使用WEBHTTP/HTML)协议开启录制时,浏览器无法开启,最后只能强行关闭。

    解决过程:

    对于这个问题,之前一直以为是安装过程中出了问题,因此在其它相同操作系统的机子上进行了安装,发现一切功能正常。于是重装了LR9.1,最后问题仍然存在。这个过程中我也一直怀疑IE出了什么问题,比如损坏了或者其它原因,不过并没有想到验证的办法。直到时隔2周之后,突然想到去网上查询相关的解决办法,才在一个51testingBBS中发现了相同的问题,并看到了确切的原因所在。原来罪魁祸首是第三方插件(我曾在本机上安装了浏览器的一个英文翻译插件)。

    解决办法:

    IE的高级选项相关的设置,把启动第三方浏览器扩展(需要重启)选项去掉。

    经验与教训:

    1.      通过这个小问题的解决,再一次印证了网络的强大,有问题只要选对关键词,通常都能找到你想要的答案。

    2.      环境对软件的影响非常的频繁,这也是为什么经验对于解决问题会这么重要的原因之一,这也同时证明了“随便找一个人就可以做测试”的观点是不正确的。发现问题,解决问题,需要很多相关知识及经验的积累。

Open Toolbar