使用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"
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不太了解,请有相关经验的同仁指教下,谢谢了 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"
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 另,我和同事都使用9.52版本录制
我录制出来的,都是flex_web_request()这样的函数,他录制出来的是:flex_amf_call()这样的
他那种,需要做关联才有可能运行正常
我的,直接回放,不做关联可以回放成功。。。
奇了怪了。。。。 设置不一样吧 recording options 检查了两三遍,都是一样的。。。。 flex_web_request()
今天我同事录制的脚本,也变成这种了。。。。 没遇到过 有没有其他人遇到过呢?? 目前使用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 编辑 ] 用户登录后,server的响应信息也查了下,并没有什么uid相关的信息。。。。 通过开发配合,已找到uid相对应的值(请求中使用到一个未加密的uid,及一个加密的uid)
未加密的uid使用的是数值型
在AMF协议中,数值型数据会进行一定算法的转换,算法未知,所以无法对其进行参数化
后把uid修改为字符型,可正常参数化
flex脚本中注意项:
1、dsid需要关联;
2、jsessionid可不关联(确认过不关联不会有影响),当然也可以进行关联;
3、程序中使用到的一些特殊id,如本次测试使用到的用户ID(uid) 目录录制的脚本,都是
flex_web_request()这样的函数
不知道为什么一开始时是:flex_amf_call()
flex_amf_call这种,在Tree中可以比较方便的查看服务器响应信息,做关联时,很方便
flex_web_request这种在Tree中查看不到服务器响应信息,做关联时,只能通过replay log中server的响应来进行关联,较麻烦 其实不需要在Tree中查看,用httpwatch之类的工具来看更方便 对于测试,我是新手,我下载了最新的 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,有了解的可随时和我联系。谢谢。。。 :) 现在很多flex 游戏啊 楼主说缺少程序中的类这个问题解决了吗? 我也报缺少类,没解决。谁能帮解决一下呀
页:
[1]