LR_socket协议测试实例
来源:互联网 发布:linux sleep 实现 编辑:程序博客网 时间:2024/05/16 13:46
前不久公司需要测试考勤服务器,这就需要写能够模拟实物考勤机的脚本,才开始还真不知道怎么开始,经过和公司的开发人员勾通,得知考勤机的考勤信息是无线传输,基于TCP/IP协议,最低层是socket协议。
于是我就开始了用LR还完成这件事。
(1) LR选择socket协议
(2) 根据考勤机硬件生产商,提供的《鑫诺爱贝通公话软件接口规范》编写测试脚本
(3) 场景的设计、执行、监控、分析
对于第1、3步我就不做说明了,主要对第2步做个详细解释。
用到LR的socket协议,肯定我们要先学习那提供关于socket的方法
LR提供的方法并不是多很,但完全足够满足我们的测试需要。建议每一个方法都看看。不肯定对后面的编写脚本有很大帮助。
下面是这次测试脚本编写特别需要注意的地方和示例脚本:
(1) 发送的数据应该放到data.ws,
如:lrs_send("socket0", "buf1", LrsLastArg);
在data.ws中:
send buf1 9 这个9表示发送的长度,如果改成其它值,好象关系不大
“123456789”
当在执行lrs_send方法时,会将“123456789”发送出去。
(2) 接收的数据由data.ws指定的参数接收
如:lrs_receive("socket0", "buf2", LrsLastArg);
recv buf2 24
将接收到的数据保存到buf2中去,长度是24.
(3) 在data.ws中,发送、接收的参数的位署不能乱放
如:参数靠左并不能有空格,不然会报错;数据需要换行,并用“”括起来,如果数据很长可换行,LR会自动拼接;后面的“-1”不能少;对于开始的“;WSRData 2 1”,本人目前也未知,如果你知道请告诉我,请给我留言。QQ:408442756
(4) 在执行脚本时,如果接收出现长时间停顿现象,在日志中并报告长度不配,请注意修改:
Data.ws中的对应的接收参数希望的长度。如:recv buf5 24 表示:希望接收长度为24数据,并保存在buf5中。如果发送端的数据长度不是24,就会出现长时间停顿现象。因为LR只是自动地进行长度比较。对于数据内容的比较需要特定的方法。
5)对于设置事务、参数化、集合点、思考时间等等跟其它协议都是相同的。
示例脚本
#include "lrs.h"
vuser_init()
{
lrs_startup(257);
lrs_create_socket("<socketName>", "TCP", "LocalHost=0","RemoteHost=192.168.0.6:8144", LrsLastArg);//与服务器建立socket连接。
lrs_send("<socketName>", "buf1", LrsLastArg);//发送buf1中的数据到服务器,开始公话认证
lrs_receive("<socketName>", "buf2", LrsLastArg); //接收认证结果和时间同步,将结果保存到buf2中
lrs_save_param("<socketName>", NULL, "param1", 0, -1);//可以将buf2接收到的全部信息保存到param1中,-1表示全部接收。
lr_output_message ("param1: %s", lr_eval_string("<param1>"));
lrs_send("<socketName>", "buf3", LrsLastArg);//公话状态查询(刚连接)
lrs_receive("<socketName>", "buf5", LrsLastArg);//公话状态接收(刚连接)
return 0;
}
#include "lrs.h"
Action()
{
lr_think_time(1);
lr_rendezvous("att");
lrs_send("<socketName>", "buf4", LrsLastArg); //学生刷卡
lrs_receive("<socketName>", "buf7", LrsLastArg); //接收刷卡结果
// lrs_save_param("<socketName>", NULL, "param3", 0, -1);
//lr_output_message("param1: %s", lr_eval_string("<param3>"));
return 0;
}
#include "lrs.h"
vuser_end()
{
int rc;
lr_think_time(30);
lrs_disable_socket("<socketName>", DISABLE_SEND_RECV);
rc=lrs_close_socket("<socketName>");//关闭sokcet
if (rc==0)
lr_output_message("Socket 0 was successfully closed ");
else
lr_output_message("An error occurred while closing the socket, Error Code: %d", rc);
lrs_cleanup();//清理socket资源
return 0;
}
Data.ws文件内容:
;WSRData 2 1
send buf1 36
"0036100000<MACHINE_ID> "
recv buf2 11
"00111000001"
"002482000120100125175630"
send buf3 118
"0118820001<MACHINE_ID> "
"v1.1 "
"111 ver1.00 2004/05/10"
recv buf5 24
"002482000320100304190318"
send buf4 78
"0078040001<MACHINE_ID> <CARD_ID> 123456123456123456<att_datetime>"
recv buf7 11
"00100500001"
-1
- LR_socket协议测试实例
- TSUNG测试HTTP协议详解和实例
- TSUNG测试HTTP协议详解和实例【原创】
- 自动化测试开发实际应用系列(三)HTTP JSON协议接口测试自动化实例
- 测试实例
- HTTP协议实例分析
- tcp协议 编程实例
- http协议使用实例
- sip协议实例
- HTTP 协议实例
- 协议实例说明--租房
- 8583协议实例分析
- 8583协议实例分析
- UDP协议实例分析
- IGMP协议实例分析
- DNS协议实例分析
- MQTT协议应用实例
- 实例讲解互联网协议
- 定义并初始化时调用拷贝构造函数
- C#Socket同步异步通讯总结笔记
- 呵呵
- el
- Silverlight游戏设计(Game Design):目录
- LR_socket协议测试实例
- 实现合并多行字符串(整理)
- 活动对象-同步调用
- 在上海、迪拜、深圳过马路
- Jquery 实现html table 行 Tr 的复制
- 工作年限==工作经验?
- 【J2ME】TextBox
- ODI KM二次开发手册
- 思考人生[1]