深入理解测试用例的设计思路

 

本文以最常见的几种测试场景来展开讨论如何设计出更为高效且覆盖面更为全的测试用例。

在讨论前,我们先来大概了解下目前行业里常用到的几种测试用例的设计方法,目前主流的测试用例设计方法有如下几种:

  1. 等价划分法-此设计方法算是黑盒测试中用得最多的一个了,而且此方法常常与其他方法一起来设计测试用例,常用的组合就是与边界值划分法;

定义:等价类划分法是把所有可能输入的数据划分成若干部分,然后从每一个部分选取少数具有代表性的数据作为测试用例。

划分标准:

  1. 完整性,即被划分的各个部分测试数据共同组成了所有可能输入的数据。
  2. 排他性,即每个部分的测试数据原则上来说,不应该有重叠部分。

划分方法:

  1. 在输入条件规定了取值范围或值的个数的情况下,则可以划分为一个有效等价类和二个无效等价类
  2. 在输入条件规定了输入值的集合或规定了必须如何的条件下,则可划分为一个有效等价类和一个无效等价类
  3. 在输入条件是一个布尔量的情况下,可划分为一个有效等价类和一个无效等价类
  4. 在规定了输入数据必须遵守的规则情况下,可划分为一个有效等价类和若干个无效等价类(从不同角度违反规则)
  5. 在规定了输入数据为一组值,每个值分别处理不同情况,则可确定n个有效等价类和一个无效等价类
  6. 假如在已经确认已划分的等价类中各元素在程序处理中的方式不同情况下,则需将该等价类进一步的划分为更小的等价类
  1. 边界值分析法

此方法根据也是特别常用的一种设计方法了,写过代码或者有丰富测试经验的同学应该知道,代码中的判断逻辑是非常多的,越是复杂的业务流程,判断逻辑就越多。就算有丰富经验的开发者,在进行判断逻辑代码的时候也会有所疏忽,尤其是哪些欠缺开发经验的同学来说,就更容易忽略某些边界问题了。

定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

分析:大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

  1. 场景分析法(流程图法)

随着系统功能越来越多,业务越来越复杂,这时候为了更好的进行测试,确保所有业务流程都能被覆盖测试到,这时候引入场景分析法就非常有必要了。

定义:现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。

  1. 经验推断法

随着测试人员对系统的不断熟悉,对业务的理解不断加深,对程序员的不断了解,有时候就可以有针对性的去验证是否存在某个问题。

  1. 因果图法

   等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

      

定义:因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

  1. 其他几种方法不常用,就不介绍了,如有需要再去学习了解即可。

上面我们大概了解了下各个测试用例设计方法,接下来就开始以实际例子来说明如何更高效的设计测试用例了。

例子一:web登录页面的测试

分析:首先我们可以分析一下,该界面都有哪些哪些元素,每个元素又具备哪些规则要求,是否有其他特殊化要求,比如缓存,加密等;分析完毕后,我们就可以根据了解到的去选择合适的测试用例设计方法,对这个页面进行用例的编写。

  

原型图:

 

需求:

  1. 支持工号密码和APP端扫一扫登录
  2. 支持缓存账号密码信息,下次免输入登录
  3. 密码不论是前端还是缓存还是传输过程中,需要加密处理
  4. 支持验证码图片点击更换
  5. 支持登录界面不同语言显示,且有记忆上次更换功能
  6. 其他的要求就如同所示

拿到上述需求和原型图后,我们就可以开始着手分析然后去设计测试用例了。

首先对于用户来说,对一个系统的评价,首先从界面视觉方面去判断,就好比男女之间的第一次见面,嗯,你想的没错,就是相亲,第一印象基本上是从个人长相,精神面貌来的,我们都知道第一印象很重要,尤其是在如今这个快节奏的社会;

对于一个用户来说,界面的风格,人机交互性,易理解性,易操作性等将直接印象用户的第一使用体验,假如第一使用体验都不好了的话,假如该产品不是不可替代性的产品的话,用户很有可能就此流失掉,假如该系统是用户已经付费了的,虽然不好看的页面,难于操作的页面,难于理解的页面不会马上导致客户退货,但起码会使该用户产生一种一点都不专业的感觉,接下来用户很可能带着一种不愉快的心情去操作了,这就很有可能导致各种各样的刁难挑刺,最终导致彻底对该产品失去兴趣,要不就是打回要求重新调整,要不就是退回退款。

大部分产品开发过程中,在前期需求确定及评审过程中就会这方面进行一定讨论研究,所以建议测试同学在需求阶段就要介入进去,从界面风格,人机交互性,易理解性,易操作性等几方面去进行审视,给出比较不错的建议。

然后接下来就是对系统的业务功能进行测试了,业务分析了下,就是个登录功能,二种登录模式,其中工号登录页面上有三个输入框,一个下拉框,一个图片按钮,一个文字按钮,一个登录按钮;扫一扫登录页面就上面就一个二维码。

根据一般的测试套路,我们先是进行基本的功能测试,只有基本的功能实现了,我们才有意义去进行其他方面的测试。

备注:扫一扫登录页面由于过于简单就不在此进行阐释了

  1. 功能测试

结合我们所掌握到该页面的相关需求知识以及我们后期拓展到的隐性需求(最好在需求阶段就提出来),提炼出我们所需要的测试点,然后再结合我们所掌握的测试用例设计方法进行测试用例的编写。

以下就是提炼出的测试点:

  1. 输入框的空值登录
  2. 有效账号密码等信息登录
  3. 无效账号密码等信息登录
  4. 密码输入框特殊要求测试
    1. 是否密文展示
    2. 是否可从外部复制进去
    3. 是否可从密码输入框复制密码出去
    4.  
    5. 输入框长度限制测试
    6. 输入框可输入类型测试
    7. 验证码识测试
    8. 账号密码记忆保存测试
    9. 同时登录测试
    10. 不同语言模式下的正常登录测试
    11. 默认语言的记忆测试

参考资料:https://blog.csdn.net/lanju2012/article/details/81017587

后续待补充……

猜你喜欢

转载自www.cnblogs.com/Aaron-007/p/10697277.html