[转载]状态转移图法剖析需求问题

2010-11-23  焦爱玲 

     状态转移图法指的是通过识别系统中的各种状态(如打开、关闭),所有引起状态转变的事件(如:取钱,关闭一个文件等),相关的状态转变(转变并不一定是改变不同的状态,也可以是保持在同一个状态),状态转变导致的动作(如一个错误消息),从而来发掘需求文档中未定义的场景组合情况(如通过无效状态、事件的组合,确保系统不会去执行状态之间的无效路径,发生错误的动作或者是错误的状态)。状态转移图法要求确保每个状态之间的转变过程至少被执行过一次,一般用于检测需求中涉及的状态变化比较多的系统。
      业务场景中的单个步骤通常可以被转成一个状态或转移点,所有的步骤都是与状态或转移点相匹配的,这样在罗列的过程中,如果需求中存在被遗漏的状态或转移点,就可以在整理的过程中进行补充了,主要可以发现的问题罗列如下:
1.把结构化的文本场景转化为半正式的状态图,检查状态图的完整性和一致性,是否所有的状态都已经被定义?
2.是否所有的状态都已经联系起来了?状态和事件名表达上是否都一致?
3.检查是否所有相关的事件都已经被处理?
4. 做交叉检查,是否相同的状态,转移,事件出现在2个场景里?
状态转移图法的具体操作步骤如下:
step1.列出起始状态,终止状态,输入(事件),输出(动作)

step2.构建状态转移图

step3.从状态转移图中导出测试用例
下面以网站在线购物的例子进行详细的说明:
从购物者的角度出发,交易起始于浏览网站,可以通过点检链接以及浏览类目的方式,这个是浏览的状态,增加物品到购物车是一个事件,系统将显示一个选择对话框,要求顾客告诉系统要购买几件物品,以及其他购物车所需的信息。接着是选择物品的状态,完成后,顾客告诉系统继续进行购物,系统又显示购物主页,然后又回归到浏览网站的状态。再接着是用户选择确认购买,进入登陆的状态,确认购买,并最终完成购物…….
step1:从这个例子中,我们可以看出总共有6种状态:浏览网站、选择物品、登陆、购买、确认、离开
事件/动作包括:点击链接,增加到购物车,继续购物,立刻购买,登陆失败,登陆成功,购买失败,购买成功,放弃,重新进行购物
step2:构建状态转移图如下:

简化版如下:

step3:构建测试用例

参考的角度:1.以路径的方式进行覆盖(对于循环的,请关注死锁或者是内存泄漏) 2.以每个状态点被访问一次进行覆盖 3.所有的状态转移进行至少被覆盖一次


转载务必注明出处Taobao QA Team,原文地址:http://qa.taobao.com/?p=10152


437°/4372 人阅读/0 条评论 发表评论

登录 后发表评论