51Testing软件测试论坛

标题: 【从黑盒到灰盒】如何测试概率? [打印本页]

作者: 牛亦喜    时间: 2010-1-12 14:50
标题: 【从黑盒到灰盒】如何测试概率?
完全黑盒测试时,想要验证一个概率实现的正确性,简直是恐怖级的低效,乃至无助。

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



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

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



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



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

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



二是确认实现方式。在有的项目中,大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间[0,a]则返回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
关于掉落物品的概率问题,我都是直接看脚本~~~
作者: lushuishui    时间: 2010-1-14 15:12
游戏测试是不是很难啊?怎么讲的都看不懂呢
作者: francais    时间: 2010-1-14 16:01
谢谢
作者: francais    时间: 2010-1-14 16:59
谢谢
作者: 牛亦喜    时间: 2010-1-14 17:58
原帖由 cow11023 于 2010-1-14 13:05 发表
关于掉落物品的概率问题,我都是直接看脚本~~~



脚本?你是说程序代码?
作者: maxwell12    时间: 2010-1-15 10:45
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码
作者: 牛亦喜    时间: 2010-1-15 17:57
原帖由 maxwell12 于 2010-1-15 10:45 发表
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码


哦,谢谢。掉落池…… 我还不懂这个。。。查查去
作者: 我是找茬的    时间: 2010-12-6 16:18
只看配置表。
作者: a442545770    时间: 2010-12-8 18:15
有那么复杂吗?直接在脚本里改个百分之百看看,改个百分之零,然后再该回去就看看,就可以了吧,用不上15分钟。,我都是这么测的
作者: Indisorder    时间: 2010-12-9 14:12
回复 7# maxwell12
掉落池=掉落包
掉落包本身有一个概率,打开掉落包,其中的道具有自己的另外一个掉率

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

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

改掉率也要知道先改什么再改什么,上去就开始乱改,不如不测。
作者: KaiSer_Dance    时间: 2010-12-12 18:12
回复 10# a442545770


    重点在于你会发现,产品部门的同志们不叫你改这些东西测试...他们要100%模拟玩家产出行为和产出率,这个你无语么!?....
作者: tkdcx2009    时间: 2011-1-5 22:42
概率问题,请下测试脚本和配置文件的正确性,然后在以后大量测试中,只是进行白盒测试,在黑盒方面就是确认下文件导出正常就行
作者: peggyli    时间: 2011-1-11 13:26
1.可以直接检查脚本中的设置概率函数
2.写个脚本调用脚本中的设置概率函数,模拟100万次,控制台输出概率
作者: naples    时间: 2011-1-13 15:00
大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间[0,a]则返回true(掉落),如果b落到区间(b,100]则返回false(不掉落)。

一般策划的配置表里面,都是按这种方式来实现概率的。。
看看表里的数字是否有错。
另存一张表,改一下表里概率的大小,在服务器刷新,
然后在游戏中能得到每一件物品。。
作者: aoshiwmj    时间: 2011-1-13 18:36
有点呆的方法- -
按键精灵循环大量次数来进行数据统计
作者: jiazurongyu    时间: 2011-5-9 15:22
改掉率做法是策划不喜欢用的.要验证算法还是 先确定掉落类型和物品数量是否一致.
然后用科学计算法来合理计算
作者: yanhun08419    时间: 2011-5-11 16:28
实际操作还得看公司了 方式都差不多
作者: jiazurongyu    时间: 2011-5-12 13:56
数值接近越接近 越小,计算越精准
作者: jiazurongyu    时间: 2011-8-14 21:55
这个文章顶上去的好
作者: ml0986698    时间: 2011-8-15 14:13
回复 6# 牛亦喜


    肯定不是代码,有脚本编译器...但是看脚本编译器没法验证程序对不对,只能真正脚本没填写错...我当服务器程序写类似GM命令调用··跟楼主的方法 有点类似··
作者: lizhianyan    时间: 2011-8-16 15:02
有条件的推荐脚本调用进行大批量数量的测试。。。没条件的,建议跟程序沟通让他更改2-3次概率数值,咱们自己通过手工验证确定更改有效,接近预期数值就可以了。野路子,自己琢磨的,欢迎指正。
作者: 死循环    时间: 2011-10-9 18:22
测试小白,先收藏以后看




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