建议大家先重新阅读之前文章——小小品'测试设计方法'之三:状态迁移图表,其中最后一个章节讲到,短短的七句话式样,在Nスイッチカバレッジ(N=3)的情况下居然有876件用例生成,而如果想让单条测试用例覆盖大部分的路径,N至少为10,用例量将过亿,显然这是不现实的;并且Nスイッチカバレッジ的思想是相同迁移数量,而实际迁移有场景的概念,按照用户使用场景,更多应该是从始至终的一种迁移模式。所以Nスイッチカバレッジ有其局限性,正因此,pathcombo的方法诞生了!
之前举了一个车载仪表的案例,本文再举一个车载娱乐的案例,需求如下:
车载音响有四个按钮,‘上一曲’‘下一曲’‘循环播放’‘弹出’
1.CD插入后,进入音乐‘连续播放’模式
2.音乐播放过程中,可以通过‘上一曲’‘下一曲’变换歌曲
3.点击‘循环播放’后,进入循环播放模式
4.再次点击‘循环播放’后,又恢复到‘连续播放’模式
5.点击‘弹出’按钮,CD弹出
*除了中控台有四个按钮外,还有一个遥控器,同样存在四个按钮,相同功能。
先看看状态迁移图:
利用Nスイッチカバレッジ理论,形成1-Switch,再用‘[遷移元の状態]<イベント1><イベント2>[遷移先の状態]’的方式链接如下:
(ア) [スタート]<CD挿入><曲送り>[連続再生]
(イ) [スタート]<CD挿入><Repeat>[リピート再生]
(ウ) [スタート]<CD挿入><Eject>[エンド]
(エ) [連続再生]<曲送り><曲送り>[連続再生]
(オ) [連続再生]<Repeat><Repeat>[連続再生]
(カ) [連続再生]<曲送り><Repeat>[リピート再生]
(キ) [連続再生]<曲送り><Eject>[エンド]
(ク) [連続再生]<Repeat><Eject>[エンド]
(ケ) [リピート再生]<Repeat><曲送り>[連続再生]
(コ) [リピート再生]<Repeat><Repeat>[リピート再生]
(サ) [リピート再生]<Repeat><Eject>[エンド]
Pathcombo法就是首先用尽量不重复的路径来尽量多地覆盖上述11个状态迁移,对无法覆盖的状态迁移,另起一条路径来覆盖,结果如下:
(ア)→(エ)→(オ)→(カ)→(コ)→(ケ)→(キ)
(ア)→(エ)→(ク)
(イ)→(サ)
(ウ)
以最长的路径为例,(ア)→(エ)→(オ)→(カ)→(コ)→(ケ)→(キ),状态迁移路径为:<CD挿入><曲送り><曲送り><曲送り><Repeat><Repeat><曲送り><Repeat><Repeat><Repeat><Repeat><曲送り><曲送り><Eject>,形成FL表。
再根据之前文章——小小品'测试设计方法'之一:PICT,形成测试用例(详细形成过程不在这里赘述),共计26件测试用例,每件测试用例包含14个前后联系的状态测试。和传统Nスイッチカバレッジ思路相比,用例更精简、并且执行起来更方便。