11111 发表于 2010-5-31 10:47:12

讨论:游戏中商店的测试要点

涉及到货币的测试更显重要,大家要踊跃发言哦。
我先说:
1.购买或者售出是否正常(包括是否会影响到他人货币数据),特别加上括号里的那句,是因为出现过售出自己物品,获得相应货币的同时,他人的货币也增加了相应值。
2.通过抓包工具,查看购买或者售出的接口,看是否有隐藏的接口,现有接口是否有校验。

Indisorder 发表于 2010-5-31 11:08:38

楼主说的这个商店好像囊括了摆摊,NPC商店,商城,拍卖行,交易,给予,付款邮件....等一系列的东西。各个功能主要关注的还是有不同的东西吧...

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

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

[ 本帖最后由 Indisorder 于 2010-5-31 11:14 编辑 ]

maxwell12 发表于 2010-5-31 11:17:15

测试总体思路
1 对游戏中商店功能涉及的所有字段进行测试,例如物品买价,卖价,商店NPC,物品不可出售属性
2 对商店功能实现进行测试,检查功能实现是否正确
3 用WPE截取购买和出售物品的封包,对所有购买和出售有限制的环节进行检查,检查服务器端是否有检查
4 尝试金钱不足时购买成功减少金钱操作,和尝试金钱到达上限时出售物品获得金钱操作.检查金钱字段数值溢出

测试细则举例
对物品表中物品购买价格和出售价格的字段值进行检查
对商店表中的NPCID(商人NPC)字段值进行检查
对物品表中物品不可出售字段的值进行检查
在游戏中执行购买和出售操作,功能运行结果是否正确
包裹满执行购买操作,功能运行结果是否正确
用WPE截取购买物品的封包,在金钱不足时发送复制包,检查服务器是否有检查,反馈客户端不能购买提示

maxwell12 发表于 2010-5-31 11:32:34

测试总体思路
1 对商店功能涉及到的所有字段进行检查 例如物品买价,卖价,商店表NPCID,物品不可出售属性
2 对商店所有功能进行操作检查 检查功能实现是否正确
3 用WPE截取购买和出售的封包,复制发送检查所有限制是否在服务器端有检查.例如 超出交易距离交易,金钱不够购买物品等
4 进行金钱不足时购买物品操作和金钱到达上限时出售物品操作,检查包裹中金钱数值是否会溢出

举例测试细则
进行购买和出售操作,检查功能是否正确,物品买价卖价是否正确,检查玩家金钱数值是否正确
包裹满时进行购买物品操作,检查处理方式是否正确

Indisorder 发表于 2010-5-31 11:48:59

MAX一出,楼下无人...

星空物语 发表于 2010-5-31 22:59:38

抓包工具还能看接口?是说的WPE么?
现在的游戏安全性方面还是这么差,可以用WPE改?
只闻其声不见其人,好想系统学下WPE,不知各位能否指点一二

Indisorder 发表于 2010-6-1 09:07:14

使用WPE主要是因为在接口测试过程中,WPE可以对客户端和服务器之间的数据包进行捕获和截取。
根据对捕获的包的分析和编辑,使用者可以按照客户端和服务器之间的通讯方式模拟一个“合法”的数据包。比如当捕获到客户端登陆部分发送的单个“用户登陆”数据包后,进行预定数量的复制,然后发送给服务器。以此可以模拟多个客户端登陆的场景。
个人觉得工具是其次,还是要从“手工的”“缓慢的”黑盒功能测试开始做起,在对游戏有了更深入的理解和掌握后,再进行工具的使用。
能使用WPE是因为在开发阶段,游戏客户端和服务器之间的通信不会受到太多的约束。接口和接口间的安全模块还没有加载上。不会像楼上所说,安全性很差。

Indisorder 发表于 2010-6-1 09:07:43

借此召唤MAX做详尽介绍...

maxwell12 发表于 2010-6-1 09:35:49

确实如楼上所说
WPE在开发阶段和运营阶段的使用目的是不同的.
我用WPE的目的有:
发送批量包,纯复制的功能包.用普通客户端模拟玩家行为一般达不到这种单位时间内发包数量.因为客户端很多地方有动画延迟和操作时间.发批量包得到的效果是完全不同的.
还是发复制的功能包,绕过客户端的检测.有些检测是客户端通过后才给服务器发包的.服务器一般会在功能关键点加校验.这个发包的目的是绕过某个执行步骤.实际是检查服务器端实现功能是否缺少校验.
修改封包发送 这个很难实现.除非很多计算在客户端实现.

maxwell12 发表于 2010-6-1 09:39:24

截包改包的工具还有
游戏常用的是WPE
一种工具就象一把刀
可能是菜刀可能是屠龙刀
具体用哪个,要看用刀人掌握的程度和用途.
有时候菜刀也是很方便的.
手中无刀心中有刀

huix47 发表于 2010-6-1 09:51:43

上面所说的一些类似于截取封包这种过程,可能在实际测试的使用利用价值并不是很大。
并且这些内容一般是由公司的网络安全工程师来进行,与传统意义上的游戏测试的职能有一定的差距。
如果有能力进行这方面测试、或是有想往网络安全方面发展的可以尝试一下。
话说网络安全方面的东西,一般公司都是运营来弄的和研发的制作总监的关系比较大,并且协议的变化和加密都是可以随时进行的,在研发过程中投入太多精力在这方面有一些得不偿失了。

maxwell12 发表于 2010-6-1 10:29:18

我说的还真不是网络安全方面的测试
是利用发包工具绕过客户端存在的检测,直接给服务器发包.
检查服务器对功能实现时的非法值校验是否齐全.

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

11111 发表于 2010-6-1 10:58:49

为啥我回复不了了呢

11111 发表于 2010-6-1 10:59:55

再贴一次
总结了一下,不足之处,大家继续讨论,哈哈。
1购买售出是否正常(包括是否影响到他人金钱)
2购买售出失败后的处理是否正常,如包裹满时的处理
3服务器断线或者不响应情况购买售出处理是否正常
4购买或者售出,后台是否有相关记录
5并发购买或者售出是否正常
6通过抓包工具获得各与商店交互的接口,查看接口是否有经过校验
7(涉及到页面的)是否兼容不同的浏览器
8(涉及到文本输入的)是否屏蔽了非法字符,以及是否限定了文本长度,数值的上限值
9(涉及到限定商店中物品数量限制的)有无物品的情况是否正常
10对商店中涉及到的字段进行检查,特别是物品的特殊属性如不可出售属性
11(涉及到商店中npc的)对npc的字段进行检查

11111 发表于 2010-6-1 11:00:57

...总结了一下,帖子要管理员审核,不知道为什么,也没多长啊,呵呵,管理员赶快审核下吧

Indisorder 发表于 2010-6-1 11:20:51

个人觉得这些测试中最该关注的,就是数据同步问题。
比如A和B交易,A减少的金钱和B增加的金钱是同步更新的。
实现方法中,调用交易模块的时候,A和B分别在两个客户端输入了数值,点击提交
这时候服务器的逻辑同时处理A和B的数值,在此之后先将处理过的数值发送给数据库服务器进行存储(记录玩家状态),然后再读取数据库中的数值发送给玩家A和B的界面显示。
这样的处理方式,虽然在实现上会产生一定的延迟,但是这种延迟是可以优化和降低,在安全性上,将判断放到服务器端,并先记录玩家的即时状态,使得玩家的客户端只是一种数值变化的表现而真正的变化是在数据库玩家的状态记录下。

Indisorder 发表于 2010-6-1 11:42:49

另一个关注点是:物品的叠加,物品,金钱的上限值设定。特别是在阅读策划案中牵扯到物品,金钱没有特别说明的。要注意程序实现过程中是否对上限值和物品叠加做了限制。我不太清楚其他公司的程序,在我工作的过程中我发现一个有趣的现象就是策划只要不写,程序能不实现就不实现(常常让我觉得程序也要多玩玩游戏)。而在交易类的功能策划案中,最容易遗漏的就是各种上限值的限制。例如:玩家一次交易的最大数额和空值——有很多人会想当然的认为最大数额就是玩家金钱的上限值。其实认真来说的话,每次交易的最大数额限制也是一种安全保证——ATM取款机每次最多不能取出XX——既然银行都这么用肯定是有道理的...
另外物品的叠加与相应的金额也要放到服务器去....如果公式是放在客户端而被玩家反编译修改的话...这个...

Indisorder 发表于 2010-6-1 11:46:55

PS:(涉及到页面的)是否兼容不同的浏览器
楼主原来是webgame啊...不过现在的webgame做的很先进,有时候看着webgame然后在看看自己手头的这个我就汗颜了.

huix47 发表于 2010-6-1 12:03:44

原帖由 maxwell12 于 2010-6-1 10:29 发表 http://bbs.51testing.com/images/common/back.gif
我说的还真不是网络安全方面的测试
是利用发包工具绕过客户端存在的检测,直接给服务器发包.
检查服务器对功能实现时的非法值校验是否齐全.

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

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

当然如果直接有客户端的操作,导致非法值的出现,这个过程就是一个bug的表现,测试的成果。

11111 发表于 2010-6-1 12:47:31

补充第八点:(涉及到文本输入的)是否屏蔽了非法字符,以及是否限定了文本长度,数值的上限值,同时检查显示的上限值是否正常,如包裹中物品的叠加数量
增加第12点:物品的数量及金额等信息是否放在服务器处理,如果放在客户端是否进行了加密。
继续讨论,期待补充。
页: [1] 2
查看完整版本: 讨论:游戏中商店的测试要点