最近写了不少loadrunner脚本,记录一下心得:
1 loadrunner脚本基本可以认为就是c语言代码(loadrunner支持不同语言的脚本,默认生成的是用c语言写的脚本)
2 loadrunner自己实现了一个c编译器及对应的ide(也就是vugen),所以有一些地方跟我们常用的开发习惯不一样。loadrunner内置编译编译器怀疑是在gcc基础上改的,因为一些语法特性跟gcc比较像。
3 loadrunner的c编译器实现了不少标准库函数,但不提供对应的头文件。所以使用到库函数(如malloc)时最好自己声明。(不然malloc会被编译器认为是未知函数,返回值是int类型)
4 一些特殊的库函数,如atof必须提前声明,因为其返回值是double类型,而sizeof(double)跟sizeof(int)是不一样的,这会导致返回值异常。
5 loadrunner可以使用#include包含头文件,但由于没有提供标准库头文件,所以#include <stdio.h>这样会报错,stdio.h找不到
6 loadrunner具体实现了哪些标准库函数可以查看帮助
7 loadrunner提供了不少额外函数辅助编写测试代码,这些函数以lr_打头,一样在帮助文档里面有。我觉得比较好用的是日志、http访问、变量转换系列函数。
8 loadrunner编译脚本时是把工程里面vuser_init.c Action.c vuser_end.c合并到一个文件再编译,所以在这些文件里面声明的static变量会相互影响
9 loadrunner脚本程序栈空间很小,所以大数组最好用malloc动态生成
10 VuGen动画模式下运行脚本速度很慢,因为每执行一行脚本代码前,VuGen都会将光标跳到改行代码并高亮,很耗时。(12版本这个问题非常明显,15版本好很多)把动画模式关闭运行速度能提高不少,但是还是远不如在Controller里面执行脚本的速度。

loadrunner脚本编写经验的更多相关文章

  1. LoadRunner脚本编写(5)-- 检查点,关联等函数

    LoadRunner脚本编写(5)-- 检查点,关联等函数 http://www.51testing.com/?34866/action_viewspace_itemid_70224.html来继续翻 ...

  2. LoadRunner脚本编写(转)

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

  3. LoadRunner脚本编写

    性能測试project师要懂代码么?答案是必须的.好多測试员觉得在loadrunner中编写脚本非常难非常牛X ,主要是大多測试人员并未做过开发工作,大学的那点程序基础也忘记的几乎相同了. 还有非计算 ...

  4. LoadRunner脚本编写之三(事务函数)

    LoadRunner脚本编写之三(事务函数) 关于脚本的这块,前两篇都在讲C语言,其实,要整理点实用的东西挺难,在应用中多对录制的脚本分析,但对于新手学脚本确实无从下手. 先贴一个脚本: 完整代码: ...

  5. LoadRunner脚本编写之二

    LoadRunner脚本编写之二 编程基本语法必须要记牢.程序的思想也很重要. 下面来回顾一下嵌套循环例子. Action() {     int  i,j;   //生命两个变量     for ( ...

  6. LoadRunner脚本编写之一

    LoadRunner脚本编写之一 性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不 ...

  7. LoadRunner脚本编写(6)— 数据类型转换和字符串操作

    LoadRunner脚本编写(6)— 数据类型转换和字符串操作 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现在数据类型转化方面比较困难.下面介绍这方面的知识. 1. 相似函 ...

  8. loadrunner脚本编写http协议

  9. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

随机推荐

  1. 用一个变量表示 ----------"序号,名称,价格"

     goods = [{"name": "电脑", "price": 1999},          {"name": & ...

  2. MVC四大筛选器—AuthorizeFilter

    在Action的执行中包括两个重要的部分,一个是Action方法本身逻辑代码的执行,第二个就是Action方法的筛选器的执行. MVC4中筛选器都是以AOP(面向方面编程)的方式来设计的,通过对Act ...

  3. wk_10.md

    Python检测和处理异常 try-except语句 try-except语句定义了进行异常监控的一段代码,并且提供了异常处理的机制,下面是使用的语法: try: # 可能抛出异常的语句,会一直执行, ...

  4. UVa 1393 - Highways(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. Java并发编程--6.Exchanger线程间交换数据

    在两个线程之间定义同步点,当两个线程都到达同步点时,他们交换数据结构,因此第一个线程的数据结构进入到第二个线程中,第二个线程的数据结构进入到第一个线程中 在生产者-消费者情境模式中它包含了一个数缓冲区 ...

  6. Odoo前端页面模版渲染引擎——Jinja2用法教程

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307200.html  一:渲染模版 要渲染一个qweb模板文件,通过render_template方法即可. ...

  7. django 模板关闭自动转义

    Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全.但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰 ...

  8. Spring源码分析(十九)容器的功能扩展概览

    摘要: 本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 经过前面几章的分析,相信大家已经对 Spring 中的容器功能有了简单 ...

  9. 传入一个integer数组,取出最大、最小值

    /** * <p> * 传入一个integer数组,取出最大值 * </p> * @author yunns 2015年11月19日 * @param array * @ret ...

  10. POJ 2250 (LCS,经典输出LCS序列 dfs)

    题目链接: http://poj.org/problem?id=2250 Compromise Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...