【从黑盒到灰盒】如何测试概率?
2010-01-12 14:49
155 查看
完全黑盒测试时,想要验证一个概率实现的正确性,简直是恐怖级的低效,乃至无助。
刚做游戏测试时,我是这样测试的:执行批量行为,然后统计某行为结果占总行为结果的比例来与设计对照。
如设定某怪物掉落某道具,要么掉落,要么不掉落,一旦掉落只掉落一个;掉落的概率是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显示。
至于概率的程序实现有多少方式,有哪些方式,这是我需要进一步了解的。
刚做游戏测试时,我是这样测试的:执行批量行为,然后统计某行为结果占总行为结果的比例来与设计对照。
如设定某怪物掉落某道具,要么掉落,要么不掉落,一旦掉落只掉落一个;掉落的概率是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显示。
至于概率的程序实现有多少方式,有哪些方式,这是我需要进一步了解的。
相关文章推荐
- 【从黑盒到灰盒】如何测试上限值?
- 如何提高黑盒测试用例的覆盖度思路(ZT)
- 【tool】如何提高黑盒测试用例的覆盖度思路
- 如何将常见的黑盒测试用例设计方法运用到实际测试工作中?
- 【从黑盒到灰盒】调用函数接口测试
- 移动测试会第四期总结2-如何用白盒的手段,黑盒的思想进行测试
- 如何写软件测试工程师求职简历?
- 如何进行安装测试
- 3.如何开启Tornado的调试模式 (副标题:方便调试与测试)
- 如何使用Burp Suite Macros绕过防护进行自动化fuzz测试
- iOS程序完成后如何生成ipa进行真机测试
- 老李分享:Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法
- 如何模拟低速率网络测试Web应用
- Oracle中如何用一条SQL快速生成10万条测试数据
- 如何测试 Android 中的定时事件
- 如何使你的wtk模拟器支持触摸屏测试
- 如何测试OS并发性能
- 如何测试一个编译器?