欢迎来到成都信息处理产品检测中心!客户服务 | 联系我们
技术专栏 您当前所在位置: > 信息资讯 > 技术专栏 >

性能测试

类别:技术专栏 信息来源:未知 浏览量:

前不久公司需要测试考勤服务器,这就需要写能够模拟实物考勤机的脚本,才开始还真不知道怎么开始,经过和公司的开发人员勾通,得知考勤机的考勤信息是无线传输,基于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
 
      
 
    
 

手机扫一扫

成都信息产品处理检测中心 蜀ICP备10207271号-1