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

2671 篇文章 2 订阅
2644 篇文章 26 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客文章浏览阅读2k次,点赞85次,收藏11次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501说到边界值测试用例设计,很多初学者可能都在这个上面摔过跟头。因为测试产品的边界值,听起来似乎非常容易,但真当做起来,却没那么容易。因为,初学者往往容易发现:但凡自己能想到的值,拿去做测试时,都是对的(被覆盖的),根本找不到bug。

那么,问题出在哪里呢?笔者以为,这主要是初学者所认知的值域有限,很难找到特殊值造成的。下面,我们就根据边界值测试的重点和难点,来为大家介绍在设计边界值测试用例时,应该注意哪些问题。

1、边界值测试的难点

关于边界值测试核心内容(或者说是难点),笔者以为,我们主要需要注意以下4点:

1)如何选择输入域或输出域,以便顺利推进后续的边界值测试用例设计;

2)如何确定输入域或输出域的边界,以便确保所有测试对象的边界值都被覆盖到;

3)如何确定输入域或输出域边界附近的邻域范围,以便我们及时发现边界潜在的问题;

4)如何根据被测对象的边界及其邻域,去设计更为合理和严谨的测试用例。

图片

2、如何确定输入域

一般情况下,原始输入域通常是由多个输入条件共同构成的,并具有一定实际意义。我们也称之为整体输入域。整体输入域的边界通常很清晰,我们很容易去展开测试。这时,你可能想问:既然如此,确定输入域不是非常简单吗?

还真并非如此。输入域之所以不好确定,是边界点太少,难以覆盖所有隐含边界情况造成的。尤其是当各个输入条件之间,存在较为复杂的约束关系时,此时的输入域将更难确定。

因此,在确定输入域时,我们可将整体输入域拆分成由各个输入条件,分别构成的单个输入域,从而找出这些输入域的集合(以下称,个体输入域)。

3、如何确定边界值?

通过上述描述,我们基本能找出所有个体输入域来。那么,我们如何通过这些个体输入域,从而确定他们的边界呢?下面我们一起来看看。

对于某个输入条件而言,确定边界可参照如下原则:

1)若输入条件规定了取值范围,则以该范围作为边界;

2)若输入条件规定了值的个数,则以值的个数为边界;

3)若输入域是有序集合(如有序表、顺序文件等),则选取集合中特定次序的数据作为边界,如第一个或最后一个数据等。

在实际工作中,当我们针对某个输入条件,去确定边界点时,我们可以这样去思考:

1)首先,我们可以在需求描述中,寻找最大极限边界。比如:最低XX,最高XX;最多XX,最少XX;等等。像这类凡是可用数值来描述的,无论在SRS中是否明确指出其边界,其极限边界条件已经是固定的了。

图片

所以,你可以根据其变量的特点,找到对应的取值范围。比如,C++中int型变量的取值范围是:−32768~32767,当SRS中未明确规定输入条件的边界时,该取值范围就是其极限边界。

2)其次,我们还可以在需求描述中,寻找其他较为明显的边界。这些边界点的特征比较明确,主要是:当在该点附近一个极小的邻域内分别取小于、等于和大于该点的3个值时,被测对象对这些值的处理方式不完全相同,则该点就是导致被测对象的输出发生本质变化的边界点。

简单点说,就是在输入某个条件的边界时,不仅包含最小值点和最大值点,还可能存在其他非极值性质的边界点。这个问题,我们要留意一下。

3)另外,我们还需要关注软件内部的边界点,或者说是次边界条件或内部边界条件。比如,2的乘方、ASCII字符表等。值得注意的是,测试新手(或者终端的客户)是很难发现这些边界问题的。但如果因为我们是新手,找不到问题就认为没有问题,这就是“埋下隐患”的开始。当然,这也激励着我们努力学习专业知识,努力成长为专业测测试达人。

总之,边界点的确认,既可以针对整体输入域进行,也可通过个体输入域来寻找。两种方法是都可行的。但这些都需要遵循一个原则——独立性假设原则。即当针对某个输入条件确定边界点时,不考虑其他输入条件可能对该输入条件所产生的任何影响。这样,我们的边界值将覆盖的更为全面。

4如何设置边界点附近的邻域

我们都知道,一般情况下,边界点及其附近,都可能存在bug。因此,在测试时,我们需要在边界点附近确定大小为1的领域,并应基于所有边界点及其邻域来设计测试用例。(注:这里的“1”是指1个单位长度,并非数字意义上的“1”。邻域应根据测试分析的结果,灵活设置。)

5、如何设计测试用例?

通过上述4条,相信大家都知道如何去寻找测试对象的边界值了。当我们找出所有的边界点集合及其邻域后,我们只需要在这些边界和邻域中,选择适当规模的数据进行测试即可。

那么,我们应该如何选择测试数据、如何选择边界组合方式,来保证测试用例的质量呢?下面,我们来给大家介绍一下。

1)测试数据的选择

主要包括两种方法。一个是穷举法,一个是典型值法。相信大家根据名字也不难理解其中的意思。这里就不赘述了,想了解的小伙伴可自行询问度娘。

图片

2)边界组合方式的选择

主要包括3种方式:强边界法、弱边界法和全边界法。其中,

  • 强边界法要求每个测试用例都对应多个输入条件,同时取边界测试数据;

  • 弱边界法则是基于单缺陷假设提出来的,即被测对象只要在某个输入条件的某个边界出错,则在任何包含该输入条件的某个边界的情况下一定会出错,那么测试时仅覆盖输入条件的单个边界点即可,无需测试多个输入条件同时取边界测试数据的情况;

  • 全边界法是将所有边界组合情况全部纳入测试内容,即强边界+弱边界。优势在于可测试到所有边界,但由此可能会导致的巨大测试量。

6、如何设计测试方案?

最后,我们来说说如何设计测试方案。

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

基于以上思想,通过选择不同的测试数据,采用不同规模的边界组合方式,我们可得出不同的测试方案。

聪明的你,知道有哪些测试方案呢?可以在下方评论区留言哦~

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

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值