用状态矩阵解决有序操作的case爆炸问题

发表于:2012-7-26 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  4、如何缩减这些case

  覆盖率目标达到了,但是有162个case,除了单个页面的功能验证,我们还要进行这么多的组合case测试,工作量太大。那么如何缩减这些case?

  观察这些case,如果我们挨个做,很多步骤是重复的。例如,上面有这样4个case:

  0 3 2
  3 2 4
  2 4 7
  4 7 4

  这4个case可以首尾相接,变成 0 3 2 4 7 4。把case中有重复的步骤合起来,4个case变成了一个case。

  这个思路不错!按照这个思路,我们可以将case合并起来,4合1,case数量大大缩减。

  当然,不会那么巧,所有的case都能4合1、3合1,我们还会有些疑问:

  1)是不是所有的case都可以合并? 还是上面的例子只是个特例?

  2)合并到什么程度?是否需要把10多个三步操作都合并起来,得到一个20多步的操作? 这个问题经过讨论,一般认为操作步骤在6~8步比较合理,组合的case不是很大,所能验证的内容也比较多,对于测试人员来讲是最“舒服”的。

  这个思路是不是可行,我们先合并一下试试看!

  5、合并后的结果

  有了思路就开始做。

  先尝试一下把这162个小于3步的操作合并成一些6步的操作。我们采用这样的算法:

  1)先算出所有6步操作,记为集合A; 将所有小于等于3步操作的集合记为B;集合C为最终结果集合,目前是空集;

  2)算出每一个6步操作能够包含几个2-3步的case,并将包含最大值记为max;

  3)如果max>1,则将能够取得max值的那个6步操作,加入集合C;把这个6步操作和其所包含的2-3步操作从各自的集合中删除;返回2继续;

  4)如果max=1,则将集合B中剩余的元素全部加入C中,得到结果集合C,退出

  简言之,算法会从所有6步操作的集合中选出能够包含这162个case的最小集合,其中可能有部分case无法合并,无法合并的case直接进入结果集。这个算法可能不是最优的,但是已经尽可能找到了那个最小集。

  经过算法合并以后,得出了如下结果:

  用多步操作来合成3步操作,需要 35个case,这35个case覆盖了162个case中的151个:

  0 2 3 2 3 4
  0 3 7 2 4 1
  0 4 2 6 2 1
  4 7 5 8 4 3
  2 6 5 9 5 1
  5 2 6 3 7 1
  5 3 7 3 7 4
  5 4 3 2 6 1
  。。。。。。

54/5<12345>
重磅发布,2022软件测试行业现状调查报告~

精彩评论

  • thomas0728
    2014-2-15 14:56:50

    請問  pict 是什麼意思

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号