LoadRunner 编程注意

来源:互联网 发布:免费qq群发软件 编辑:程序博客网 时间:2024/06/04 00:49
From:http://www.zhaokongnuan.com/2015/01/20/LoadRunner%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91%E5%92%8C%E5%B8%B8%E7%94%A8%E5%87%BD%E6%95%B0/脚本开发的原则:简单、正确、高效

LoadRunner实现机制

#include<globals.h>
main(){
        vuser_init();
        Action();
        vuser_end();
}

解释执行C代码,不需要像Java等一样需要编译。
关于解释型语言和编译型语言的概念和区别:
概念:

  • 编译型语言:把源程序全部编译成二进制代码的可运行程序。之后,可直接运行这个程序无需再次编译。
  • 解释型语言:把源程序交给翻译器翻译一句就提交给计算机,然后计算机执行一句并不行程目标程序,直到运行结束。

    区别:
  • 编译型语言,编译完成之后执行速度快,效率高;依赖编译器 如C,C++,Delphi,Fortran.
  • 解释型语言,执行速度慢,效率低;依赖解释器;如java、Basic.
    总结:编译型语言在编译成目标程序后是可以通过操作系统直接运行,而解释语言的执行则需要一个解释环境(相当于一台虚拟机),解释器在程序执行期间一直随之运行,在这里LoadRunner充当了解释器的角色,一般来说,解释器比编译有更好的灵活性,而编译有着很好的性能。
    其中java是特殊的,java程序也需要编译,但是没有直接编译成为机器语言,而是编译成字节码。
    java字节码的执行有两种方式:
    1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
    2.解释执行方式:解释器通过每次解释并执行一段代码来完成java字节码程序的所有操作。
    通常采用的是第二种党法,由于JVM具有较好的灵活性,使字节码翻译为机器码效率较高。对于那些对于执行速度要求较高的应用程序,解释器可将java字节码即时编译为机器码,从而很好的保证了java代码的可移植性和高性能。

局部变量和全局变量
  • 局部变量
Action()
{
    int a=10;

        printf("%d",a);
    int b=2;
        lr_output_message("%d",a);
        lr_output_message("%d",a);
        lr_output_message("%d",a);

        return 0;
}
Action.c (6): illegal statement termination
Action.c (6): skipping `int'
Action.c (6): undeclared identifier `b'
e:\\hp\\mytest\\bian\\\\combined_bian.c (5): 3 errors, not writing pre_cci.ci

以上例子可以看出LoadRunner虽然基本完全支持C,但是和C还有一点细微的差别。这里定义变量要提到前面去。

int a=10;
int b=2;
printf("%d",a);

实例二在函数外面定义,

int a=100;
Action()
{
   // int a=10;
        printf("%d",a);

        lr_output_message("%d",a);
        lr_output_message("%d",a);
        lr_output_message("%d",a);


        return 0;
}

输出结果

Starting iteration 1.
Starting action Action.
Action.c(7): 100
Action.c(8): 100
Action.c(9): 100
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

去掉注释,输出,可以看出,局部变量会覆盖文件级变量(即在函数外面定义的变量)

Starting iteration 1.
Starting action Action.
Action.c(7): 10
Action.c(8): 10
Action.c(9): 10
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
  • 全局变量在globals.h定义
//--------------------------------------------------------------------
// Include Files
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"

//--------------------------------------------------------------------
// Global Variables
// 
char *p;

总结,

  • 在init、action、end中定义的变量就是局部变量
  • 在globals.h中定义的变量是全局变量
  • 什么时候定义全局变量?
    整个过程中固定不变的,例如URL地址、KEY、其他
  • 支持指针、数组、控制流等
函数

LoadRunner中的几种类型的函数:

  • 通用函数lr开头的(例如日志函数,思考时间函数…)
  • 与编程语言相关的函数
  • 与协议相关的函数
  • 自定义函数

(F1查看帮助文档)

通用函数lr开头的①lr_think_time()、lr_get_host_name()、lr_whoami()、lr_get_attrib_string()

②LoadRunner错误处理机制/lr_continue_on _error函数
③日志函数解析/lr_output_message、lr_log_message 、lr_message 、lr_error_message
④lr_load_dll与编程语言相关的函数strcpy与strcat、strcmp、atoi、sprinf、time、文件操作..略与协议相关的函数web_link与web_url(get)、web_submit_form与web_submit_data(POST)、web_submit_form中的hidden自动发送、web_custom_request、web_add_header、web_get_int_property
  • 关于DLL
    在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

LoadRunner也支持dlllr_load_dll("user32.dll")

0 0
原创粉丝点击