深入剖析Flex程序性能测试

在学习Flex的过程中,你可能会遇到Flex程序性能测试方面的问题,这里和大家分享一下,本文重点介绍性能测试中如何处理Flex的AMF消息。本文采用的测试工具是TheGrinder,开发语言是Jython和Java。

创新互联公司是一家专注于成都网站设计、成都网站建设与策划设计,友谊网站建设哪家好?创新互联公司做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:友谊等地区。友谊做网站价格咨询:028-86922220

Flex程序性能测试

Adobe的Flex已经越来越流行,但是Flex程序的性能测试却还没有很好的工具。包括著名的性能测试工具LoadRunner都还没有对新版本Flex性能测试有很好的支持。笔者在实际工作的研究中,发现了一个好的测试Flex程序的方式。本文重点介绍性能测试中如何处理Flex的AMF消息。本文采用的测试工具是TheGrinder,开发语言是Jython和Java。
 
  1.Flex程序性能测试的困惑

  Flex默认使用的是AMF协议进行传输。AMF协议在浏览器与Server端的交互是通过HTTP协议进行传输,如图1-1。Client端发到Server端:首先是ActionScript的对象,包装进AMFMessage,AMFMessage对象再被序列化成二进制数组,存入HTTPPOST请求的Data域中,数据传到服务器后,反序列化成Java版AMFMessage对象,Server端Flex框架再把AMFMessage中的业务对象取出来发送到对应的服务器端Java对象。Server端到Client端是类同的。

  图1-1FlexAMFMessage的传输

  当用脚本录制器把AMFMessage录制下来时,是一串人不可读的二进制数组。
  result=request1201.POST('/home/messagebroker/amfsecure'+
  '?RND',
  (0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x04,
  0x6E,0x75,0x6C,0x6C,0x00,0x02,0x2F,0x31,
  0x00,0x00,0x00,0xCB,0x0A,0x00,0x00,0x00,
  0x01,0x11,0x0A,0x81,0x13,0x4D,0x66,0x6C,
  0x31,0x30,0x37,0x37,0x34,0x32,0x45,0x31,
  ...,
  0x07,0x6E,0x69,0x6C,0x01,0x04,0x00,),
  (NVPair('Content-Type','application/x-amf'),))

  如果不需要对发出去的AMFMessage做任何参数化,直接回放脚本即可。但是如果想要看懂AMF消息里面的内容,或者需要依据实际情况修改AMF消息中的内容后再发出去,那么就要想办法把二进制的数组解析出来。如前面所诉,这个二进制的数组,其实是AMFMessage对象序列化后的数据。可惜的是,这个序列化算法是Adobe自定义的,普通的Java反序列化,并不能解析出来,并且解析成AMFMessage对象以后,还需要重新序列化成二进制,发送到服务器端。笔者曾经尝试过多种办法解析和编码AMFMessage对象,***找到一个方法可以很好的编码和解析AMFMessage,并在实际测试中予以运用,这个方法同时适用于TheGrinder,和LoadRunner。#p#

  2.解析和编码FlexAMFMessage

  首先在已部署的Flex应用程序中找到flex-messaging.jar、flex-messaging-common.jar两个包,通常在war/WEB-INF/lib目录下。
  开启Eclipse创建一个JavaObject引用这两个包,创建一个类AMFTransformer,专门负责解析和编码AMFMessage。
载入以下对象:
  importflex.messaging.io.SerializationContext;
  importflex.messaging.io.amf.ActionContext;
  importflex.messaging.io.amf.ActionMessage;
  importflex.messaging.io.amf.AmfMessageDeserializer;
  importflex.messaging.io.amf.AmfMessageSerializer;

  解码,二进制到AMFMessage对象,利用AmfMessageDeserializer类:

  AMFMessage解析成Java对象后,可以根据实际需要做任意的修改。

 #p#

  编码,AMFMessage对象到二进制数组,利用AmfMessageSerializer类:

  注:AmfMessageSerializer,AmfMessageDeserializer的构造函数在不同版本中略有差异,可能需要SerializationContext作为构造函数的参数。
  AMFMessage解析成对象后,为了更加方便测试人员阅读和理解,可以利用开源包XStream把Java对象转储成XML。

  3.Flex性能测试

  能够把FlexAMFMessage消息解析和编码后,就可以利用传统的Web性能测试工具进行测试了。

  4.后记

  本文书写仓储,不可避免有遗漏错误之处,如有不对,还往不吝赐教。

网站名称:深入剖析Flex程序性能测试
文章网址:http://www.shufengxianlan.com/qtweb/news26/225676.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联