众所周知,LoadRunner为业界的标准性能测试工具,那么作为一名性能测试工程师,我们应如何运用该工具LoadRunner来开发可读性强、简洁、美观的性能测试脚本呢?其实使用过LoadRunner的朋友都知道,LoadRunner是支持C Vuser、Java Vuser等协议的,因此针对于C语言、Java语言的编码规范也同样适用于LoadRunner。由于自己平时在性能测试工作中,接触更多的是C语言,因此将针对C语言的编码规范进行简单说明。由于LoadRunner的脚本相对简单,C语言编程中的许多特性用不到,因此需要从C语言规范中做适当简化,以下为自己在LoadRunner脚本开发中遵循的部分规范:
1、注释
规则1.1 文件头部应进行注释,注释必须列出:版权说明、文件名、版本号、生成日期、作者姓名、功能说明、与其它文件的关系、修改日志等,如下:
/*************************************************
*
**Copyright ©:XX公司测试部
**File name: // 文件名
**Author: // 作者
**Version: //版本号
**Date: //生成日期
**Description: // 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输
出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系
**Others: // 其它内容的说明
**History: // 修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述
1. Date:
Author:
Modification:
2. ...
**----------------------------------------------------------------------------
*************************************************
*/
规则1.2 函数声明处注释描述函数功能及用法,包括输入和输出参数、返回值等;定义详细描述函数功能和实现要点等,如下:
/*****************************************************************
** Function name:
** Author:
** Date:
** Input parameters: a,b,c
** a---
** b---
** c---
** Output parameters: x---
** x 为 1, 表示...
** x 为 0, 表示...
** Description:
**History: // 修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述
1. Date:
Author:
Modification:
2. ...
**-------------------------------------------------------------------
*****************************************************************
*/
规则1.3 程序中的注释模板
/*----------------------------------------------------------*/
/* 注释内容 */
/*----------------------------------------------------------*/
2、标识符命名与定义
规则2.1 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解,如下:
int error_number;
int number_of_completed_connection;
规则2.2 文件命名统一采用小写字符:因为不同系统对文件名大小写处理会不同(如MS的DOS、Windows系统不区分大小写,但是Linux系统则区分),所以代码文件命名建议统一采用全小写字母命名
规则2.3 变量命名规则:命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh 示连续意义字符串,如果连续意义字符串仅两个,可都大写,如OK。
注:全局变量应增加“g_”前缀;静态变量应增加“s_”前缀;
规则2.4 函数命名规则:以函数要执行的动作命名,一般采用动词或者动词+名词的结构。
示例:找到当前进程的当前目录
DWORD GetCurrentDirectory( DWORD BufferLength, LPTSTR Buffer )
注:函数不变参数使用const
3、变量
规则3.1 一个变量只有一个功能,不能把一个变量用作多种用途
规则3.2 不用或者少用全局变量
规则3.3 防止局部变量与全局变量同名
规则3.4 在首次使用前初始化变量,初始化的地方离使用的地方越近越好
示例:
//不可取的初始化:无意义的初始化
int speedup_factor = 0;
if (condition) {
speedup_factor = 2;
}
else {
speedup_factor = -1;
}
//不可取的初始化:初始化和声明分离
int speedup_factor;
if (condition) {
speedup_factor = 2;
}
else {
speedup_factor = -1;
}
//较好的初始化:使用默认有意义的初始化
int speedup_factor = -1;
if (condition) {
speedup_factor = 2;
}
//较好的初始化使用?:减少数据流和控制流的混合
int speedup_factor = condition?2:-1;
//较好的初始化:使用函数代替复杂的计算流
int speedup_factor = ComputeSpeedupFactor();
规则3.5 在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格,如:
//不可取的写法
result=tmp1*tmp2;
//较好的写法
result = tmp1 * tmp2;
规则3.6 一行最好只写一条语句,包括一行只声明一个变量
规则3.7 数组声明时要显式的标识大小
//不可取的写法
char TempArray[] = “HP Mercurry”;
//较好的写法
char TempArray[11] = “HP Mercurry”;
4、事务名称的定义
规则4.1 为了提升后续的性能指标数据整理效率,事务名称的定义需要按一定的规则进行,
如:01_001_审核提交
01——————–脚本编号
001——————事务编号
审核提交————事务的简要说明