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/脚本开发的原则:简单、正确、高效
main(){
vuser_init();
Action();
vuser_end();
}
{
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
int b=2;
printf("%d",a);
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 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 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.
// Include Files
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"
//--------------------------------------------------------------------
// Global Variables
//
char *p;
②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
LoadRunner实现机制
main(){
vuser_init();
Action();
vuser_end();
}
解释执行C代码,不需要像Java等一样需要编译。
关于解释型语言和编译型语言的概念和区别:
概念:
- 编译型语言:把源程序全部编译成二进制代码的可运行程序。之后,可直接运行这个程序无需再次编译。
- 解释型语言:把源程序交给翻译器翻译一句就提交给计算机,然后计算机执行一句并不行程目标程序,直到运行结束。
区别: - 编译型语言,编译完成之后执行速度快,效率高;依赖编译器 如C,C++,Delphi,Fortran.
- 解释型语言,执行速度慢,效率低;依赖解释器;如java、Basic.
总结:编译型语言在编译成目标程序后是可以通过操作系统直接运行,而解释语言的执行则需要一个解释环境(相当于一台虚拟机),解释器在程序执行期间一直随之运行,在这里LoadRunner充当了解释器的角色,一般来说,解释器比编译有更好的灵活性,而编译有着很好的性能。
其中java是特殊的,java程序也需要编译,但是没有直接编译成为机器语言,而是编译成字节码。
java字节码的执行有两种方式:
1.即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。
2.解释执行方式:解释器通过每次解释并执行一段代码来完成java字节码程序的所有操作。
通常采用的是第二种党法,由于JVM具有较好的灵活性,使字节码翻译为机器码效率较高。对于那些对于执行速度要求较高的应用程序,解释器可将java字节码即时编译为机器码,从而很好的保证了java代码的可移植性和高性能。
- 局部变量
{
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
- LoadRunner 编程注意
- LoadRunner 版本升级注意
- Loadrunner使用注意点
- Loadrunner脚本编程
- loadrunner编程基础
- Loadrunner编程技巧
- Loadrunner脚本编程
- 编程注意
- 编程注意
- 编程注意
- 编程注意
- LoadRunner监控WebLogic需要注意的地方
- loadrunner测试需要注意的点
- 关于loadrunner使用socket测试应注意的问题
- loadrunner自学笔记-性能测试的注意要点
- c#编程四个注意
- UNICODE 编程注意
- 编程注意的事
- UILabel内边距
- ACM-显示器
- html入门(表格元素)
- Go环境搭建小记
- 算法学习基础篇(二):贪心Ⅰ
- LoadRunner 编程注意
- OA项目中遇到的问题
- JAVA连接Mysql数据驱动配置及demo
- 如何取消mui中图片放大后自动往回缩的回弹效果
- TensorFlow实现Google InceptionNet V3(forward耗时检测)
- Java中MVC详解以及优缺点总结
- sublime工具Package Control安装使用
- 基础总结知识点-第五章JavaScript语言基础
- 模仿黑客攻击的渗透测试流程