51Testing软件测试论坛

标题: 讨论:游戏中商店的测试要点 [打印本页]

作者: 11111    时间: 2010-5-31 10:47
标题: 讨论:游戏中商店的测试要点
涉及到货币的测试更显重要,大家要踊跃发言哦。
我先说:
1.购买或者售出是否正常(包括是否会影响到他人货币数据),特别加上括号里的那句,是因为出现过售出自己物品,获得相应货币的同时,他人的货币也增加了相应值。
2.通过抓包工具,查看购买或者售出的接口,看是否有隐藏的接口,现有接口是否有校验。
作者: Indisorder    时间: 2010-5-31 11:08
楼主说的这个商店好像囊括了摆摊,NPC商店,商城,拍卖行,交易,给予,付款邮件....等一系列的东西。各个功能主要关注的还是有不同的东西吧...

比如说摆摊、拍卖行、交易、给予这个是要关注到两个(或者多个)client间数据显示和物品显示的信息同步;
NPC商店、商城的判断要放在服务器端,先扣除玩家的数据信息再发送给玩家物品,同时玩家的物品信息就已经被写入数据库了。

测试方法可以不一样但觉得重要的是客户端的功能性测试。毕竟玩家不需要知道服务器是怎么做的,他们只需要安装好客户端玩游戏就可以了。

[ 本帖最后由 Indisorder 于 2010-5-31 11:14 编辑 ]
作者: maxwell12    时间: 2010-5-31 11:17
测试总体思路
1 对游戏中商店功能涉及的所有字段进行测试,例如物品买价,卖价,商店NPC,物品不可出售属性
2 对商店功能实现进行测试,检查功能实现是否正确
3 用WPE截取购买和出售物品的封包,对所有购买和出售有限制的环节进行检查,检查服务器端是否有检查
4 尝试金钱不足时购买成功减少金钱操作,和尝试金钱到达上限时出售物品获得金钱操作.检查金钱字段数值溢出

测试细则举例
对物品表中物品购买价格和出售价格的字段值进行检查
对商店表中的NPCID(商人NPC)字段值进行检查
对物品表中物品不可出售字段的值进行检查
在游戏中执行购买和出售操作,功能运行结果是否正确
包裹满执行购买操作,功能运行结果是否正确
用WPE截取购买物品的封包,在金钱不足时发送复制包,检查服务器是否有检查,反馈客户端不能购买提示
作者: maxwell12    时间: 2010-5-31 11:32
测试总体思路
1 对商店功能涉及到的所有字段进行检查 例如物品买价,卖价,商店表NPCID,物品不可出售属性
2 对商店所有功能进行操作检查 检查功能实现是否正确
3 用WPE截取购买和出售的封包,复制发送检查所有限制是否在服务器端有检查.例如 超出交易距离交易,金钱不够购买物品等
4 进行金钱不足时购买物品操作和金钱到达上限时出售物品操作,检查包裹中金钱数值是否会溢出

举例测试细则
进行购买和出售操作,检查功能是否正确,物品买价卖价是否正确,检查玩家金钱数值是否正确
包裹满时进行购买物品操作,检查处理方式是否正确
作者: Indisorder    时间: 2010-5-31 11:48
MAX一出,楼下无人...
作者: 星空物语    时间: 2010-5-31 22:59
抓包工具还能看接口?是说的WPE么?
现在的游戏安全性方面还是这么差,可以用WPE改?
只闻其声不见其人,好想系统学下WPE,不知各位能否指点一二
作者: Indisorder    时间: 2010-6-1 09:07
使用WPE主要是因为在接口测试过程中,WPE可以对客户端和服务器之间的数据包进行捕获和截取。
根据对捕获的包的分析和编辑,使用者可以按照客户端和服务器之间的通讯方式模拟一个“合法”的数据包。比如当捕获到客户端登陆部分发送的单个“用户登陆”数据包后,进行预定数量的复制,然后发送给服务器。以此可以模拟多个客户端登陆的场景。
个人觉得工具是其次,还是要从“手工的”“缓慢的”黑盒功能测试开始做起,在对游戏有了更深入的理解和掌握后,再进行工具的使用。
能使用WPE是因为在开发阶段,游戏客户端和服务器之间的通信不会受到太多的约束。接口和接口间的安全模块还没有加载上。不会像楼上所说,安全性很差。
作者: Indisorder    时间: 2010-6-1 09:07
借此召唤MAX做详尽介绍...
作者: maxwell12    时间: 2010-6-1 09:35
确实如楼上所说
WPE在开发阶段和运营阶段的使用目的是不同的.
我用WPE的目的有:
发送批量包,纯复制的功能包.用普通客户端模拟玩家行为一般达不到这种单位时间内发包数量.因为客户端很多地方有动画延迟和操作时间.发批量包得到的效果是完全不同的.
还是发复制的功能包,绕过客户端的检测.有些检测是客户端通过后才给服务器发包的.服务器一般会在功能关键点加校验.这个发包的目的是绕过某个执行步骤.实际是检查服务器端实现功能是否缺少校验.
修改封包发送 这个很难实现.除非很多计算在客户端实现.
作者: maxwell12    时间: 2010-6-1 09:39
截包改包的工具还有
游戏常用的是WPE
一种工具就象一把刀
可能是菜刀可能是屠龙刀
具体用哪个,要看用刀人掌握的程度和用途.
有时候菜刀也是很方便的.
手中无刀心中有刀
作者: huix47    时间: 2010-6-1 09:51
上面所说的一些类似于截取封包这种过程,可能在实际测试的使用利用价值并不是很大。
并且这些内容一般是由公司的网络安全工程师来进行,与传统意义上的游戏测试的职能有一定的差距。
如果有能力进行这方面测试、或是有想往网络安全方面发展的可以尝试一下。
话说网络安全方面的东西,一般公司都是运营来弄的和研发的制作总监的关系比较大,并且协议的变化和加密都是可以随时进行的,在研发过程中投入太多精力在这方面有一些得不偿失了。
作者: maxwell12    时间: 2010-6-1 10:29
我说的还真不是网络安全方面的测试
是利用发包工具绕过客户端存在的检测,直接给服务器发包.
检查服务器对功能实现时的非法值校验是否齐全.

这种方法是检查功能实现上服务器端对无效类的校验是否正常.而不是网络安全方面的测试.
作者: 11111    时间: 2010-6-1 10:58
为啥我回复不了了呢
作者: 11111    时间: 2010-6-1 10:59
再贴一次
总结了一下,不足之处,大家继续讨论,哈哈。
1购买售出是否正常(包括是否影响到他人金钱)
2购买售出失败后的处理是否正常,如包裹满时的处理
3服务器断线或者不响应情况购买售出处理是否正常
4购买或者售出,后台是否有相关记录
5并发购买或者售出是否正常
6通过抓包工具获得各与商店交互的接口,查看接口是否有经过校验
7(涉及到页面的)是否兼容不同的浏览器
8(涉及到文本输入的)是否屏蔽了非法字符,以及是否限定了文本长度,数值的上限值
9(涉及到限定商店中物品数量限制的)有无物品的情况是否正常
10对商店中涉及到的字段进行检查,特别是物品的特殊属性如不可出售属性
11(涉及到商店中npc的)对npc的字段进行检查
作者: 11111    时间: 2010-6-1 11:00
...总结了一下,帖子要管理员审核,不知道为什么,也没多长啊,呵呵,管理员赶快审核下吧
作者: Indisorder    时间: 2010-6-1 11:20
个人觉得这些测试中最该关注的,就是数据同步问题。
比如A和B交易,A减少的金钱和B增加的金钱是同步更新的。
实现方法中,调用交易模块的时候,A和B分别在两个客户端输入了数值,点击提交
这时候服务器的逻辑同时处理A和B的数值,在此之后先将处理过的数值发送给数据库服务器进行存储(记录玩家状态),然后再读取数据库中的数值发送给玩家A和B的界面显示。
这样的处理方式,虽然在实现上会产生一定的延迟,但是这种延迟是可以优化和降低,在安全性上,将判断放到服务器端,并先记录玩家的即时状态,使得玩家的客户端只是一种数值变化的表现而真正的变化是在数据库玩家的状态记录下。
作者: Indisorder    时间: 2010-6-1 11:42
另一个关注点是:物品的叠加,物品,金钱的上限值设定。特别是在阅读策划案中牵扯到物品,金钱没有特别说明的。要注意程序实现过程中是否对上限值和物品叠加做了限制。我不太清楚其他公司的程序,在我工作的过程中我发现一个有趣的现象就是策划只要不写,程序能不实现就不实现(常常让我觉得程序也要多玩玩游戏)。而在交易类的功能策划案中,最容易遗漏的就是各种上限值的限制。例如:玩家一次交易的最大数额和空值——有很多人会想当然的认为最大数额就是玩家金钱的上限值。其实认真来说的话,每次交易的最大数额限制也是一种安全保证——ATM取款机每次最多不能取出XX——既然银行都这么用肯定是有道理的...
另外物品的叠加与相应的金额也要放到服务器去....如果公式是放在客户端而被玩家反编译修改的话...这个...
作者: Indisorder    时间: 2010-6-1 11:46
PS:(涉及到页面的)是否兼容不同的浏览器
楼主原来是webgame啊...不过现在的webgame做的很先进,有时候看着webgame然后在看看自己手头的这个我就汗颜了.
作者: huix47    时间: 2010-6-1 12:03
原帖由 maxwell12 于 2010-6-1 10:29 发表
我说的还真不是网络安全方面的测试
是利用发包工具绕过客户端存在的检测,直接给服务器发包.
检查服务器对功能实现时的非法值校验是否齐全.

这种方法是检查功能实现上服务器端对无效类的校验是否正常.而不是网络 ...


恕我无知,请问在不用这些截包工具的情况下,如何才能使客户端向服务端发送非法值?
这些非法值的校验不都是为了防止非法截包、封包软件和外挂的吗?

当然如果直接有客户端的操作,导致非法值的出现,这个过程就是一个bug的表现,测试的成果。
作者: 11111    时间: 2010-6-1 12:47
补充第八点:(涉及到文本输入的)是否屏蔽了非法字符,以及是否限定了文本长度,数值的上限值,同时检查显示的上限值是否正常,如包裹中物品的叠加数量
增加第12点:物品的数量及金额等信息是否放在服务器处理,如果放在客户端是否进行了加密。
继续讨论,期待补充。
作者: maxwell12    时间: 2010-6-1 13:29
标题: 回19楼
我的发言中没有不用截包工具作为前提.
请问你的问题是什么呢?
我说了使用这类工具进行服务器端程序检查的测试,有什么问题吗?我说的有哪些不对的请指出
作者: maxwell12    时间: 2010-6-1 13:36
文本输入要考虑是否限制输入的字符类型,数字,字母汉字,日期等.是否限制输入长度.是否能使用CRTL+C 和 CTRL+V操作.文化部的屏蔽库内容处理.文本输入考虑SQL注入能否实现攻击.
作者: Indisorder    时间: 2010-6-1 14:47
文本输入容易发生误区的地方:
使用简体中文版的操作系统来测繁体中文软件,容易出现乱码,反之依然。因此如果有必要游戏需要加入字库。
作者: Indisorder    时间: 2010-6-1 14:56
MAX的WPE操作应该主要应用在功能上(个人观点)不仅仅只是单纯的安全校验。
   因为从他的描述中可以看出,他的做法是使用WPE进行数据封包的截取,但是截取到包并不是修改而是复制和发送,是不是可以看做是对游戏机器人的替代。
游戏机器人的原理就是根据不同模块的功能发送相同的数据包给服务器(欺骗手段),同样是发数据包,只不过机器人是通过客户端的功能模块和接口发送,而WPE是在客户端和服务器之间发送。
   使用WPE的前提应该是客户端功能稳定且已经验证功能已经全部实现。这样发送WPE截取的封包才是“对测试有效”的封包。
   也想顺便问下MAX大哥,你那边是如何判断WPE封包的正确性呢?
作者: huix47    时间: 2010-6-1 15:02
请息怒,并没有说您错误。
可能是理解上的不同,我的观点在第1次回复的时候已经说明了。使用wpe类似截取封包软件基本是和网络安全有关的,基础的测试上用处并不大。或者说与功能测试关联不大(已经用到了和网络安全相关的工具,那输出造成的结果和本身该系统的功能上出错并非一致。)
作者: maxwell12    时间: 2010-6-1 16:29
这下了解了
我们的分歧在于是网络安全还是功能检查
举个例子
玩家在距离目标NPC4米内,鼠标左键点击目标NPC,打开该NPC的对话框.超过4米鼠标左键点击NPC不开启NPC对话框.
实现超出NPC有效响应距离可以有客户端检查和服务器端检查.
如果是客户端检查,那么复制客户端给服务器发送的请求打开NPC对话框的包.在游戏中角色站在NPC有效距离之外发送复制包,应该可以打开NPC对话框.
如果是服务器做校验,步骤是客户端发送请求,服务器检查角色和目标NPC不在有效距离内会给客户端发送失败的消息.

每个有检查无效输入的功能都可以用这招测试.
有些关键的检查应该必须是服务器校验的,如果仅仅由客户端检查,漏洞太大,很容易被人利用.而且利用的技术要求不高.

为什么我把这个检查列入功能测试?功能测试的测试用例中输入步骤中会描述测试环境,有效输入还是无效输入,预期结果怎么样.
这样的检查是打破了常规的测试环境,绕过客户端对无效输入的拦截直接给服务器发包检查功能实现的结果.

如果包裹中金钱不够不能购买物品的拦截在客户端,那么直接发送购买的包给服务器.服务器没有对这个作出检查直接执行购买流程,可能会出现金钱数值负数或数值溢出.
作者: 11111    时间: 2010-6-2 09:55
此贴到现在能结吗
作者: Indisorder    时间: 2010-6-2 12:29
不行啊...每天想到一点,当wiki来写哈哈,版权给楼主了。
作者: 11111    时间: 2010-6-3 09:45
哈哈,大家有什么想补充的,都可以补充啊,我嘛,就整理下~~~~~~~,呵呵
作者: pudge    时间: 2010-6-12 10:03
webgame不是很了解,请问关于商店的测试,除了各位上面所说的,不用检验商店相关的忙碌状态么?还是上面的描述中已经包括了。。或者忙碌这块是单独进行测试的?




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