51Testing软件测试论坛

标题: 大家如何来看待复合条件所产生的庞大数组? [打印本页]

作者: hhjk9901    时间: 2013-3-11 17:15
标题: 大家如何来看待复合条件所产生的庞大数组?
一个5X5的矩阵,所产生的组合就很要命
如果一个网络游戏的技能,我们要测试一个技能和其他技能组合后的有效性,那么在施放这个技能前,其他的二十多个技能都来一遍就有二十种
而其他的技能来两个,再使用这个技能,那就头疼了,三个就是天文数字了……
看过一些约束条件测试的文章,但都针对软件测试
但对于网络游戏技能这种无序化更强的情况,怎么办?
别说牧师不会满血的时候给自己来个强效回复再来个快速回复,哪怕他一点血也不加……
作者: 星空物语    时间: 2013-3-11 18:03
你可以从内部程序上对技能分类,比如小回血和大回血,回血数不一样,所耗蓝也不一样,但都是走的同一个函数,这种就测一个就可以;再把你要叠加的技能依次分类,最后就没有那么多了,这个你可以问程序
而且我觉得2个技能、3个技能的叠加……也不用遍历吧,真要测2种以上的组合,挑一些有代表性的就可以了
作者: hhjk9901    时间: 2013-3-12 18:22
但是,实际上,我们看到各种游戏(魔兽世界很典型,上古卷轴的12号补丁更是个刚出炉的例子),经常会出现,使用xxx后使用yyy技能无效/效果不正常(比如攻击力比设计的大,影响一个人的影响了全队)
这个所谓的“有代表性的”,真的是很难挑选
作者: 星空物语    时间: 2013-3-13 19:30
那如果这样的话,也还好啊,只要X*X遍,你后面说的都是3个技能,多个技能的重复叠加使用了,那肯定就不现实了
作者: Aimbot    时间: 2013-3-14 10:48
正交法?
作者: jiazurongyu    时间: 2013-3-14 11:12
回复 1# hhjk9901

是这个样子的。我是按这个方式来一层层过滤。举个以前公司的例子
一开始先可以不用考虑场景组合的测试。(上面描述中是技能没有写等级)
下面是方法,庞大的经过科学分解,可以节省很多时间,但是如果有20个技能以上,假设技能有没有等级的,要做的高质量,最低也是要单轮测试3~5人,可以确保在1~2d完成。这个数字的预估下是还是需要加班的。归正题:
第一轮可以做:
先确保每个技能的先有效果,并且效果正确。  =>管理这部分产生的缺陷(关注非必现),定义为a1。
第二轮:修复a1的后。
把a1里产生的技能组合。 =>管理这部分产生的缺陷,定位为a2。
第三轮:
把a2的混合一次。然后到这里单个技能问题已经减少了。组合技能需要考虑的更多是一些规则问题。
这里把技能分类:增益vs增益,增益vs减益,减益vs减益。
增益vs增益的例子:恢复的冲突性
例如一个技能zl1是直接治疗,无持续时间,一个技能zl2是dot类的恢复。<-这些都是直接恢复的。把直接恢复的先组合起来进行测试。 |恢复测试1组|
间接的恢复zl3,例如带某个状态下,可以带来恢复效果。那么这个在之前第1和第2轮中应该是没有测试的。 |恢复测试2组|
如何消化这2组的方式还是和前面1~2轮一样。
增益vs减益:业务每个公司根据项目不一样,但整体还是获得点数(攻击防御等)对应vs削减点数。恢复对应vs减低恢复力/率,提升概率对应vs降低概率。
这里的技巧是先测试前面削减点数的=》减低恢复力/率,最后还是减低概率(最难,因为解释权某种意义在官方,可以弱投入)。
这里可能已经用掉了2轮。中途根据轮次产生的缺陷=a(轮次的编号)
第5轮:
3~4轮的产生的问题a3和a4 vs a2,一种迭代组合进去。还是继续确定高发,低发,非必现的。
第6轮:
设计组合和技能认可组合(既在测试过程中,会有娱乐的互相pk的放松时间,在这个过程中我们会认可一些技能的组合,这些组合在当前阶会十分强大)。确保设计组合和认可组合的技能缺陷降低。我们这里还可以顺带把平衡性给做了。

整个过程可以使用缺陷密度,也可以不使用。
作者: hhjk9901    时间: 2013-3-14 17:23
感谢版主的回答
版主的思路实在是让我佩服
作者: cncnily    时间: 2013-3-16 16:12
补充:
技能模板表都需要配置技能效果,比如1类型的是加血,配表时也许瞬加和慢加都使用的1类型,但某两个字段可以控制加血次数和间隔时间,我意思是只要1类型的就挑出一个代表,按照技能效果类型。
其次还应该涉及buff替换规则,高替低、覆盖、替换、互斥等。
作者: maxwell12    时间: 2013-9-29 15:55
游戏测试确实做不到非常好的覆盖率。
因为即使你做出正交表,把所有的组合都测完。
等游戏上线后你还会发现有些事件状态,没有考虑齐全。
不过还是要用正交表尽量测的全。如果时间和人力不够,就要做风险控制,减少上线后出现重大bug。
作者: Indisorder    时间: 2013-11-21 10:11
游戏数值表的测试方法
概述:如何利用游戏数值表快速设计测试用例并进行测试
从研发处获得了某项目制造轻型坦克相应的数据表如下:
名称        等级        升级消耗类                          生产消耗                  
                  作战实验室        资源消耗                 时间消耗                                    
                           金属1.2        石油                 金属        石油        时间        人口
轻型坦克        比例                 1.6        1.6        1.5        1.2        1.2        120        30
         lv1        1        0        0        0        500        600                  
         lv2        1        9000        7500        600        600        720                  
         lv3        1        14400        12000        900        720        864                  
         lv4        2        23040        19200        1350        864        1036.8                  
         lv5        2        36864        30720        2025        1036.8        1244.2                  
         lv6        2        58982.4        49152        3037.5        1244.2        1493                  
         lv7        3        94371.84        78643.2        4556.25        1493        1791.6                  
         lv8        3        150994.94        125829.12        6834.375        1791.6        2149.9                  
         lv9        4        241591.91        201326.592        10251.563        2149.9        2579.9                  
         lv10        4        386547.06        322122.547        15377.344        2579.9        3095.9                  
                                                                       

步骤一:
对表进行分析,由上表给出的数据可以得出测试过程中需要关注的内容如下表







玩家意图        建造单位        物品解锁所需条件        制造消耗所需条件        预期结果
        条件1        条件2        金属资源数量        石油资源数量        时间消耗        制造消耗金属        制造消耗石油        制造消耗时间        制造消耗人口       
制造轻型坦克1级        有作战实验室        作战实验室1级        无需解锁        500金属        500石油        时间120        30人口        可制造出轻型坦克1级1辆
制造轻型坦克2级                        9000        7500        600        600        720                        可制造出轻型坦克2级1辆
制造轻型坦克3级                        14400        12000        900        720        864                        可制造出轻型坦克3级1辆
制造轻型坦克4级                作战实验室2级        23040        19200        1350        864        1036.8                        可制造出轻型坦克4级1辆
制造轻型坦克5级                        36864        30720        2025        1036.8        1244.2                        可制造出轻型坦克5级1辆
制造轻型坦克6级                        58982.4        49152        3037.5        1244.2        1493                        可制造出轻型坦克6级1辆
制造轻型坦克7级                作战实验室3级        94371.84        78643.2        4556.25        1493        1791.6                        可制造出轻型坦克7级1辆
制造轻型坦克8级                        150994.94        125829.12        6834.375        1791.6        2149.9                        可制造出轻型坦克8级1辆
制造轻型坦克9级                作战实验室4级        241591.91        201326.592        10251.563        2149.9        2579.9                        可制造出轻型坦克9级1辆
制造轻型坦克10级                        386547.06        322122.547        15377.344        2579.9        3095.9                        可制造出轻型坦克10级1辆



步骤二:
根据等价类和边界值的测试方法首先测试上述表中三种条件均满足情况下,功能模块是否正常可用
测试点如下:
        满足1级坦克制造条件后,可制造出1级坦克;
        满足2级坦克解锁条件后,作战实验室可研究出2级坦克;
        满足2级坦克制造条件,但不满足解锁条件,不能制作2级坦克;(无效等价类)
        2级坦克解锁后,不满足制作条件,不能制造出2级坦克(无效等价类);
        2级坦克解锁后,满足制造条件,既可以制造1级坦克,也可以制造2级坦克;(有效等价类)
        10级坦克解锁后,不满足制造条件,不能制造出10级坦克(无效等价类);
        10级坦克解锁后,满足1-10级的制造条件,可以制造1-10级的所有坦克;(有效等价类)

步骤三:
如果要细化测试点,则可以测试如下内容:
制造条件缺少情况分析:
        作战实验室被摧毁(无效等价类)
        作战实验室级别不足(无效等价类)
        解锁项目所需金属不足(无效等价类)
        解锁项目所需石油不足(无效等价类)
        解锁研究倒计时过程中取消(无效等价类)
        制造所需金属不足(无效等价类)
        制造所需石油不足(无效等价类)
        制造所需人口不足(无效等价类)
        制造过程中倒计时被取消(无效等价类)
其中部分内容需要与研发进行沟通或从资料文档中获取相应的处理方式,将此类条件分别作一条测试点进行覆盖,最终获得最终的测试用例

步骤四:
另外值得注意的是,往往BUG并不出现在上述的逻辑判断中,而出现在策划填写数据表时编辑的错误,因此,根据具体时间和测试深度的安排,抽取相应部分的测试数据进行准确性检查成为必须的测试内容。
但根据上述的测试分析,只需要确认正确的初始条件产出了正确的预期即可

总结:学弟,学长也只能送你到这里了。




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