测试用例设计之边界值测试痛点解析(下)

嗨,小伙伴们。上期《测试用例设计之边界值测试痛点解析(上)》一文中,我们为大家讲解了如何确定输入域、如何确定边界值、如何设置边界点附近的邻域,以及在设计测试用例时可以采用的思路。

下面,我们接着上次给大家留下的题目,来给大家分析边界值测试用例设计的具体步骤。后面还给大家准备了一个实战案例,希望对大家有帮助~

【案例1

假设有两个输入条件x、y,每个输入条件仅有2个边界点,分别是xmin、xmax和ymin、ymax,且满足xmin<xmax和ymin<ymax,若这些边界点对应的邻域均为a,其中a为整数,且a≥1。

>>测试方案1

如图(a)所示。如果我们选择:测试数据采用穷举法,边界组合采用全边界法。则阴影区域就是测试用例所覆盖的区域。显然,这种情况下,测试用例的规模将非常大。

图片

>>测试方案2

如图(b)所示,如果我们选择:测试数据采用穷举法,边界组合采用强边界法。则阴影区域是测试用例所覆盖的区域。在这种情况下,测试用例规模虽然大大降低,但对于缺陷的隔离和定位又会存在较大的弊端。

>>测试方案3

如图(c)所示,如果我们选择:测试数据采用典型值法,边界组合采用强边界法。则黑色圆点表示测试用例。在这种情况下,测试用例的数量虽然进一步降低,但缺陷难以隔离的问题却仍然存在。

>>测试方案4

如图(d)所示,如果我们选择:测试数据采用典型值法,边界组合采用弱边界法。则黑色圆点表示测试用例。在这种情况下,不仅测试用例的数量很少,而且,缺陷也容易隔离,显然是最佳的办法

综述

通过逐步分析和测试,我们不难看出,图(d)的方法最佳。当然,这也是我们工作中,最常用的边界值测试用例设计方法。即,典型值法+弱边界法。

推广到一般情况,当有两个输入条件x、y,且每个输入条件各有nx、ny个边界点,分别是x1, x2, …, xnx和y1, y2, …, yny,各自满足x1<x2<…<xnx和y1<y2<…<yny时,则在理想情况下,针对x边界的测试用例的数量为:

图片

则可得出如下图的边界值测试用例。

图片

由此可见,随着输入条件与边界点数量的增加,基本边界值分析的测试用例规模也将大大增长,由此带来惊人的测试工作量。但是由于执行步骤也比较重复,所以我们经常会使用自动化测试来进行边界值的测试。

【案例2】

下面再在给大家解析一个案例,便于大家巩固知识点。

例子:请以第2日为思考点,对其输入域确定、边界值确定、如何设置边界点附近的邻域,以及如何设计测试用例,进行详细阐述。

1、针对个体输入域的边界值测试

1)边界和测试数据确定

我们都知道,边界值测试可从某输入条件的最大取值范围开始,然后在该范围中寻找其他较为明显的边界。这里需要注意的,就是遵循独立性假设的原则。

我们可以将第二日问题的输入,拆分为3个输入条件:年、月、日。并在其中作出明确的范围规定:

① 找出年份的最大取值范围:从1800年到2050年;

② 通过常识,给出月份的最大取值范围:从1月到12月;

③ 通过常识,给出日期的最大取值范围:从1号到31号(注意,尽管不同月份包含的日期数不同,但独立性假设要求日期的边界应忽略年份和月份对其产生的影响,可接受的日期最大值应为31)。

由此,我们可以得到第二日问题的边界点和测试数据。如下图:

图片

2)测试用例设计

基于单缺陷假设,以及上述我们论证得出的:选择典型值法+弱边界方案最佳的这一结论,可以得到如下图的测试用例。

图片

3)测试分析

为了避免测试用例出现冗余和漏洞,我们在下述图表中,做了针对不同测试重点的测试用例统计。(注:表中无效日期是指输入条件的取值无效;不存在日期指输入条件取值有效,但该日期实际是不存在的。)

图片

由图中数据可知,按照上述做法,会有大量冗余,且闰月的情况(2月月末的日期)完全没有测试到,所以,这样操作肯定存在漏洞。然而,边界值测试关注的是边界,只要能以最少的测试用例,保证覆盖所有可能的边界,就不应视做冗余和漏洞。

而从特殊值的角度来看,我们所观察到的冗余和漏洞,可以通过等价类测试和等价划分,及相似用例的合并策略来避免。

事实上,在单缺陷假设下,边界值测试从理论上来说本身就是存在漏洞的,它遗漏了所有输入条件的边界组合情况。

就第二日问题来说,两个输入条件同时取边界(如2012年12月31日)和3个输入条件同时取边界的情况(如1800年1月31日)都没有测试到,它们对应的测试用例数量分别为:108个(即6×6×3)和216个(即6×6×6)。有效的解决途径,是利用随机测试或基于正交表的测试方法,来做补充测试。

4)输出域的边界值分析

事实上,在做边界值测试时,我们不仅可以从问题的输入域来寻找边界,还可以从问题的输出域寻找边界。特别是在被测对象的输入域与输出域,完全不相似的情况下。我们更应该针对输出域的边界值进行测试。这些可以作为输入域边界值测试的有力补充。

但是,由于输出域的边界设计测试用例,相比输入域的边界测试会存在极大的不同,所以,下面我列举了针对输出域进行边界值测试,需要考虑的问题:

①如何选择合适的输出域来寻找边界点;

②如何限定边界点附近邻域的大小,是否仍可简单地按照1个单位长度来限定;

③针对边界值附近邻域内选中的测试数据,是否可以顺利确定对应的测试用例。

大家不妨再通过以上思考点,重新讨论本案例的边界值测试用例,应该如何设计。

最后,希望这两篇关于边界值的文章,能够帮助大家查漏补缺,协助大家写好测试用例,谢谢~

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值