zoukankan      html  css  js  c++  java
  • 测试心得-细说从逻辑到数据的用例设计

     之前记录过一次从逻辑到数据的设计心得,今天细化再记录一次,当掌握了基础的等价类边界值之后,其实可以解决很多基础的用例设计了,但是实际中会有很多不好设计的复杂场景,此时需要一些更高效的设计方案。这个后面再说,先说一个简单的场景:

     学生,成绩(边界值,等价类数据)     查询学生:姓名,成绩区间(边界值,等价类条件)

    ,此场景下需要根绝学生成绩对学生进行筛选,测试这个功能,首先成绩区间的边界值进行设计,考虑实际情况是分数1-100,浮点数型,所以用例设计的入参会有-1  0 20 100 105,五个边界值分数,如果是区间也可以同样根据五个边界值设置区间,设置完这些之后就结束了吗?不是的,这时候需要根绝条件对数据进行设计,数据最少要有10,0,30,100四个分数,至于为什么,其跟等价类的是一样的,0和100作为边界,而10 和30作为20的左右点,20作为满足点,同样,当设置0 或者100时,也保证能够查出来数据以及有其他不满足的数据,保证每一个用例是从众多不同情况的值中正确筛选出了正确的值,这样设计的用例才满足了某条件下从不同数据中,筛选出对应的值,而某条件就包括用例设计的那些条件。即从逻辑(条件)到数据的设计模式,数据和逻辑的关系是结合的,逻辑决定了数据的设计方法,而数据的丰富度验证了逻辑。那么抛开数据和逻辑的角度来说,数据本身,又要经过设计,比如50 和50.5的区分,因为分数存在小数目,于是最后的成绩应该是10,0,30,50,50.5,100这么多分数,条件应该是= -1,0,20,50,50.5,100,这么多情况,如此便验证了根据某分数查找的一基础查询。

    那么如果增加条件呢,根据姓名+成绩的方式去查询学生呢,由于姓名又需要设计出等价类,假设姓名有五种情况,那么正常情况应该是刚才的组合*5,也就是30个情况,而数据设计也需要同样多的倍数。这样就大大降低了测试效率,于是我引入了独立设计法。即假设各单元测试点之间是没有交叉关系的,姓名的查找不影响成绩的查找,即单纯使用姓名查找没问题,单纯使用成绩查找没问题,姓名的一种情况+成绩的一种情况查找没问题,那么我就认为成绩+姓名的所有组合查找都没有问题。实际上这是不科学的,但是这样确实可以最大化保证最少的用例实现最高的保证。即a的各种逻辑正确,b的各种逻辑正确,那么a且b的组合逻辑就不需要考虑a和b内部的详细情况了。如果觉得不合理可以使用正交来解决这种情况也可以,自然是更科学一些,具体根据实际来决定,我个人很少用正交

  • 相关阅读:
    HDU 5441——Travel——————【并查集+二分查界限】
    HDU 5446——Unknown Treasure——————【CRT+lucas+exgcd+快速乘+递推求逆元】
    HDU 5407——CRB and Candies——————【逆元+是素数次方的数+公式】
    HDU 5412——CRB and Queries——————【线段树套Treap(并没有AC)】
    HDU 4336——Card Collector——————【概率dp】
    HDU 5419——Victor and Toys——————【线段树|差分前缀和】
    使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
    使用 JAX-RS 简化 REST 应用开发
    [置顶] 智能家居开源项目 The open Home Automation Bus (openHAB)
    ThoughtWorks 技术雷达(2013年5月)
  • 原文地址:https://www.cnblogs.com/baxiaobin/p/13523928.html
Copyright © 2011-2022 走看看