由于昨天的网络问题,一直没有上博客发言。今天把昨天的补充上。
判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。判定书树的优点在于,它的形式简单到不需任何说明,一眼就可以看出其含义,因此易于掌握和使用。
结构化的最后一部份就是实现了,通常把编码和测试成为实现。在测试中分黑盒测试和白盒测试。如果已经知道了产品应该具有的功能,可以通过测试来检查是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。前一个方法称为黑盒测试,后一个方法称为白盒测试。另外测试的时候还要遵守测试准则:
l 所有的测试都应该能追溯到用户需求。
l 应该在测试开始之前的相当长时间,就制定出测试计划。
l 把Pareto原理应用和软件测试。
l 测试应该从“小规模”开始,并逐步进行“大规模”测试。
l 穷举测试是不可能的。
l 为了达到最佳的测试效果,应该由独立的第三方来从事测试工作。
在设计测试方案时,往往需要仔细分析程序的控制流。为了突出表示程序的控制流,可以使用流图。流图仅仅描绘程序的控制流程,它完全不表现对数据的具体操作揖及分支或循环的具体条件。在流图中用圆表示节点,一个圆代表一条或多条语句。程序流程图中的一个处理框序列和一个菱形判定框,可以映射成流图中的一个节点。流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个节点,即使这个节点并不代表任何语句。由边和节点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。
逻辑覆盖式设计白盒测试方案的一种技术。设计测试方案时测试阶段的关键技术问题。所谓测试方案包括具体的测试目的,应该输入的测试数据和预期的输出结果。通常又把测试数据和预期的输出结果称为测试用例。覆盖标准大概有以下几种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。语句覆盖式含义是,选择足够多的测试数据,使被测试程序中每个语句至少执行一次。判定覆盖又叫分支覆盖,它的含义是,不仅每个语句必须至少执行一次,也就是每个判定的每个分支都至少执行一次。条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中每个条件都取到各种可能的结果。既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出一种能同时满足这两种覆盖标准的逻辑覆盖,这就是判定/条件覆盖。它的含义是,选取足够多的测试诗句,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。条件组合覆盖式更强的逻辑覆盖标准,它要求选区足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
基本路径测试是一种白盒测试技术,它的步骤如下:
l 根据过程设计结果画出相应的流图
l 计算流图的环形复杂度
l 确定线性独立路径的基本集合
l 设计可强制执行基本集合中每条路径的测试用例
结构化部分介绍完了,下面开始介绍面相对象的设计。通常需要建立三种形式的模型,它们分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。
动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。