【被测系统说明】以Flex为前端应用,JAVA为后台处理的B/S系统。flex3.5+jdk1.5+LR11
【测试脚本录制】
项目是Flex技术作为前端开发的应用,所以我们需要启动loadrunner的Flex/Web脚本。(采用双协议)
录制之前,有必要说一下Flex的交互机制。浏览器作为客户端与服务器之间交互的媒介是amf,amf(二进制流)将服务器返回的数据编译后,到客户端进行解析,而本项目服务器端返回的数据解析后都是xml。
录制协议的选择:
①flex协议;(LR 11支持此协议的license为:AEACFSJI-YJKJKJJKEJIJD-BCLBR)
②flex+web(http/html)的双协议;(建议使用)客户端到服务端使用的依然是web协议,
录制脚本结束后可能出现提示你code generation error。主要是缺少了某些class之类的,如下几图:
这个什么DSK的当时开发都找不到相关的jar包,class,真不知道是什么东西来着。它是在我更换了电脑上jdk之后出现的。
图中的错误描述为“序列化错误——外部化对象类型不支持。”即脚本无法解析,这时需要引入一些JAVA class,从而序列化生成由客户端与服务端产生的AMF消息,编译、解析二进制信息(Flex默认使用AMF协议进行通讯)。
引入JAVA class包,缺少的包可在服务端如下位置取得:
\WebRoot\WEB-INF\lib(一般开发人员可提供如下包)
flex-messaging-common.jar
flex-messaging-core.jar
flex-messaging-opt.jar
flex-messaging-proxy.jar
flex-messaging-remoting.jar
flex-rds-server.jar;
jar存放位置最好为英文路径。引入了这些包后,生成脚本时若还提示缺少某些类,可与开发人员沟通获得。
引入方式:在Virtual user generator组件下,点击Tools->Recording Options->Flex->Externalizable Objects->选择序列化对象,通过自定义java class,如下图:
重新生成脚本时,可能还会缺少某些类,可与开发人员沟通获得;也有可能报如下错误:
提示为:bad version number in …..此错误为jdk版本不一致。因为此次项目的jdk版本为1.6,而LR11的默认jdk则为1.5(可在安装路径:…\HP\LoadRunner\jre下的readme文档中查看到)。
解决方法:可用最新jre1.6或jre1.7替换loadRunner11 下的jre即可解决这个问题(整个jre文件夹替换!)。将与被测系统版本一致的jre替换到“安装路径…\HP\LoadRunner\”下的jre。
至此问题解决,可以正常解析flex协议下所有请求数据了,录制到的脚本结构更加清晰,方便查阅与编辑。
若用web(html/http)的单协议方式,要选择url-based script的方式进行录制,但是录制到的脚本不是很清晰,不便于编辑。
==============================分割线,网上摘抄的===================================
回放前,先设置一下输出日志的内容,Vuser-->Run-time Settings-->log-->log messages at the detail level of-->Extended log中勾选Data returned by server(由服务端返回给客户端的数据) (如下图)
注意:这个日志选项会带来一些麻烦,如果服务器返回的是一个.swf页面的话,回放时,loadrunner解析返回输出数据的速度很慢,所以如果代码中有请求.swf资源,最好先注释掉这段代码,待调试结束后,再将代码还原 |
想看回放时,loadrunner提交的数据和服务器响应,可以进入Tree视图--snapshot页签内查看repaly时,loadrunner的request和服务器响应reponse |
-------------------------------------------------------------------------------------
flex协议默认使用AMF协议进行通讯。部分文档内容可见链接:http://www.docin.com/p-318854950.html
LoadRunner对flex的支持:Loadrunner提供flex和amf两个
虚拟用户协议:
AMF:
Flex:
--------------------===========---------------------====================---------
Flex 虚拟用户脚本函数:
Flex Vuser script emulate communication between a Flex client and a Flex application.
==============================================================
2个名词的解释:
AMF(Action Message Format)是ActionScript对象序列化后的二进制流。用于Adobe Flash应用和远端服务的通讯。由于它是基于二进制的数据传输,所以相对于XML SOAP,json,WebService等基于字符串的数据格式,有数据体积小和效率高的特点。
BlazeDS是一个
基于服务器的
Java远程调用(remoting)和
Web消息传递(messaging)
技术,使得后台的Java应用程序和运行在浏览器上的
Flex应用程序能够相互通信。