zoukankan      html  css  js  c++  java
  • LoadRunner脚本编写之一

     

      性能测试工程师要懂代码么?答案是必须的。好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了。还有非计算机专业出身的测试员,所以对代码望都比较望而生畏。

      好多人认为loadrunner只支持C语言(包括我之前也一直这么认为),因为loadrunner默认的脚本是C语言的,其实它支持目前所有主流的语言,如:Java UserVB UserVB script User Javascript UserMmicrosoft .NET等,总有一款适合你的吧,最起码C语言是必修课吧。 

    对于编写loadrunner脚本的态度

      现在有一辆自行车放在你的面前,你为显示自己体力很好,每天走路去上班。我骑车只要半小时,而你走路却要2小时,我们的目的是一样的,你是为了让人说你牛呢,还是让人说你傻呢?当然自行车不是万能的,比如,上班的地点在山上,自行车跟本上不去,自然走路就是唯一的选择了。

      所以,对于loadrunner脚本,能录制的部分就录制改,不能录制的就手写,但前提是我们要会写脚本。

     

     认识loadrunner脚本                           

      Loadrunner自带了一个小飞机订票系统

     

      我们先启动 Start Web server 服务,如果启动成功,桌面右下角会有一个绿色的X ,然后打开浏览器访问

     http://127.0.0.1:1080/WebTours/  下面是我们loadrunner录制一个登录过程。

     

    Action()
    {
        
        web_url("WebTours", 
            "URL=http://127.0.0.1:1080/WebTours/", 
            "Resource=0", 
            "RecContentType=text/html", 
            "Referer=", 
            "Snapshot=t1.inf", 
            "Mode=HTML", 
            LAST);
    
        lr_rendezvous("集合点");
    
        lr_start_transaction("登陆时间");
        web_submit_form("login.pl", 
            "Snapshot=t2.inf", 
            ITEMDATA, 
            "Name=username", "Value=test1", ENDITEM, 
            "Name=password", "Value=123456", ENDITEM, 
            "Name=login.x", "Value=59", ENDITEM, 
            "Name=login.y", "Value=5", ENDITEM, 
            LAST);
        lr_end_sub_transaction("登陆时间",LR_ABORT);
    
        return 0;
    }  

      上面的代码中有大括号“{}”,返回函数“ return ,如果你有编程基础的不会说对于上面的代码一点都看不懂。只是上面的脚本没有使用我们平时用到的东西,如定义常量、变量,分支(if....else if....)、循环语句(for...

     

      下面我们动手写个小程序,一个乘法运算,求员工工资的总合。

     

    #define COUNT 100
    #define SALARY 4000
    
    Action()
    {
        int total;
        total = COUNT * SALARY;
        lr_output_message("100人合计薪资支出为:%d",total);
    
        return 0 ;
    }

    #define COUNT 100

    #define SALARY 4000     定义一个全局常量。

    lr_output_message    输出语句,这个和我们所学的语言不一样,在C中我们会用println 来输入结果。

    运行结果:

    ..........
    Starting iteration 1
    . Starting action Action. Action.c(9): 100人合计薪资支出为:400000 ----这里将运行结果打印输出 Ending action Action. Ending iteration 1.
    ..........

    一个有意思的小程序                                                               

     

      当然了,上面的程序太鸡肋了,我只是想表达,loadrunner 也可以运行我们上学时学的那些普通的小程序。他们是一样一样的。

     

    下面看个比较有意思的小程序,通过随即数和分支(选择)语句switch来完成

     

    Action()
    {
        int randomnumber;   
        randomnumber = rand() % 3+1;
    
        switch (randomnumber) {
        
        case 1:
            {
                lr_rendezvous("访问百度集合点");
    
                web_url("www.baidu.com", 
            "URL=http://www.baidu.com/", 
                    "Resource=0", 
                        "RecContentType=text/html", 
                        "Referer=", 
                        "Snapshot=t12.inf", 
                        "Mode=HTML", 
                        EXTRARES, 
                        "Url=http://s1.bdstatic.com/r/www/img/i-1.0.0.png", ENDITEM, 
                        "Url=/favicon.ico", "Referer=", ENDITEM, 
                        "Url=http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif", ENDITEM, 
                        LAST);
    
                return 0;
    
            }
    
        case 2:
            {
                lr_rendezvous("访问谷歌集合点");
    
                web_url("www.google.com.hk", 
                        "URL=http://www.google.com.hk/", 
                        "Resource=0", 
                        "RecContentType=text/html", 
                        "Referer=", 
                        "Snapshot=t10.inf", 
                        "Mode=HTML", 
                        EXTRARES, 
                        "Url=http://ssl.gstatic.com/gb/images/b_8d5afc09.png", ENDITEM, 
                        "Url=/images/srpr/logo3w.png", ENDITEM, 
                        "Url=/extern_chrome/749e1ce3c3e5f171.js", ENDITEM, 
                        "Url=/images/swxa.gif", ENDITEM, 
                        "Url=/favicon.ico", "Referer=", ENDITEM, 
                        "Url=http://ssl.gstatic.com/gb/js/sem_0e1289051da7e9e3697c2025d9490acd.js", ENDITEM, 
                        "Url=http://www.google.com/textinputassistant/tia.png", ENDITEM, 
                        LAST);
    
                return 0;
    
            }
        case 3:
            {
                lr_rendezvous("访问有道集合点");
    
                web_url("www.youdao.com", 
                        "URL=http://www.youdao.com/", 
                        "Resource=0", 
                        "RecContentType=text/html", 
                        "Referer=", 
                        "Snapshot=t7.inf", 
                        "Mode=HTML", 
                        EXTRARES, 
                        "Url=http://shared.ydstatic.com/oxo/p/pic.gif", ENDITEM, 
                        "Url=http://shared.ydstatic.com/oxo/p/logo.png?1", ENDITEM, 
                        "Url=http://shared.ydstatic.com/oxo/p/nv_line.gif", ENDITEM, 
                        "Url=http://shared.ydstatic.com/r/2.0/p/pic.gif", ENDITEM, 
                        LAST);
    
                return 0;
            }
             
        }
        
    }   

         上面的程序,我分别录制了百度、谷歌、有道访问三个网的首页的代码,我想在运行脚本时,随机的去访问其中一个网站,如何做呢?我们通过随机函数,随机出1~3之间的整数,根据随机来的结果,然后执行switch语句中的代码。   

    下面来看我的结果

     

      为了查看脚本结果更清晰,我在每一段脚本前面加了一个集合点“lr_rendezvous”函数。

     

     

    Starting iteration 1.
    Starting action Action.
    Action.c(57): Rendezvous 访问有道集合点
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/pic.gif" (specified by argument number 9)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/logo.png?1" (specified by argument number 11)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/oxo/p/nv_line.gif" (specified by argument number 13)      [MsgId: MMSG-26577]
    Action.c(59): Downloading resource "http://shared.ydstatic.com/r/2.0/p/pic.gif" (specified by argument number 15)      [MsgId: MMSG-26577]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/yd.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/nav.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): Found resource "http://shared.ydstatic.com/dao/search/outweb/js/suggest.js?201207131" in HTML "http://www.youdao.com/"      [MsgId: MMSG-26659]
    Action.c(59): web_url("www.youdao.com") was successful, 30006 body bytes, 3347 header bytes, 39 chunking overhead bytes      [MsgId: MMSG-26385]
    Ending action Action.
    Ending iteration 1.

     

    通过脚本读取文件                                                                          

     

      为了增加语言的强大,高级语言不可以把一个程序的实现从头到尾写到文件里,这样可读性和维护很差,也无法实现团队发,肯定会相互调用接口函数库等。当然,读取文件也是常用的操作,下面我们来看一个读取文件的例子。

     

    我们事先准备一个文件test.txt ,里面随便你输入些什么内容吧!

     

    Action()
    {
    
        int count,total=0;
        char buffer [50];
        long file_stream;
        char * filename = "C:\\test.txt";  //读取文件的存放位置
    
        //判断是否可以读取文件
        if((file_stream =fopen(filename,"r"))==NULL)   
        {
            lr_error_message("不能打开%s文件!",filename);
    
            return -1;
        }
    
        while(!feof(file_stream))
        {
            count=fread(buffer,sizeof(char),50,file_stream);  //从文件中读取50个字符
            total=total+count;   //字符个数计数
            if(total>=50)
            {
                fclose(file_stream);  //关闭文件
                lr_output_message("文件的前50字符:%s",buffer);
                break;  //退出循环
            }
    
        }
        return 0;
    }

     

    上面的代码中我加了注释,这里没必须再做解释。

    下面来看我的运行结果

    Starting iteration 1.
    Starting action Action.
    Action.c(24): 文件的前50字符:01234567890123456789012345678901234567890123456789
    Ending action Action.
    Ending iteration 1.

         loadrunner难么? 对于有编程基础的一点都不难。我们所要做的就是熟悉loadrunner的常用函数罢了。

     

  • 相关阅读:
    防火墙透明模式
    HP管理工具System Management Homepage安装配置
    kbmmw 中JSON 中使用SQL 查询
    kbmmw 中JSON 操作入门
    第一个kbmmw for Linux 服务器
    kbmmw 5.02发布
    kbmmw 5.01 发布
    使用delphi 10.2 开发linux 上的Daemon
    使用unidac 在linux 上无驱动直接访问MS SQL SERVER
    使用delphi 10.2 开发linux 上的webservice
  • 原文地址:https://www.cnblogs.com/fnng/p/2592344.html
Copyright © 2011-2022 走看看