三、现成的解决方案?
想解决覆盖率和case爆炸的矛盾,目前了解到的解决办法有:
1、pict
● 优势:
有一些组合可能是我们不需要进行测试的。通过给组合间加入条件限制,pict可以自动生成需要测试的组合。通过pict的优化和筛选,case组合可以有效的减少。pict工具成熟,应用很广泛,取得了不错的效果。
● 不足:
pict所处理的组合之间是无序的,也就是说用pict得到的是一个“组合”而不是“排列”。有时候我们需要处理的是一个操作序列,例如 1-2-3、1-3-2、2-3-1 都是不一样的。而pict对这种顺序关系不能区分。
2、状态图
● 优势:
操作间顺序关系一目了然。
● 不足:
无法得出操作序列,仍然只能是看图随机操作。
四、我们的解决办法
既然状态图可以反映有序操作的关系,我们打算从状态图着手来解决这个问题。
1、应用场景
我们假设一个常规的电子商务网站。
这个网站中,用户首先进入首页,然后可以搜索产品,进入产品列表页;也可以直接点击首页中的促销产品,进入产品的详细介绍页。
进一步,在产品列表页中,用户可以点击“加入购物车”将商品放入购物车或点击购买直接进入订单页,或对搜索结果不满意而再次搜索;在详细介绍页中,也可以进行如上的操作。
在购物车的页面中,用户可以增、删、改购物车的内容,或继续购物;在订单页中,用户也可以一步步提交订单或继续购物。
我们发现涉及的页面越来越多,其间的关联关系也越来越复杂,大概像下面一张状态图,图中加入了一些“其他功能页”,并假定了他们之间的跳转关系。