51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4792|回复: 9
打印 上一主题 下一主题

软件测试中Flex程序性能测试

[复制链接]
  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2010-7-4 17:54:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     简介: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 解析成对象后,为了更加方便测试人员阅读和理解

    [ 本帖最后由 msnshow 于 2010-7-4 17:57 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2010-7-4 20:05:32 | 只看该作者
    版主你忘了说最实际的应用是拿给开发做自动化测试,交给运营放到watchmouse上看看QoS,或者写外挂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-7-5 09:26:26 | 只看该作者
    LR中data.ws下的二进制代码如何解析?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    4#
     楼主| 发表于 2010-7-29 22:44:30 | 只看该作者

    回复 2# 的帖子

    的确这类最适合的还是开发写一些代码来进行测试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-4-10 11:26
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
    发表于 2011-11-15 12:20:22 | 只看该作者
    谢谢分享
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2011-11-15 14:58:17 | 只看该作者
    这个实用性不是很强,还不如自己写的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-11-22 14:59:49 | 只看该作者
    loadrunner 有flex协议的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2015-1-16 10:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2011-11-25 14:03:54 | 只看该作者
    loadrunner11已经有flex协议了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    9#
    发表于 2012-4-21 07:14:07 | 只看该作者
    回复 8# fjstc3441

    协议过旧,用不了。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    10#
    发表于 2012-4-21 07:15:35 | 只看该作者
    想用flex录制下动作。这个还是传输层的东西哎
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-13 04:07 , Processed in 0.079713 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表