`
hereson
  • 浏览: 1454287 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Flex 程序性能测试

    博客分类:
  • flex
阅读更多

Flex 程序性能测试

作者:叶晖俊 yehuijun2001@163.com

2008 4 11

 

注: Flex 程序的性能测试, 作者叶晖俊。 本文版权归属作者所有,可以自由转载,但是必须注明出处和作者,否则将追究法律责任。

 

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

 

关键字: Flex 测试、 Flex 性能测试、 AMF Message 解码

1. Flex 程序性能测试的困惑

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


1-1 Flex AMF Message 的传输

 

当用脚本录制器把 AMF Message 录制下来时, 是一串人不可读的二进制数组。

    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' ), ))

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

 

2. 解析和编码 Flex AMF Message

首先在已部署的 Flex 应用程序中找到 flex-messaging.jar flex-messaging-common.jar 两个包, 通常在 war/WEB-INF/lib 目录下。

 

开启 Eclipse 创建一个 Java Object 引用这两个包,创建一个类 AMFTransformer ,专门负责解析和编码 AMF Message

 

载入以下对象:

import flex.messaging.io.SerializationContext;

import flex.messaging.io.amf.ActionContext;

import flex.messaging.io.amf.ActionMessage;

import flex.messaging.io.amf.AmfMessageDeserializer;

import flex.messaging.io.amf.AmfMessageSerializer;

 

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

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

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


 

注: AmfMessageSerializer AmfMessageDeserializer 的构造函数在不同版本中略有差异,可能需要 SerializationContext 作为构造函数的参数。

 

AMF Message 解析成对象后,为了更加方便测试人员阅读和理解,可以利用开源包 XStream Java 对象转储成 XML


3. Flex 性能测试

能够把 Flex AMF Message 消息解析和编码后,就可以利用传统的 Web 性能测试工具进行测试了。 关于传统 Web 程序的性能测试,请参见笔者另外一篇文章《电子商务系统的性能测试》。

4. 后记

本文书写仓储,不可避免有遗漏错误之处,如有不对,还往不吝赐教。 另外本人还提供电子商务系统的性能咨询服务。如有需要,请在本人博客上留言,或 EMAIL 给我。

 

免责申明:

本文纯属技术探讨,不对使用本方法是否侵犯他人版权负责。 请读者自行斟酌,或咨询 Adobe 公司确认该方法合法。

 

注: Flex 程序性能测试》, 作者叶晖俊, yehuijun2001@163.com 本文版权归属作者所有,可以自由转载,但是必须注明出处和作者,否则将追究法律责任。

分享到:
评论

相关推荐

    flex性能测试PPT

    【Flex性能测试】是针对基于Flex技术构建的富互联网应用程序(RIA)进行的性能评估过程。Flex是由Adobe公司开发的一种支持RIA开发和部署的技术,它主要用于创建具有高度交互性和动态用户体验的企业级应用。Flex的...

    测试flex应用程序

    而当我们需要对这些Flex应用程序进行自动化测试时,"sfapi"(可能是Flex Selenium API的简称)就显得尤为重要。 "sfapi" 提供了一个接口,使得测试工具,如Selenium,能够与Flex应用程序的控件进行交互。Selenium是...

    Flex 应用程序性能: 改善客户端应用程序和服务器性能的技巧与技术

    ### Flex 应用程序性能:改善客户端应用程序和服务器性能的技巧与技术 #### 概述 随着互联网技术的发展,富互联网应用(RIA)的需求日益增长。Macromedia Flex 是一个强大的平台,它允许开发者创建高性能的 RIA。...

    flex例子.flex源程序

    通过这个"flex例子.flex源程序",你不仅可以了解Flex的基本语法和组件使用,还能学习到如何组织和管理一个Flex项目,以及如何利用FlexCover这样的工具进行测试和质量控制。在深入学习过程中,还可以尝试扩展和修改...

    Loadrunner9.5Flex性能测试[参照].pdf

    LoadRunner是一款强大的负载和性能测试工具,9.5版本对于Flex应用的支持使得它能够对基于Adobe Flex技术构建的Web应用程序进行深入的性能评估。性能测试是确保系统在高并发用户负载下稳定运行的关键步骤,而Flex应用...

    flex4.5 开发安卓程序文档

    总之,"Flex 4.5 开发安卓程序文档"是学习如何使用Flex进行Android开发的重要资料,涵盖了从项目创建到应用发布的全过程,同时也包含了一些性能优化和调试技巧。对于想要跨入Flex移动开发领域的开发者来说,这是一份...

    Flex 性能简介.pdf

    为了评估Flex与JSP在实际应用中的性能差异,研究选择了实现相同的购物车应用程序作为测试案例。通过使用MXML和JSP分别构建这个应用,研究人员能够更直观地对比两种技术在服务器端的表现。 #### 对单一Flex商店应用...

    flex_与JSP性能比较分析

    在模拟高并发场景的压力测试中,Flex应用程序的表现同样优秀。尽管Flex和JSP应用程序都消耗了大约75MB的平均内存,但是Flex应用程序对服务器CPU的占用率仅有0.8%,而JSP应用程序的这一数值达到了21.2%。这表明,在...

    loadrunner for flex引用包

    LoadRunner for Flex是HP公司推出的一款强大性能测试工具,专为Flex应用程序设计,能够帮助我们评估和优化Flex应用的性能、容量和稳定性。本教程将详细介绍在LoadRunner中如何正确引用Flex相关的包,以确保性能测试...

    flex 性能,查看内存

    标题 "flex 性能,查看内存" 暗示了我们正在讨论Adobe Flex,这是一个用于构建富互联网应用程序(RIA)的开源框架,基于ActionScript和Flash Player或Adobe AIR。Flex应用通常涉及大量的交互和动态数据处理,因此...

    Flex 性能优化全集

    通过对Adobe Flex应用程序进行细致的性能优化,不仅可以提升用户体验,还能有效减少服务器负载,提高整体系统效率。开发者应该密切关注应用的实际运行情况,适时调整优化策略,以应对不断变化的需求和技术环境。

    Flex持续集成之单元测试

    Flex持续集成之单元测试是开发过程中一个至关重要的环节,它主要关注的是Flex应用程序的模块化测试,确保每个独立的代码单元都能正常工作。通过单元测试,开发者可以预先发现和修复问题,提高代码质量和稳定性,同时...

    flex3应用程序示例

    在Flash Builder 3中开发Flex应用程序,用户可以利用其强大的集成开发环境(IDE),包括代码编辑、调试和性能分析工具,简化开发流程。Flash Builder 3是专为Flex和ActionScript开发设计的,提供代码提示、自动完成...

    搭建flex测试站点 可以好好看看啊

    通过以上步骤,你已经成功搭建了一个Flex测试站点,可以开始你的Flex应用程序开发之旅。记得定期更新软件以保持最佳性能和安全性。在开发过程中,遇到问题可以查阅官方文档或社区论坛,那里有丰富的资源和经验分享。

    flex测试总结

    4. **性能测试**:Flex应用可能需要处理大量数据或复杂的动画,因此性能测试至关重要。我们可以使用Adobe Scout或第三方工具如JMeter来分析性能瓶颈。 5. **兼容性测试**:Flex应用需要在不同的浏览器、操作系统和...

    flex 使用profile性能分析

    【Flex性能分析】Flex是一种基于ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件和强大的数据绑定能力。在开发过程中,性能优化是必不可少的一环,而`Flex Profile`就是用于...

    Flex调用Webservice及java程序

    在本主题中,我们将深入探讨如何使用Flex调用Web服务,尤其是与Java程序的交互。 1. **Flex与Web服务的交互** Flex可以通过SOAP(简单对象访问协议)或AMF(动作消息格式)来调用Web服务。SOAP是一种基于XML的通信...

    Flex资料大全(Flex白皮书 Flex cookbok Flex编程指南 Flex设计模式等)

    可能是关于开发Flex应用程序的实践指南,可能包含项目管理、团队协作、调试技巧、测试策略等方面的内容,旨在帮助开发者提高开发效率和代码质量。 6. **flex中文文档.pdf**: 这是一份中文版的Flex文档,对于中文...

    flex框架 JAVA-FLEX

    1. **Flex SDK**:Flex Software Development Kit包含了一组工具和库,允许开发者创建、编译和测试Flex应用程序。它包括了Flex编译器、Flex Builder IDE(基于Eclipse)、命令行工具以及Flex组件库。 2. **Flex组件...

Global site tag (gtag.js) - Google Analytics