边界值测试实战:关于佣金计算问题

边界值测试实战:关于佣金计算问题

今天,我们要给大家分享的,是一个关于边界值测试的案例,希望通过这个案例能让同学们对这块内容掌握的更牢固。本期的案例是一个有关佣金计算的例子(以下称佣金问题),其主要功能是根据销售员销售各种酒水的业绩(即月销售额)来计算销售员的佣金。下面是详细的描述:

【案例】
某酒水公司指派销售员工去售卖酒水,销售额越高,得到的佣金越多。具体情况如下:白酒单价为168元/瓶、红酒单价120元/瓶、啤酒单价为5元/瓶。

图片

其中,每位销售人员每月:最高供应【白酒≤5000瓶、红酒≤3000瓶、啤酒≤30000瓶】;最低出售【白酒50瓶、红酒30瓶、啤酒300瓶】。

如果按照销售额计算销售人员的佣金,计算方式如下:
(1)≤2万元:4%;
(2)2万元<销售额≤4.5万元:1%;
(3)>4.5万元:0.5%。

那么,我们应该如何设置佣金计算系统,帮助销售公司计算总销售额和生成各销售员的月佣金报告单呢?

【思考】
就本案例而言,我们可以参考《第二日问题》的方式,从输入域的角度设计测试用例。本案例中,输入条件主要是3个白酒、红酒和啤酒的销售量。而每个输入条件都只有2个边界点:最低销售量和最高供应量。因此,从个体输入域得到的测试用例数量,基本与第二日问题差别不大。

在佣金问题中,一方面,输入域与输出域完全不同,有必要对输入和输出的边界均进行测试;另一方面,针对输入域设计的测试用例所对应的输出结果集中在一个很小的取值范围内,可能无法覆盖输出域的所有边界,因此需要补充针对输出域展开边界值测试。

对比第二日问题,佣金问题与之相同的是输入域方面的设计,但在输出域边界值设计方面,则是完全是不同的。

在输出域的选择上,虽然该问题的最终输出是销售员的佣金,但因从销售额到佣金的计算较为复杂,而销售员当月的销售额较容易计算,因此,应取销售额作为中间输出域进行边界值测试。

【设计思路】
基于上面的分析,可以得出结论:我们应从输出域来展开边界值测试。而本案例中,比较显而易见的边界,主要是2个:

1)酒水售出的最低与最高标准:这两个标准决定了销售额的最低值和最高值,进而决定该销售员佣金的最小和最大值;

2)佣金比率发生变化的数据点:这些数据点,决定了销售得到提成的比例,从而影响了销售最终拿到佣金的高低。
通过上述2个边界值,可以得到如下结果:

图片

由此可得:如果我们将1元作为领域的单位长度,那么,对应的设计用例应该如下图。(其中,预期输出是指销售员的总提成。)

图片

当然,如果你选择以1000元为单位,那么,你得到的测试用例也是不同的。感兴趣的小伙伴可以自行尝试。

【解析】
基于上述所有内容,你可以得知:佣金的预期输出将落在:4.5万元到135万元之间。因此,针对输出域的边界值去做测试,是非常必要的。而输出域的边界值测试,会带来额外的测试不确定性。比如:

1)针对边界值附近邻域内选中的测试数据,是否一定可以确定对应的测试用例?

比如,在边界点2万元附近以1元为邻域,将分别得到测试数据19999元和20001元。从理论层面来讲,应分别设计至少两个测试用例,满足对应这两个销售额。但是,按照表中实际的对照值来看,实际对应2万元边界点的邻域,销售额是19997元和20002元。这是为什么呢?

这是因为我们找不到,或者无法方便地找到对应19999元和20001元的输入值。因为针对输出域的测试设计中,很难找到对应值,因此只能进行折中计算。

2)可以同时有多组输入,对应相同的系统输出?

举个例子:当销售额为20002元时,我们能得到表中测试用例对应该销售额。可是,如果我们如果输入:白酒、红酒和啤酒销售量分别为69、50和482瓶,也能同时满足销售额是20002元。

那么,到底该取哪个测试用例呢?笔者以为,此时也应结合被测系统的业务实际来考虑。有时,我们很容易得到多个均符合业务实际的测试用例,那么,在设计用例时,只要时间允许,我们的测试用例仍然是越多越好。也就是,我们可以通过牺牲冗余度,来换取更大的测试覆盖率。

图片

【边界值测试小结】
最后,小编来给大家做一个小结。首先,边界值测试通常可作为等价类测试的补充,是一种最基本、最简单的黑盒测试方法。它主要基于两个假设而生:独立性假设和单缺陷假设。

在做边界值测试时,一般步骤如下:

1)分析被测对象的输入域和输出域是否相似。若二者不同,则需在针对输入域进行边界值测试后,还要进行输出域的边界值测试;

2)分析被测对象的输入域。这里,我们可以选择针对整体输入域进行边界值测试,或将整体输入域拆分为多个个体输入域进行测试;

3)如果我们需要针对整体输入域进行边界值测试,那么,我们可以直接确定整体输入域的边界,并按照第6步执行;

4)如果针对个体输入域进行测试,我们则需要对每个输入条件执行第5、6步;

5)根据独立性假设,我们需要确定其边界点(包括最大有效取值范围的边界点,以及极值点);

6)在每个边界点处以1个单位长度划定邻域,并抽取3个典型测试数据xmin−a, xmin, xmin+a;

7)根据单缺陷假设,采用典型值法+弱边界法的测试方案,设计测试用例;

8)若需针对输出域进行补充边界值测试,则应选择合理的输出域,确定边界点,划定邻域,抽取测试数据,以及根据输出测试数据设计测试用例。

希望这篇内容,能够加深你对边界值测试的理解~

加助教老师VX:xiaoxianchen89,回复:软件测试马上加入IT学习交流群,领更多软件测试学习资料

  • 5
    点赞
  • 24
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论 2

打赏作者

ITstudy001

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值