2. 从动态模型导出测试用例
  在第9章中已经讲过,怎样用状态转换图作为表示类的动态行为的模型。类的状态图可以帮助我们导出测试该类(及与其协作的那些类)的动态行为的测试用例。图12.4给出了前面讨论过的account类的状态图,从图可见,初始转换经过了empty acct和setup acct这两个状态,而类实例的大多数行为发生在working acct状态中,终的withdraw和close使得account类分别向nonworking acct状态和dead acct状态转换。

图12.4 account类的状态转换图

  设计出的测试用例应该覆盖所有状态,也是说,操作序列应该使得account类实例遍历所有允许的状态转换:
  测试用例#s1:open·setupAccnt·deposit(initial)·withdraw(final)·close
  应该注意,上面列出的序列与12.4.1节讨论的小测试序列相同。向小序列中加入附加的测试序列,可以得出其他测试用例:
  测试用例#s2:open·setupAccnt·deposit(initial)·deposit·balance·credit·withdraw(final)·close
  测试用例#s3:open·setupAccnt·deposit(initial)·deposit·withdraw·accntInfo·withdraw(final)·close
  还可以导出更多测试用例,以保证该类的所有行为都被适当地测试了。在类的行为导致与一个或多个类协作的情况下,应该使用多个状态图去跟踪系统的行为流。