文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Flex程序如何实现性能测试

2023-06-17 14:32

关注

这篇文章主要为大家展示了“Flex程序如何实现性能测试”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex程序如何实现性能测试”这篇文章吧。

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的传输

Flex程序如何实现性能测试

当用脚本录制器把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。

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类:

Flex程序如何实现性能测试

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

Flex程序如何实现性能测试

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

Flex程序如何实现性能测试

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

3.Flex性能测试

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

以上是“Flex程序如何实现性能测试”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯