51Testing软件测试论坛

标题: 使用LR9.52版本进行flex网页游戏测试 [打印本页]

作者: fairylly    时间: 2010-8-20 08:53
标题: 使用LR9.52版本进行flex网页游戏测试
但遇到了下面几个问题:
1、录制完成生成脚本时,会提示找不到一些类,这些类为程序代码中使用的类;
但我有让开发把java程序整个打成jar包,并加到recording options中
我打开开发打的jar包,确认里面存在那些提示找不到的class文件

为什么还会报说找不到类呢?还是因为打jar包有什么注意事项?


2、使用flex+http协议录制脚本后,回放时,总报错:

Action.c(161): Error: Decoding of AMF message failed. Error is : Externalizable parsing failed:

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at hp.flex.HPExternalizableWrapper.ReadObject(HPExternalizableWrapper.java:96)
Caused by: flex.messaging.MessageException: Cannot create class of type 'DSK'. Type 'DSK' not found.
        at flex.messaging.util.ClassUtil.createClass(ClassUtil.java:65)
        at flex.messaging.io.AbstractProxy.createInstance(AbstractProxy.java:84)
        at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:409)
        at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:149)
        at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:128)
        ... 5 more

3、使用amf+http协议录制脚本后,回放时,报错:

Start auto log messages stack - Iteration 1.
Action.c(188):     edData\x13faultCode\x13messageId\n
Action.c(188):     \x03\x01\x01\x01\x06I57FF2F4E-B30A-E366-3E35-89248BD292C8\x01\x06俥Detected duplicate HTTP
Action.c(188):     -based FlexSessions, generally due to the remote host disabling session cookies. Session c
Action.c(188):     ookies must be enabled to manage the client connection correctly.\x01\x05\x00\x00\x00\x00\x00
Action.c(188):     \x00\x00\x00\x06\x1FlogInFlexRemote\x05Br痈\xC0\x00\x01\x06UServer.Processing.DuplicateS
Action.c(188):     essionDetected\x06IDAE33E60-CC0B-A2AD-2516-AFCC95DAD83A
Action.c(188): t=106852ms: Request done "http://IP/loginserver/messagebroker/amf;jsessionid=A774AD66163D9034C1A0C57E4F6C1C88"

        [MsgId: MMSG-26000]
Action.c(188): Error: Server returned error for message #1 : description="AMF call returned an error, described in XML seen in extended log"
End auto log messages stack.


对flex不太了解,请有相关经验的同仁指教下,谢谢了
作者: fairylly    时间: 2010-8-20 18:50
3、使用amf+http协议录制脚本后,回放时,报错:

Start auto log messages stack - Iteration 1.
Action.c(188):     edData\x13faultCode\x13messageId\n
Action.c(188):     \x03\x01\x01\x01\x06I57FF2F4E-B30A-E366-3E35-89248BD292C8\x01\x06俥Detected duplicate HTTP
Action.c(188):     -based FlexSessions, generally due to the remote host disabling session cookies. Session c
Action.c(188):     ookies must be enabled to manage the client connection correctly.\x01\x05\x00\x00\x00\x00\x00
Action.c(188):     \x00\x00\x00\x06\x1FlogInFlexRemote\x05Br痈\xC0\x00\x01\x06UServer.Processing.DuplicateS
Action.c(188):     essionDetected\x06IDAE33E60-CC0B-A2AD-2516-AFCC95DAD83A
Action.c(188): t=106852ms: Request done "http://IP/loginserver/messagebroker/amf;jsessionid=A774AD66163D9034C1A0C57E4F6C1C88"

        [MsgId: MMSG-26000]
Action.c(188): Error: Server returned error for message #1 : description="AMF call returned an error, described in XML seen in extended log"
End auto log messages stack.



这个问题可以确认,是因为dsid没有关联导致的问题;
关联后解决该问题


但第二点中,下面这个问题,还存在:
这个真是一点头绪都没有了。。。
而且奇怪的是,一会有一会没有。。。
同样的操作,录制两次,一次正常,一次不正常,diff过两次的代码也没什么差异,有可能导致这个的。。。


Action.c(161): Error: Decoding of AMF message failed. Error is : Externalizable parsing failed:

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at hp.flex.HPExternalizableWrapper.ReadObject(HPExternalizableWrapper.java:96)
Caused by: flex.messaging.MessageException: Cannot create class of type 'DSK'. Type 'DSK' not found.
        at flex.messaging.util.ClassUtil.createClass(ClassUtil.java:65)
        at flex.messaging.io.AbstractProxy.createInstance(AbstractProxy.java:84)
        at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:409)
        at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:149)
        at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:128)
        ... 5 more
作者: fairylly    时间: 2010-8-20 18:54
另,我和同事都使用9.52版本录制
我录制出来的,都是flex_web_request()这样的函数,他录制出来的是:flex_amf_call()这样的

他那种,需要做关联才有可能运行正常
我的,直接回放,不做关联可以回放成功。。。


奇了怪了。。。。
作者: msnshow    时间: 2010-8-20 20:29
设置不一样吧
作者: fairylly    时间: 2010-8-20 22:23
recording options 检查了两三遍,都是一样的。。。。
作者: fairylly    时间: 2010-8-21 11:43
flex_web_request()
今天我同事录制的脚本,也变成这种了。。。。
作者: msnshow    时间: 2010-8-23 21:22
没遇到过
作者: fairylly    时间: 2010-8-24 08:39
有没有其他人遇到过呢??
作者: fairylly    时间: 2010-8-26 15:58
目前使用flex_web_request()方式,基本可以满足需要

但遇到一个问题,没了头绪
脚本录制内容:登录、创建角色;
参数化用户和角色后,创建的角色,一直都创建到录制时的那个账户中

角色表中有一个uid是和用户表进行关联的,创建角色后uid一直都对应到录制时使用的那个账户的uid

寻找了很久,没有找到可进行关联的地方;

脚本如下:

flex_web_request("amf;jsessionid=FC5A37D2A1079F72BE603B9E5C33B107_4",
  "URL=http://192.168.146.13:8080/zzyserver/messagebroker/amf;jsessionid="
  "FC5A37D2A1079F72BE603B9E5C33B107",
  "Method=POST",
  "Resource=0",
  "RecContentType=application/x-amf",
  "Referer=http://192.168.146.13:8080/zzyserver/GameTest/Game3.swf",
  "Snapshot=t31.inf",
  "Mode=HTTP",
  "EncType=application/x-amf",
  "BodyBinary=\\x00\\x03\\x00\\x00\\x00\\x01\\x00\\x04null\\x00\\x02/"
  "4\\x00\\x00\\x01\\x95\n\\x00\\x00\\x00\\x01\\x11\n"
  "\\x81\\x13Oflex.messaging.messages.RemotingMessage\r"
  "source\\x13operation\\x13timestamp\\x0Fheaders\t"
  "body\\x13messageId\\x11clientId\\x15timeToLive\\x17destination\\x01\\x"
  "06\\x13addAvatar\\x04\\x00\n\\x0B\\x01\\x15DSEndpoint\\x06\rmy-amf\t"
  "DSId\\x06I314632C8-2F1F-8B86-BD0C-6691AB082C70\\x01\t\\x03\\x01\n"
  "s'com.game.dao.Avatar\\x11serverId\\x17delPassword\\x07mid\\x11nickNam"
  "e\\x07uid\\x11avatarId\t"
  "type\\
x04\\x01\\x06\\x01\\x04\\x01\\x06\\x0Ftestabc\\x04\\x00\\x04\\x0"
  "0\\x04\\x01\\x06IAF9FC7B3-65C3-91D5-48FB-AD5F75725658\\x06I31463927-0B"
  "0C-2022-D00F-2B7A9DF25707\\x04\\x00\\x06!avatarFlexRemote",
  LAST);

“\\x11serverId\\x17delPassword\\x07mid\\x11nickName\\x07uid\\x11avatarId\ttype”
这部份是提交的参数;
testabc是对应nickname
avatarId及uid是动态的
其它值是固定的
对应了下,这两个都为\\x04\\x00”
这个感觉像是为空。。。

[ 本帖最后由 fairylly 于 2010-8-26 16:07 编辑 ]
作者: fairylly    时间: 2010-8-26 16:08
用户登录后,server的响应信息也查了下,并没有什么uid相关的信息。。。。
作者: fairylly    时间: 2010-8-27 13:24
通过开发配合,已找到uid相对应的值(请求中使用到一个未加密的uid,及一个加密的uid)

未加密的uid使用的是数值型
在AMF协议中,数值型数据会进行一定算法的转换,算法未知,所以无法对其进行参数化
后把uid修改为字符型,可正常参数化


flex脚本中注意项:
1、dsid需要关联;
2、jsessionid可不关联(确认过不关联不会有影响),当然也可以进行关联;
3、程序中使用到的一些特殊id,如本次测试使用到的用户ID(uid)
作者: fairylly    时间: 2010-8-27 13:28
目录录制的脚本,都是
flex_web_request()这样的函数

不知道为什么一开始时是:flex_amf_call()

flex_amf_call这种,在Tree中可以比较方便的查看服务器响应信息,做关联时,很方便
flex_web_request这种在Tree中查看不到服务器响应信息,做关联时,只能通过replay log中server的响应来进行关联,较麻烦
作者: msnshow    时间: 2010-8-29 11:57
其实不需要在Tree中查看,用httpwatch之类的工具来看更方便
作者: 红色枫叶PL    时间: 2010-12-16 16:25
对于测试,我是新手,我下载了最新的 loadRunner11
在测试flex 应用程序时,也遇到这样的错误,
TestExternalizable Write Object throws exception:
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at hp.flex.HPExternalizableWrapper.TestObject(HPExternalizableWrapper.java:87)
对于相应的JAR包我都加载了,可不知为何还是会出错,
有哪 位朋友可以告诉我出错的原因。
我的QQ 380043051  ,有了解的可随时和我联系。谢谢。。。
作者: x2test    时间: 2010-12-16 20:57

作者: x2test    时间: 2010-12-16 21:44
现在很多flex 游戏啊
作者: shuihan    时间: 2012-2-1 11:06
楼主说缺少程序中的类这个问题解决了吗?
作者: 不知火舞    时间: 2012-3-6 17:18
我也报缺少类,没解决。谁能帮解决一下呀




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2