如何从用例创建测试用例
  在创建一个测试用例之前,你需要为所给用例确定全部的场景。一个场景是用例的一个实例。它描述了一个贯穿事件流的特殊路径。图 是一个假设的图表,它描绘了一个拥有基本流程B和可选流程A1, A2, A3, A4的用例。为了找到全部的场景,我们需要画出贯穿于此图的所有场景。
  图.在用例中找到场景

  每一个可选流程都有一个场景,并且每个结合的可选流程都有一个场景。显然,这里场景多于可选流程,因为一个场景用于A1,另一个场景用于A2,还有一个场景用于这两个的结合。
  描述场景简单的方法是提供一系列的可选流程,例如,做两遍流程A2,然后做一遍流程A6:
  SC16:A2,A2,A6。
  另一种描述场景的方法是列出它的所有步骤,但是这种方法既困难又未必详细。
  如果你陷了无限循环(向后循环),这时该怎么办?理论上它将产生无限的场景。图 显示了一个无限循环。
  图.无限循环。

  合理的方法是做一遍基本流程,一遍循环流程,然后再做一遍循环流程。如果程序能为这两个循环都工作的话,你能假设它能为所有的循环工作。
  书籍订阅的例子中包含了一个基本流程和8个可选流程。它们中的4个向前走,另外4个向后走。如果你想描述全部可能的用例结合,你将有超过4000个场景 (这里有8个可选流程,我们想让其中4个做两次,因为他们向后循环,所以是2的(8+4)次幂,,等于4096。很明显,我们不需要把他们全部做完。
  选择能代表这四千个场景的一个合理子集。通常,明智的做法是选择一个基础流程,一个覆盖了每一个可选流程的场景,以及一些合理的可选流程的结合。使用表 1的例子,做一个包含流程A1和A7的场景也许没有什么意义,因为它们在图标上分隔太远以至于不能互相影响。但是,做A1和A2是有意义的,因为他们互相紧埃,之间互相影响。
  表 2 图解了选择的场景:一个代表基本流程,8个代表每一个可选流程,6个反射可一些流程的结合(特别是那些拥有两个距离很近的向后循环)。
  以下15个场景值得测试:
  表2. 值得测试的场景