• 软件测试方法 -- 等价类边界值


    # 测试用例设计方法

    测试用例的定义

    测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,他是指导测试工作进行的依据。

    下面我们介绍几种常用的黑盒测试方法

    等价类划分法

    定义:等价类划分是一种重要的、常用的黑盒测试方法,不需要考虑程序的内部结构,只需要考虑程序的输入规格即可。它将不能穷举的测试过程进行合理分类,从而保证测试用例具有完整性和代表性

    有效等价类验证系统功能,无效等价类验证错误处理能力
    作用:在有限的测试资源的情况下,用少量有代表的数据得到比较好的测试效果。

    缺陷:边界值的动态性。

    步骤:

    1、先确定有效和无效等价类

    2、有效等价类就是题目条件

    3、无效等价类先划分与条件相反的情况,再找到特殊情况。

    设计测试用例

    根据已列出的等价类表可确定测试用例,具体过程如下:

    1、首先为等价类表中的每一个等价类分别规定一个唯一的编号

    2、设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有的有效等价类均被测试用例所覆盖

    3、设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,直到所有的无效等价类均被测试用例所覆盖。

    划分等价类的原则

    1、如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类

    2、如果输入条件规定了输入值的集合,或者是规定了”必须如何“的条件,这时可确立一个有效等价类和一个无效等价类

    3、如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类

    4、如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时可为每一个输入值确立一个有效等价类,它是所有不允许的输入值的集合

    5、如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

    6、如果规定了输入数据为整型,则可以划分出正整数、零和负整数等三个有效类

    7、如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。

    举例:

    在这里插入图片描述

    我们以 QQ 为例,当客户在 QQ 号码要求是6-10位的整数,我们该怎么进行测试?

    根据等价类划分,我们划分出有效等价类和无效等价类:
    在这里插入图片描述

    边界值分析法

    边界值分析法就是对输入或输出的边界值进行测试的一种常用的黑盒测试方法。

    为什么要有边界值分析法?

    大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
    通常情况下,软件测试所包含的边界检验有几种类型:
    数字、字符、位置、质量、大小、速度、方位、尺寸、空间等
    相应地,以上类型的边界值应该在:
    最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况下。
    采用边界值分析测试的基本思想是:故障往往出现在输入变量的边界值附近。
    因此,边界值分析法利用输入变量的最小值(min)、略大于最小值(min+)、输入值域内的任意值(nom)、略小于最大值(max-)和最大值(max)来设计测试用例

    用边界值分析设计测试用例应遵循的原则

    1、如果输入条件规定了取值范围,则应对该范围的边界内附近,恰好在边界和在边界外附近(无效等价类)设计测试用例
    如:规定金额输入框输入范围为0~100,应对 -1、0 、1、99、100、101 设计相应的测试用例
    2、如果输入条件规定了数据的个数,则应对最少个数,最多个数,比最少个数少1,比最大个数多1等情况设计测试用例
    如:输入文件有1~255个记录,则应分别设计0,1,255,256个记录的输入文件的测试用例
    3、针对规格说明中的每个输出条件使用前面的1和2原则。
    如:计算折扣量,最低折扣为0元,最高为1000元,则要设计使它们恰好产生0元或1000元的结果,以及负值或稍大于1000元的结果(如果可能的话)
    4、如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,线性表等)。应选有序集的第一个和最后一个元素作为测试用例

    举例:输入的两个参数值必须大于0同时小于100的整数,计算和

    If Val(Test1.Test) >= 0 Or Val(Test1.Test) <=100 Then
    	MsgBox("输入的参数值必须大于0同时小于100")
    	Test1.SetFocus
    ElseIf Val(Test2.Test) > =0 or val (Test2.Test) <= 100 then
    	MsgBox("输入的参数值必须大于0同时小于100")
    	Test2.SetFocus
    Else
    	Test3.Test = Val(Test1.Test) + Val(Test2.Test)
    End If
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如何解决这类问题
    1、找到测试数据的边界点,也就是有效等价类和无效等价类的边界点,对边界点数据专门进行测试。
    2、一般情况下,需要对边界值(0和100)以及边界值两边的数(-1和1以及101和99)分别进行测试。
    因此我们可以设计测试用例:
    在这里插入图片描述
    而我们仔细看一下:
    在这里插入图片描述
    程序员在边界条件设置错误:把>写成了>=,把<写成了<=,所以我们可以得出预期结果与实际结果不符合的结论。
    所以:有效数据和无效数据的分界点,往往作为程序员编写程序的判断点,是程序员容易犯错误的地方,也是测试人员重点测试的内容。

    边界值和等价类的区别:

    1、边界值分析不是从等价类中随便挑一个作为代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标。
    2、边界值分析不仅要考虑输入条件,而且要考虑输出条件(输出等价类)。
    一般联合使用等价类划分和边界值分析两种方法。

  • 相关阅读:
    XML学习总结
    SOC设计:关于reset的细节
    libc.so.6: version `GLIBC_2.25‘ not found
    中秋节学习腾讯云轻量应用服务器
    错过金三银四,找工作4个月,面试15家,终于拿到3个offer,定级P7+
    @PostConstruct详解
    C语言的传参方式(int x)(int *x)(int &x)
    2022年武汉市小微企业服务补贴券签约服务机构申报条件、材料和申报方式
    二叉树中最大的二叉搜索子树的大小
    从意义中恢复,而不是从数据包中恢复
  • 原文地址:https://blog.csdn.net/EXIxiaozhou/article/details/128120979