【从黑盒到灰盒】如何测试概率?
完全黑盒测试时,想要验证一个概率实现的正确性,简直是恐怖级的低效,乃至无助。刚做游戏测试时,我是这样测试的:执行批量行为,然后统计某行为结果占总行为结果的比例来与设计对照。
如设定某怪物掉落某道具,要么掉落,要么不掉落,一旦掉落只掉落一个;掉落的概率是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 发表 http://bbs.51testing.com/images/common/back.gif
关于掉落物品的概率问题,我都是直接看脚本~~~
脚本?你是说程序代码? 会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码 原帖由 maxwell12 于 2010-1-15 10:45 发表 http://bbs.51testing.com/images/common/back.gif
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码
哦,谢谢。掉落池…… 我还不懂这个。。。查查去 只看配置表。 有那么复杂吗?直接在脚本里改个百分之百看看,改个百分之零,然后再该回去就看看,就可以了吧,用不上15分钟。,我都是这么测的 回复 7# maxwell12
掉落池=掉落包
掉落包本身有一个概率,打开掉落包,其中的道具有自己的另外一个掉率
A打怪,有X%的几率会掉落这个掉落包,玩家获得了掉落包
玩家获得掉落包中有物品N,该物品在玩家等级为10时的掉率为1%,这里是道具本身的掉率。
玩家先收到怪物掉率的影响,再收到该物品根据玩家等级时的掉率修正影响
大部分游戏中的掉率是这样设置的。
改掉率也要知道先改什么再改什么,上去就开始乱改,不如不测。 回复 10# a442545770
重点在于你会发现,产品部门的同志们不叫你改这些东西测试...他们要100%模拟玩家产出行为和产出率,这个你无语么!?.... 概率问题,请下测试脚本和配置文件的正确性,然后在以后大量测试中,只是进行白盒测试,在黑盒方面就是确认下文件导出正常就行 1.可以直接检查脚本中的设置概率函数
2.写个脚本调用脚本中的设置概率函数,模拟100万次,控制台输出概率 大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间则返回true(掉落),如果b落到区间(b,100]则返回false(不掉落)。
一般策划的配置表里面,都是按这种方式来实现概率的。。
看看表里的数字是否有错。
另存一张表,改一下表里概率的大小,在服务器刷新,
然后在游戏中能得到每一件物品。。 有点呆的方法- -
按键精灵循环大量次数来进行数据统计 改掉率做法是策划不喜欢用的.要验证算法还是 先确定掉落类型和物品数量是否一致.
然后用科学计算法来合理计算 实际操作还得看公司了 方式都差不多 数值接近越接近 越小,计算越精准 这个文章顶上去的好
页:
[1]
2