这几天在找关于http协议的时候看到了又一位大神关于Webgame自动化测试的设想和一些建议。在此结合自己之前的一点经验做一些记录。
  1. 目前常用的几款自动化测试工具,qtp、Selenium、WinRunner等都没有对webgame(特别是flash游戏)的ui层测试提供较好的解决方法。
  2. 目前大多数基于UI的Webgame自动化测试都是使用的屏幕坐标点击,这对于一些操作比较简单的游戏来说可以满足大部分的操作,当然,前提是必须得设计一套针对不同分辨率和显示情况下的坐标转换规则。但是,对于操作比较复杂的webgame来说,UI操作有些捉襟见肘了,而且目前也没有较好的UI层解决方案。
  3. webgame的UI测试不能满足自动化测试需求,还得依赖于协议测试。协议的自动化测试主要是向服务器发送一系列的包含了webgame在特殊动作时产生的数据包的http包或者其他相关的协议包,然后根据返回的数据包来判断是否正常。
  在这里介绍下基于UI和协议测试的一点实现方式。
  1. 基于坐标点击,这个在qtp里面可以进行虚拟坐标的对象化封装,算是目前比较好的一种处理方法,不过在这里强烈建议,假设你要使用qtp的虚拟对象,好自己定义,否则,维护起来会很麻烦。另外也可以使用vbs、java等语言来自定义坐标点击事件和区域划分,甚至坐标转换。
  2. 基于协议,这个主要是先利用httpwatch或者fiddler等抓包工具对webgame操作产生的数据包进行抓包分析,然后再根据具体的功能进行http包修改和扩展。由于对协议的自动化测试不是很熟悉,所以这里不做过多解释,以免误人误己。下面给出一个链接,有兴趣可以去看看:http://www.futurehandw.com/automation_test/webgame%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95%e4%b9%8b%e6%97%85%e4%ba%8c
  另外,在这里也简单介绍下python下的framework(非原装,是转自上面前辈的东西):
  首先需要python的pyamf包,可以通过这里来安装。
  之后我们需要Mechanize包,这是发送http及https包比较easy的类。
  通过已有的python test framework框架将测试用例变量化,后输出报告格式化,这样整体的测试框架出来了。
  python的 Pyamf解析包是对amf协议的解析利器,可以使你轻松的实现类似于对html-text的操作,我们也可以利用Mechanize来进行相应的协议自动化测试。
  Pyamf在协议测试中我们主要需要用到的类有三类:
  1.amf3协议包体类:
  envelope = pyamf.remoting.Envelope(amfVersion=3)
  产生的envelope对象是之后对你需要传递数据的封装对象。
  2.pyamf amf3协议的转换类:
  message = pyamf.remoting.encode(envelope)
  产生的message 可以利用urllib2.Request进行传递了。
  3.pyamf amf3协议的解码类:

res = urllib2.urlopen(req);
content = res.read();
content = pyamf.remoting.decode(content)
  这里后产生的content是返回amf3整体解析好的数据,可以根据需要将返回值进行解析,返回值可能是list{list{……},”jason”=jason},可以根据需要后做相应的assert