51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7520|回复: 22
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-12 14:50:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完全黑盒测试时,想要验证一个概率实现的正确性,简直是恐怖级的低效,乃至无助。

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



如设定某怪物掉落某道具,要么掉落,要么不掉落,一旦掉落只掉落一个;掉落的概率是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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-1-14 13:05:11 | 只看该作者
关于掉落物品的概率问题,我都是直接看脚本~~~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-1-14 15:12:51 | 只看该作者
游戏测试是不是很难啊?怎么讲的都看不懂呢
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-1-14 16:01:24 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-1-14 16:59:49 | 只看该作者
谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-1-14 17:58:28 | 只看该作者
原帖由 cow11023 于 2010-1-14 13:05 发表
关于掉落物品的概率问题,我都是直接看脚本~~~



脚本?你是说程序代码?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-1-15 10:45:46 | 只看该作者
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-1-15 17:57:35 | 只看该作者
原帖由 maxwell12 于 2010-1-15 10:45 发表
会有写在脚本里的情况
.lua脚本中写掉落池,每个掉落物品的概率。
当然脚本里面写的也是代码


哦,谢谢。掉落池…… 我还不懂这个。。。查查去
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2016-12-13 11:21
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
    发表于 2010-12-6 16:18:48 | 只看该作者
    只看配置表。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-12-8 18:15:45 | 只看该作者
    有那么复杂吗?直接在脚本里改个百分之百看看,改个百分之零,然后再该回去就看看,就可以了吧,用不上15分钟。,我都是这么测的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-12-9 14:12:57 | 只看该作者
    回复 7# maxwell12
    掉落池=掉落包
    掉落包本身有一个概率,打开掉落包,其中的道具有自己的另外一个掉率

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

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

    改掉率也要知道先改什么再改什么,上去就开始乱改,不如不测。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-12-12 18:12:41 | 只看该作者
    回复 10# a442545770


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

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-1-5 22:42:17 | 只看该作者
    概率问题,请下测试脚本和配置文件的正确性,然后在以后大量测试中,只是进行白盒测试,在黑盒方面就是确认下文件导出正常就行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-1-11 13:26:54 | 只看该作者
    1.可以直接检查脚本中的设置概率函数
    2.写个脚本调用脚本中的设置概率函数,模拟100万次,控制台输出概率
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2011-1-13 15:00:40 | 只看该作者
    大部分概率是获取概率值(如程序计算或读表逻辑)a,然后“roll”一个值b,如果b落到区间[0,a]则返回true(掉落),如果b落到区间(b,100]则返回false(不掉落)。

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

    使用道具 举报

    该用户从未签到

    16#
    发表于 2011-1-13 18:36:11 | 只看该作者
    有点呆的方法- -
    按键精灵循环大量次数来进行数据统计
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    17#
    发表于 2011-5-9 15:22:53 | 只看该作者
    改掉率做法是策划不喜欢用的.要验证算法还是 先确定掉落类型和物品数量是否一致.
    然后用科学计算法来合理计算
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2011-5-11 16:28:38 | 只看该作者
    实际操作还得看公司了 方式都差不多
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    19#
    发表于 2011-5-12 13:56:31 | 只看该作者
    数值接近越接近 越小,计算越精准
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2019-12-27 13:32
  • 签到天数: 15 天

    连续签到: 1 天

    [LV.4]测试营长

    20#
    发表于 2011-8-14 21:55:24 | 只看该作者
    这个文章顶上去的好
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 20:31 , Processed in 0.094475 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表