《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > LoadRunner在无线传感器网络开发中的应用
LoadRunner在无线传感器网络开发中的应用
来源:微型机与应用2010年第14期
吉向东
(襄樊学院 物理与电子工程学院,湖北 襄樊441053)
摘要: 讨论了LoadRunner在无线传感器网络应用系统开发中的应用。无线传感器节点和簇节点作为数据采集和预处理节点,需要向后台系统发送大量的数据。首次将LoadRunner引入无线传感器网络应用开发过程,对传感器节点与后台系统的通信进行仿真,并提出了运用LoadRunner进行测试和仿真的工作流程。有效地对后台系统的性能进行了测试,同时节约了硬件系统的研发成本,缩短了项目工期。
Abstract:
Key words :

摘  要: 讨论了LoadRunner无线传感器网络应用系统开发中的应用。无线传感器节点和簇节点作为数据采集和预处理节点,需要向后台系统发送大量的数据。首次将LoadRunner引入无线传感器网络应用开发过程,对传感器节点与后台系统的通信进行仿真,并提出了运用LoadRunner进行测试和仿真的工作流程。有效地对后台系统的性能进行了测试,同时节约了硬件系统的研发成本,缩短了项目工期。
关键词: LoadRunner;无线传感器网络;性能测试

1 无线传感器网络
    无线传感器网络(Wireless Sensor Networks)是由部署在观测环境中的大量微型廉价低功耗的传感器节点以无线多跳通信方式构成的网络系统[1]。根据信息获取和处理技术,可以将无线传感器网络划分为传统无线传感器网络和多媒体无线传感器网络[2]。
    无线传感器网络将逻辑上的信息世界与真实的物理世界融合在一起,深刻地改变了人与自然的交互方式[3]。可广泛地应用于军事、工农业控制、生物医疗、环境监测等诸多领域[4-7]。美国《商业周刊》认为,WSN是全球未来四大高技术产业之一,是21世纪世界最具有影响力的21项技术之一。MIT新技术评论认为,WSN是改变世界的十大新技术之一[6]。
    目前国内外研究人员对传统WSN的研究主要集中于网络通信技术、基础设施、中间件、传感器节点、数据管理、嵌入式软件系统等方面[6]。对于多媒体WSN,北京邮电大学智能通信软件与多媒体北京市重点实验室、中国科学院计算技术研究所、哈尔滨工业大学已开始对该领域的探索。但是这些研究成果尚处于起步阶段,距离实际应用还相差甚远[2]。目前关于WSN嵌入式软件系统方面的研究成果主要是嵌入式操作系统,加利福尼亚大学伯克利分校研究开发了一个传感器节点操作系统TinyOS,加利福尼亚大学洛杉矶分校研究了传感器节点嵌入式操作系统SOS。而对WSN应用软件的研究开发工作则远远落后于其他方面的研究,还有大量的工作需要完成, 诸多新问题尚待发现,全新的应用尚待开发,任重而道远[6]。
    LoadRunner目前已广泛应用于传统软件项目的性能测试[8-11],也有研究人员将其运用于网络可信性评测的仿真研究当中[12]。本文首次将其引入无线传感器网络应用系统的开发,提出了LoadRunner在无线传感器网络开发中的测试和仿真流程,有效解决了无线传感器网络应用开发中存在的开发成本高、开发周期长、没有性能测试或者性能测试不充分等问题,取得了良好的效果。
2 将LoadRunner引入无线传感器网络应用开发
2.1 LoadRunner

    LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测来确认和查找问题,它能够对整个企业的系统架构进行测试,最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。
    LoadRunner包含Virtual User Generator、Controller和Analysis[11]三个部件。Virtual User Generator可以在Windows、UNIX或Linux机器上同时产生成千上万个用户访问,极大地减少负载测试所需的硬件和人力资源。Controller可以设定负载方案、业务流程组合和虚拟用户数量。通过Controller的Rendezvous功能既能建立起持续且循环的负载,又能管理和驱动负载测试方案。同时,还可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载,从而将测试过程自动化。Analysis负责收集汇总所有的测试数据,并提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner的Web交易细节监测器,可以查看所有的图象、框架和文本下载所需的时间。另外,Web交易细节监测器能够分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如可以将网络延时进行分解,以判断DNS解析时间、连接服务器或SSL认证所花费的时间。通过使用LoadRunner的分析工具,可以很快地查找到出错的位置和原因并作出相应的调整。
    LoadRunner内含集成的实时监测器,在负载测试过程中,可以随时观察到应用系统的运行性能。性能监测器可以实时显示交易性能数据,也可以显示其他系统组件如application server、web server、网络设备和数据库的实时性能,从而更快地发现系统瓶颈和其他问题所在。LoadRunner还通过可以无限精确重复进行的回归测试保证系统发布的高性能。
2.2 运用LoadRunner进行测试和仿真的工作流程
    运用LoadRunner进行测试和仿真的工作流程如图1所示。

2.2.1 制定负载测试和仿真计划
    在任何类型的测试和仿真中,计划都是必要的步骤。充分而详尽的计划是成功测试和仿真的关键。确定系统的组成,画出系统的组成图。组成图主要包括系统中所有的组件(如传感器节点和簇节点)的数目,组件部署的方式以及相互之间的通信方式,传感器节点、簇节点、数据库服务器、系统服务器的配置。
2.2.2 开发测试和仿真脚本
    可以使用LoadRunner中虚拟用户的活动来模拟传感器节点和簇节点与系统的通信,而虚拟用户的活动就包含在测试脚本中,因此测试脚本对系统测试和仿真而言非常重要。
    开发测试脚本要使用Virtual User Generator组件。按照测试和仿真计划定义每一个虚拟用户的活动、结合点和事务。
    Virtual User Generator中的脚本分为vuser_init、vuser_end和Action三部分。其中vuser_init和vuser_end都只能存在一个,不能再分割,而Action还可以分成无数多个部分。
    对于传感器节点和簇节点需要登陆的系统,可以把登陆部分放到vuser_init中,登陆后的通信过程放到Action中,注销登陆部分放到vuser_end中。如果登陆操作需要放置集合点,那么登陆操作也要放到Action中,因为对于LoadRunner,vuser_init中不能添加集合点。在其他情况下,只要把操作部分放到Action中即可。在重复回放测试脚本时,vuser_init和vuser_end中的内容只会执行一次,重复执行的只是Action中的部分。
    如果传感器节点和簇节点在与系统通信过程中,提交了一些数据(例如要增加数据库记录)。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这不仅不符合实际运行情况,而且有可能引起冲突。为了更加真实地模拟实际环境,需要各种各样的输入。LoadRunner提供了参数化输入方式。用参数表示用户的脚本可以大大缩短脚本的长度,同时还可以使用不同的数值对脚本进行测试。
    参数化主要包含两项任务:(1)在脚本中用参数取代常量值;(2)设置参数的属性以及数据源。LoadRunner中支持的参数类型有DateTime、Group Name、Load Generator Name、Iteration Number、Random Number、Unique Number、Vuser ID、File、User Defined Function等。
2.2.3 创建运行场景
    运行场景描述在测试和仿真活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
2.2.4 运行测试
    只需按照预定的场景,执行测试和仿真即可。
2.2.5 监视场景
    在运行过程中,可以监视各个服务器的运行情况(Database Server、Web Server等)。监视场景可通过添加性能计数器来实现。
2.2.6 分析测试和仿真结果
    在这一步中,需要分析大量的数据和图表,生成各种不同的报告,最后得出结论。
2.3 运用LoadRunner对无线传感器应用系统进行测试和仿真
    无线传感器节点与系统之间基于GPRS通过TCP协议进行通信,系统开发过程中,为了缩短项目周期,硬件研发与软件研发同步进行。在项目初期即确定了传感器节点和后台系统之间的接口、交换数据的格式。硬件研发中选取了几种方案,但是没有定型,计划在项目进行中根据软硬件之间的衔接情况做出最后的决定,然而系统对性能的要求比较苛刻,如果根据项目预定的规模分别按照几种方案制出所有的传感器节点,其研发成本会相当高,经讨论决定引入LoadRunner来进行传感器节点的仿真,以压缩研发成本,同时,又可以测试后台系统的性能是否能够满足用户需求。
    由于篇幅所限,这里仅附上Virtual User Generator的部分用户脚本:
    (1)在vuser_init中打开相应的TCP连接
vuser_init()
{
    int rc;
    lrs_startup(257);        //建立连接
    rc=lrs_create_socket("userid","TCP","RemoteHost=
192.168.1.101:16688",LrsLastArg);
    if(rc==0)
        //连接成功建立
        lr_output_message("Socket  was successfully created ");
    else
        //连接建立失败,报告错误码
        lr_output_message("An error occurred while creating
the socket, Error Code: %d", rc);
    return 0;
}
    (2)在Action中对传感器簇节点与系统的通信进行仿真,为了真实模拟簇节点与系统的通信过程,对发送的数据databuf进行了参数化,部分代码如下:
    ……    //建立集合点
    lr_rendezvous("send");    //事务开始
    lr_start_transaction("send");
    //模拟簇节点向系统发送数据
    lrs_send("userid", "databuf", LrsLastArg);
    ……
    lr_end_transaction("send");
    ……
    vuser_end中关闭TCP连接,脚本略。
    (3)在确定运行场景时,根据系统需求,对集合点send处的用户确定为100,可以模拟100个簇节点同时向系统发送数据。在运行场景的过程中,对服务器CPU、内存和硬盘相关的计数器进行了观测,分别如图2、图3、图4所示,同时观测了服务器的.net、sql server相关计数器(均处于正常范围),网络接口的发包出错情况和收包出错情况(检测过程中均为0),结果表明,系统能够很好地满足设计要求。

    无线传感器网络作为21世纪的一项重要高新技术,已经得到广大工程技术人员和科研人员的广泛关注。本文在无线传感器网络应用开发中首次将LoadRunner引入开发过程,对传感器节点和簇节点与后台系统的通信进行了模拟和仿真,有效地提高了无线传感器网络系统开发中硬件和软件研发的并行度,缩短了开发周期,大大降低了开发成本,取得了良好的效果。
参考文献
[1] AKYILDIZ I F,SU W,SANKARASUBRAMANIAM Y,et al. Wireless sensor networks:a survey[J].Computer Networks,2002,38(4):393-422.
[2] 马华东,陶丹.多媒体传感器网络及其研究进展[J].软件学报,2006,17(9):2013-2028.
[3] 孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[4] 李建中,李金宝,石胜飞.传感器网络及其数据管理的概念、问题与进展[J].软件学报,2003,14(10):1717-1727.
[5] 任丰原,黄海宁,林闯.无线传感器网络[J].软件学报,2003,14(7):1282-1291.
[6] 李建中,高宏.无线传感器网络的研究进展[J].计算机研究与发展,2008,45(1):1-15.
[7] 李志刚,周兴社.传感器网络[J].计算机应用研究,2004(12):9-12.
[8] 李怡,周国祥.基于LoadRunner的一种性能测试流程方案研究与设计[J].计算机应用研究,2009,26(11):4143-4145.
[9] 赫建营,晏海华,刘超,等.一种有效的Web性能测试方法及其应用[J].计算机应用研究,2007,24(1):275-277.
[10] 浦云明,范明红,许明娜.Web应用系统负载测试[J].计算机应用与软件,2009,26(11):120-123.
[11] 文俊浩,桑春艳,何盼.电子政务系统性能测试应用研究[J].计算机科学,2009,36(4):179-180.
[12] 庞永刚,王慧强,郑瑞娟.用于网络可信性评测的事件注入技术仿真研究[J].系统仿真学报,2008,20(10):2713-2717.

此内容为AET网站原创,未经授权禁止转载。