测试用例的设计
  一般而言,在所有的方法中效率低的是随机输入测试,即在所有可能的输入值中随机选取某个子集来对程序进行测试的过程。
  白盒测试的方法:1)语句覆盖。2)判定覆盖。3)条件覆盖。4)判定/条件覆盖。5)多重条件覆盖。
  1.>语句覆盖:较弱的准则,将程序中的每条语句至少执行一次。
  2.>判定覆盖或分支覆盖:较强的逻辑覆盖准则,必需编写足够的测试用例,使得每个判断都至少有一个为真和为假的输出结果。也是说每条分支路劲都必 须至少遍历一次
  3.>条件覆盖:比判定覆盖更强的准则,条件覆盖要编写足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次。
  4.>判定/条件覆盖:设计出充足的测试用例,将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能的结果至少执行一次,将每个入口点都至少调用一次。
  5.> 多重条件覆盖:要求编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。
  总的来说,对于包含每个判断只存在一种条件的程序,简单的测试准则是设计出足够数量的测试用例,实现:1)将每个判断的所有结果
  都至少执行一次;2)将所有的程序入口(例如入口点或ON单元)都至少调用一次,以确保全部的语句都至少执行一次。而对于包含多
  重条件判断的程序简单的测试准则是设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合,以及所有的入口点都
  至少执行一次(加入“可能”二字, 是因为有些组合情况难以生成)。
  黑盒测试的方法:1)等价类划分。2)边界值分析。3)因果图分析。4)错误猜想。
  1.>等价类划分:1)确定等价类;2)生成测试用例。
  确定等价类:选取每一个输入条件(通常是规格说明中的一个句子或短语)并将其划分为两个或更多的组。有效等价类(代表对程序的有效输入)
  无效等价类(代表的则是其他任何可能的输入条件,即不正确的输入值)。
  生成测试用例:1)为每个等价类设置一个不同的编号。2)编写新的测试用例,尽可能的覆盖那些未被覆盖的有效等价类,直到所有的有效等价
  类都被测试用例覆盖(包含进去)。3)编写新的用例,覆盖一个且仅一个尚未被涵盖的无效等价类,直到所有的无效等价类都被测试用例所覆盖。
  2.>边界值分析:指输入和输出等价类中的那些恰好处于边界、或超越边界、或在边界以下的状态。
  1)与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。
  2)与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间(输出等价类)设计测试用例。
  3.>因果图:是一种形式语言,用自然语言描述的规格说明可以转换为因果图。因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),
  但没有使 用标准的电子符号,而是使用了稍微简单点的符号。
  1)将规格说明分解为可执行的片段。
  2)确定规格说明中的因果关系。
  3)分析规格说明的语义内容,并将其转换为连接因果关系的布尔图。所谓的因果图。
  4)给图加上注解符号,说明由于语法或环境的限制而不能联系起来的“因”和“果”。
  5)通过仔细的跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表。表中的每一列代表一个测试用例。
  6)将判定表中的列转换成测试用例。
  因果图方法是一个根据条件的组合而生成测试用例的系统性的方法。可以替代这种方法的是特殊选取的条件组合,但在这个过程中,
  很可能会遗漏很多可由因果图方法确定的“令人感兴趣”的测试用例。
  4.>错误猜测:利用直觉和经验猜测出错的可能类型,然后编写测试用例来暴露这些错误。
  测试策略:
  1)如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法。
  2)在任何情况下都应使用边界值分析方法。
  3)应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充。
  4)使用错误猜测技术增加更多的测试用例。
  5)针对上述测试用例集检查程序的逻辑结构