由于时间和成本的约束,软件测试的关键问题是:
  在所有可能的测试用例中,哪个子集有可能发现多的错误
  测试方法:
  黑盒测试
  等价类划分(EquivalencePartitioning)
  1.严格控制测试用例的增加,减少为达到“合理测试”的某些既定目标而必须设计的其他测试用例的数量
  2.它覆盖了大部分其他可能的测试用例。
  划分了等价类后,可以说,如果对该集合中某个元素所进行的测试没有发现错误的话,那么对该集合中其他元素所进行的测试也不大可能会发现错误。
  使用等价类划分方法设计测试用例主要有两个步骤:(1)确定等价类;(2)生成测试用例
  (1)确定等价类
  外部条件,有效等价类(代表对程序的有效输入),无效等价类(其他任何可能的输入条件-即不正确的输入值)
  确定等价类大体上是一个启发式的过程,一些指导原则:
  如果输入条件规定了一个取值范围(eg.“数量可以是从1到99”),那么应确定出一个有效等价类(1<数量<99),以及两个无效等价类(数量<1,数量>99)
  如果输入条件规定了取值个数(eg.“汽车可登记一至六名车主”),那么应确定出一个有效等价类和两个无效等价类(没有车主,或车主对于六个)
  如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同的处理(eg.“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车”),那么应为每个输入值确定一个有效等价类和一个无效等价类(eg.拖车)
  如果存在输入条件规定了“必须是”的情况(eg.“标识符的第一个字符必须是字母”),那么应确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)
  (2)生成测试用例
  使用等价类来生成测试用例的过程:
  为每个等价类设置一个不同的编号
  编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,知道所有的有效等价类都被测试用例所覆盖
  编写新的用例,覆盖一个且仅一个尚未被覆盖的无效等价类,直到所有的无效等价类都被测试用例覆盖:用单个测试用例覆盖无效等价类,是因为某些特定的输入错误检查可能会屏蔽或取代其他输入错误检查。
  边界值分析(Bondary-ValueAnalysis)
  所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。
  因果图分析(Cause-EffectGraphing)
  生成测试用例时采用的过程:
  将规格说明分解为可执行的片段
  确定规格说明中的因果关系。所谓因,是指一个明确的输入条件或输入条件的等价类。所谓果,是指一个输出条件或系统转换。
  分析规格说明的语义内容,并将其转换为连接因果关系的布尔图。这是所谓的因果图
  给图加上注解符号,说明由于语法或环境的限制而不能联系起来的因和果
  通过仔细地跟踪图中的状态变化情况,将因果图转换成一个有限项的判定表。表中的每一列代表一个测试用例
  将判定表中的列转换成测试用例
  因果图中的基本符号:

  设想一下,每个结点的值为0或为1,0表示“不存在”状态,1表示“存在”状态。identity函数表示,如果a等于1,则b也是1,否则b为0.not函数表示如果a等于1,则b为0,否则b为1.Or函数表示如果a或b或c等于1,则d为1,否则d为0。and函数表示如果a和b都等于1,则c为1,否则c为0.