测试用例设计方法


    在设计测试用例的过程中,往往会用到很多的方法,协助测试工程师去设计测试用例,提高测试用例设计效率同时也会使设计出来的测试用例覆盖率更高并且少有遗漏,那么设计方法有哪些呢?

一、等价类划分

    定义:将测试项的所有值,根据是否等价,划分成若干个子集,每个子集互不相交,并且所有子集的并集,就是全集。在每一个子集中,选出若干个有代表性的值作为测试用例

    举例:

        用户名输入框(8位数字组成的字符)

        第一步:划分子集

            空用户名,1-7位数字,8位数字,9位及以上的数字,非数字

        第二步:根据划分出来的子集,在每个子集中选取一个值,作为测试用例

            1.空用户名:“” (无效等价类)

            2.1-7位数字:“123” (无效等价类)

            3.8位数字:“12345678” (有效等价类)

            4.9位及以上的数字:“123456789” (无效等价类)

            5.非数字:“abcdefg!” (无效等价类)

        根据以上步骤,我们就可以设计出来关于用户名输入的测试用例。其中,还可以看到,等价类划分,还可以根据有效和无效等价类先进行的划分,然后再在无效等价类中再进行进一步的子集划分。当然,非数字这个子集中,还可以根据字母,中文,特殊符号这三个等价类再进行一次子集的细分,从而在非数字这个子集中,选取出三个值作为测试用例

二、边界值分析法

    定义:在输入或输出范围的边界上,选取正好等于边界值,刚刚小于边界值,刚刚大于边界值的值,作为测试用例。因为在以往长期的测试工作经验中,发现大量的错误都是发生于边界值上,而不是发生在输入输出范围内部的值,所以才会有这样一个边界值分析法来帮助我们设计测试用例

    举例:

        年龄输入框(1≤X≤200)

        根据输入框的输入范围,我们选取的边界值为:0,1,2,199,200,201 ,作为测试用例。

        测试用例可以记为:min-,min,min+,max-,max,max+

    注意,边界值只取到了边界值,在正常测试过程中,我们还需要取一个不在边界值范围的的数字,即在3~198中任意选取一个值作为测试用例

三、错误推断法(经验法)

    这个方法比较特殊,主要是依靠测试工程师以往大量的工作经验以及直觉来推测程序中可能存在错误的方向,针对这些方向编写测试用例来检查是否有错误。这个方法没有固定的形式,依靠的是经验和直觉,很多时候,都会不知不觉运用到测试用例的设计中去

    举例:

        手机号输入框(11位数,多个号段)

        根据以往对用户名为手机号的测试经验,一般都会检查一下开发对用户名进行校验的正则表达式

        因为手机号段随着时间的推移,不同运营商会有新增的号段,较早之前的正则表达式不适用于当下手机号段的校验,其实就是没有及时更新新增号段,所以导致新增号段用户要使用时,无法通过校验

        前几年在测试手机号输入框的校验时,当时的校验正则表达式还是:/^1[3|4|5|7|9][0-9]\d{8}$/,目前手机号段的第二位已经新增了6和8,所以应该更新为:/^1[3|4|5|6|7|8|9][0-9]\d{8}$/

        所以根据个人经验,在手机号校验时,一般开发都会犯这个错误,就会将校验手机号的正则表达式检查作为测试用例

四、场景法

    定义:通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。用场景来测试需求是指模拟一些特定场景发生的事情,通过事件来触发某个动作的发生,观察事件的最终结果,从而用来发现系统中存在的问题

    一般设定三种场景来设计测试用例

        1.基本流:是最主要且经过用例最简单的场景(无任何异常分支,程序从开始直接执行到结束)

        2.备选流:一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或执行到结束,不再加入到基本流中;(各种错误情况的发生导致从基本流走向分支)

        3.异常流:在基本或备选业务流程时,因错误操作或异常输入,导致业务没有正确完成的流程

    举例:

        线上购物(用户进入网站进行购物,选择商品,进行在线购买)

        基本流:进入购物网站>账号登录>登录成功>选择商品>提交>付款>生成已付款订单

        备选流:1.进入购物网站>选择商品>账号登录>登录成功>提交>付款>生成已付款订单

                      2.账户余额不足,充值后付款>生成已付款订单

                      其他更多的备选流......

        异常流:1.进入购物网站>账号登录>登录成功>选择商品>提交>付款时取消付款>生成取消订单

                     其他更多的异常流

五、判定表法(策略表、决策表)

    定义:通过所有条件桩穷举出条件项,然后根据条件项,在对应的动作桩得出结果动作项,从而获得策略表的方法,叫做策略表法

    判定表法,是功能测试中最严的方法。该方法适用于逻辑判断复杂的场景,通过穷举条件获得结果,再对结果进行优化合并,就会得到一个判断清晰的判断表

    举例:

    某公司对客户分类标准如下:

        1.客户订单金额在1000元以上(包含1000元),信誉好的,订单设为“优先”

        2.是老客户的,订单设为“优先”

        3.其他都设为“正常”

    根据上面的分类标准,设计策略表如下:

    因为穷举了所有条件,所以可以说这个策略是100%正确的,然后再进行优化合并策略表

    可以从编号为1,2的列可以看出只要订单金额≥1000,并且是信誉好的客户订单,都设为“优先”,所以就可以将其合并为一条测试用例

    可以从编号为3,5,7的列看出,只要是老客户的订单,都设为“优先”,所以就可以将其合并为一条测试用例

    于是上面的表整理后,就可以得出简化版的策略表,如下:

    这样,我们就可以得到更清晰的逻辑判断,也可以更好的协助我们编写测试用例。而策略表,对于开发人员来说一样有用。
  从上面的表格,开发人员就可以写出更简洁的判断语句。

六、因果图法

    定义:因果图是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,适用于输入条件之间有相互制约关系的情况

    等价类划分和边界值分析法等其他方法,都着重考虑输入条件是什么,但是没有考虑到输入条件之间的关系和条件组合的情况,这样虽然已经考虑了各种条件输入很多可能出错的情况,但是多个条件组合起来,可能出错的情况就被忽略了

    如果在测试时,必须考虑各种输入条件的组合情况,那么这组合数量可能大到完全完成不了测试。因此,就考虑采取一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,就需要用到因果图(逻辑模型)

    因果图介绍

         以下是4种符号,表示了四种因果关系

         1)恒等 ,逻辑关系c表示输入,e表示输出

               c1=0 → e1=0 , c1=1 → e1=1

        2)非,逻辑关系:c1=0 → e1=1 , c1=1 → e1=0

        3)或,逻辑关系:有1就输出1,全0才输出0。

             c1,c2,c3只有要一个是1 → e1=1 , c1,c2,c3均为0 → e1=0

        4)与,逻辑关系:全1才输出1,否则,输出0

              c1,c2,c3均为1 → e1=1 , c1,c2,c3只有要一个是0 → e1=0

    使用因果图法设计测试用例主要有以下步骤:

        步骤一:找出所有的原因,原因即输入条件或输入条件的等价类

        步骤二:找出所有的结果,结果即输出条件。明确所有输入条件之间的制约关系以及组合关系

        步骤三:明确所有输出条件之间的制约关系以及组合关系。找出什么样的输入条件组合会产生哪种输出结果

        步骤四:把因果图转换成判定表,为判定表的每一列表示的情况设计测试用例。

    以上就是六种设计测试用例的方法,还一些其他不常用的方法,这里就不阐述了,欢迎大家指教~

     

相关