牛亦喜 发表于 2010-1-12 14:50:34

【从黑盒到灰盒】如何测试概率?

完全黑盒测试时,想要验证一个概率实现的正确性,简直是恐怖级的低效,乃至无助。

刚做游戏测试时,我是这样测试的:执行批量行为,然后统计某行为结果占总行为结果的比例来与设计对照。



如设定某怪物掉落某道具,要么掉落,要么不掉落,一旦掉落只掉落一个;掉落的概率是a%。那就是杀死该怪物n个,并捡拾掉落品。根据a的值来确定n的大小,a越大,n越小。

一段时间以后,我就懂得向程序提出指令支持,如召唤指定的怪物指定的数量,如角色无敌状态等等,以缩短杀怪时间。



灰盒化之后,就简便多了。有2个方法:



一是修改配置,即修改a值,为临界值,为较大值。因为a越大,则n越小,测试耗时也就越小。

修改配置也是有2个方向的,这与程序实现有关。一是写死在代码里,一是读表逻辑。不同的程序实现在具体执行上就有不同的处理方式。



二是确认实现方式。在有的项目中,大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间则返回true(掉落),如果b落到区间(b,100]则返回false(不掉落)。由于这个“roll”是已经验证过的函数功能,则我只需验证在做b<=a的判断时,a值是否获取正确即可。所获取的a值需要程序输出log显示。



至于概率的程序实现有多少方式,有哪些方式,这是我需要进一步了解的。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qiaoanlu/archive/2010/01/12/5181529.aspx

cow11023 发表于 2010-1-14 13:05:11

关于掉落物品的概率问题,我都是直接看脚本~~~

lushuishui 发表于 2010-1-14 15:12:51

游戏测试是不是很难啊?怎么讲的都看不懂呢

francais 发表于 2010-1-14 16:01:24

谢谢

francais 发表于 2010-1-14 16:59:49

谢谢

牛亦喜 发表于 2010-1-14 17:58:28

原帖由 cow11023 于 2010-1-14 13:05 发表 http://bbs.51testing.com/images/common/back.gif
关于掉落物品的概率问题,我都是直接看脚本~~~


脚本?你是说程序代码?

maxwell12 发表于 2010-1-15 10:45:46

会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码

牛亦喜 发表于 2010-1-15 17:57:35

原帖由 maxwell12 于 2010-1-15 10:45 发表 http://bbs.51testing.com/images/common/back.gif
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码

哦,谢谢。掉落池…… 我还不懂这个。。。查查去

我是找茬的 发表于 2010-12-6 16:18:48

只看配置表。

a442545770 发表于 2010-12-8 18:15:45

有那么复杂吗?直接在脚本里改个百分之百看看,改个百分之零,然后再该回去就看看,就可以了吧,用不上15分钟。,我都是这么测的

Indisorder 发表于 2010-12-9 14:12:57

回复 7# maxwell12
掉落池=掉落包
掉落包本身有一个概率,打开掉落包,其中的道具有自己的另外一个掉率

A打怪,有X%的几率会掉落这个掉落包,玩家获得了掉落包
玩家获得掉落包中有物品N,该物品在玩家等级为10时的掉率为1%,这里是道具本身的掉率。

玩家先收到怪物掉率的影响,再收到该物品根据玩家等级时的掉率修正影响
大部分游戏中的掉率是这样设置的。

改掉率也要知道先改什么再改什么,上去就开始乱改,不如不测。

KaiSer_Dance 发表于 2010-12-12 18:12:41

回复 10# a442545770


    重点在于你会发现,产品部门的同志们不叫你改这些东西测试...他们要100%模拟玩家产出行为和产出率,这个你无语么!?....

tkdcx2009 发表于 2011-1-5 22:42:17

概率问题,请下测试脚本和配置文件的正确性,然后在以后大量测试中,只是进行白盒测试,在黑盒方面就是确认下文件导出正常就行

peggyli 发表于 2011-1-11 13:26:54

1.可以直接检查脚本中的设置概率函数
2.写个脚本调用脚本中的设置概率函数,模拟100万次,控制台输出概率

naples 发表于 2011-1-13 15:00:40

大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间则返回true(掉落),如果b落到区间(b,100]则返回false(不掉落)。

一般策划的配置表里面,都是按这种方式来实现概率的。。
看看表里的数字是否有错。
另存一张表,改一下表里概率的大小,在服务器刷新,
然后在游戏中能得到每一件物品。。

aoshiwmj 发表于 2011-1-13 18:36:11

有点呆的方法- -
按键精灵循环大量次数来进行数据统计

jiazurongyu 发表于 2011-5-9 15:22:53

改掉率做法是策划不喜欢用的.要验证算法还是 先确定掉落类型和物品数量是否一致.
然后用科学计算法来合理计算

yanhun08419 发表于 2011-5-11 16:28:38

实际操作还得看公司了 方式都差不多

jiazurongyu 发表于 2011-5-12 13:56:31

数值接近越接近 越小,计算越精准

jiazurongyu 发表于 2011-8-14 21:55:24

这个文章顶上去的好
页: [1] 2
查看完整版本: 【从黑盒到灰盒】如何测试概率?