大家好,主要给大家讲解编写loadrunner的ftp脚本详细步骤,及FTP函数注释,及FTP脚本两种编写方式,手动和录制。亲测 No problem!^_^
1、首先要了解loadrunner中几个FTP函数
在loadrunner联机帮助文档的索引中,输入FTP,此时你会看到不下50个与ftp有关的函数,想了一下为了解决使用FTP文件上传这个问题,只需要一下几个步骤就可以了:
注意:每个FTP函数都是以ftp前缀开头的。多数的ftp函数都会成对出现(一个事用于全局的会话,一个事用户指定邮件回话)。它们之间的差别是,全局的没有_ex后缀,特定会话的有_ex后缀。
第一、 与ftp服务器建立连接
第二、 传输文件
第三、 关闭连接
所以我现在只需要关注与这三个步骤有关的函数就可以了。
经过挑选终于找到了一下几个函数:
函数 |
描述 |
ftp_logon[_ex] |
登录到FTP服务器 |
ftp_logout[_ex] |
注销FTP服务器 |
ftp_dir[_ex] |
在FTP上执行dir命令 |
ftp_get[_ex] |
从FTP上获取文件 |
ftp_get_last_error |
检索从FTP服务器接收到的最后一个错误 |
ftp_get_last_error_id |
检索从FTP服务器接受到的最后一个错误的ID |
ftp_mkdir[_ex] |
在ftp服务器上创建目录 |
ftp_put[_ex] |
将文件放到FTP服务器上 |
ftp_rendir[_ex] |
重命名FTP服务器上的目录 |
ftp_rmdir[_ex] |
删除FTP服务器计算机上的目录 |
ftp_delete[_ex] |
从FTP上删除文件 |
第一、 与ftp服务器建立连接的函数
ftp_logon_ex (FTP *ppftp, char *transaction, char *url, LAST);
这个函数主要的功能是建立与ftp服务器的连接,其中的参数含义如下:
Transaction:为这个连接起一个名字,在这里随便起
url:ftp://username:password@mailserver:port,指定连接用户名、密码、服务器地址、端口
第二、 传输文件的函数
ftp_put_ex (FTP *ppftp, char *transaction, char *item_list, LAST);
这个函数主要的功能是指定把本地的某个文件上传到服务器的某个目录下
transaction:为这个操作起一个名字,在这里随便起
item_list:其中包括
SOURCE_PATH,指定本地上传文件的路径
TARGET_PATH制定要上传到服务器的路径
ENDITEM - Marks the end of the list.(不好翻译呵呵)
第三、 关闭连接的函数
ftp_logout_ex (FTP *ppftp);
这个函数的主要功能是断开FTP链接
1.1、 模拟文件上传过程(手动编写)
知道了上面的函数我们把代码写一下:
Action()
{
unsigned long *ftp_session=NULL;
double duration,lSize,lDur;
ftp_logon_ex(&ftp_session,"ftp_logon","URL=ftp://ftpuser:ftpuser@192.168.0.1:21",LAST);
ftp_put_ex(&ftp_session, "Ftp_Put",
"SOURCE_PATH=d:/test.txt",
"TARGET_PATH=/ftptest/test.txt",
ENDITEM,
LAST);
// 取得下载持续时间
duration= ftp_get_last_transfer_duration_ex(&ftp_session);
// 输出下载持续时间
lr_output_message("Get_Small_File Transfer took %.3f milliseconds", duration);
//Action.c(35): Get_Small_File Transfer took 10.000 milliseconds
// 取得下载的详细信息
ftp_get_last_download_details_ex(&ftp_session, &lSize, &lDur);
// 输出下载的详细信息
lr_output_message("Get_Small_File Download of %d bytes took %d milliseconds", lSize, lDur);
//Action.c(39): Get_Small_File Download of 4307 bytes took 180 milliseconds
//释放FTP连接
ftp_logout_ex(&ftp_session);
return 0;
}
运行一次,发现d: est.txt文件已经成功上传到FTP服务器/ftptest/目录下,OK大功告成!
注意:若上传文件到linux服务器上,“TARGET_PATH”目标路径为全路径。
好了,基本的结构写出来了,执行脚本,发现可以把指定的文件上传到制定的目录下了,接下来就根据自己实际需要强化脚本就可以了,参数化上传文件、加入事务、集合点,监测上传文件的时间和服务器的性能,强化脚本在这里就不多说了。
在这个过程中遇到的问题:
1)在声明ftp连接句柄时,我看网上的一些资料中介绍声明称FTP ftp1 = 0 ;但是这样写会出现语法错误,当我把它修改成unsigned long *ftp_session=NULL;后就没有问题了,其中原因不明。
1.2 录制FTP上传文件
1)同http协议类似,地址例如:ftp://172.31.27.2:21。
2) 单击Option、点击Tools->Recording Options或者在工具栏点击图标,打开“Recording Options”对话框,便可开始设置录制选项。
3)对于FTP协议脚本的录制,如果不对端口映射进行限制,很容易造成录制的脚本为空。因此,在进行脚本录制之前,我们要进行FTP协议的端口映射。将Network-level server address mappings for设置为FTP,单击“New Entry”,在弹出的“Server Wntry”对话框中将Target Server设置为“172.31.27.2”(FTP服务器的IP地址),Service ID设置为FTP,端口Port设置为Any(因为FTP协议涉及多个端口)。
4)登录172.31.27.2这个FTP服务器,执行上传文件的操作,然后退出,完成脚本的录制。
4)回放PASS,根据需求,增加脚本,完成。
ENDing...