一个程序的功能说明通常由动态说明和静态说明组成.动态说明描述了输入数据的次序或转移的次序.静态说明描述了输入条件与输出条件之间的对应关系.对于较复杂的程序由于存在大量的组合情况因此仅用静态说明组成的规格说明对于测试来说往往是不够的.必须用动态说明来补充功能说明.功能图方法是用功能图FD形式化地表示程序的功能说明并机械地生成功能图的测试用例.
功能图模型由状态迁移图和逻辑功能模型构成.状态迁移图用于表示输入数据序列以及相应的输出数据.在状态迁移图中由输入数据和当前状态决定输出数据和后续状态.逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系.逻辑功能模型只适合于描述静态说明输出数据仅由输入数据决定.测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成.功能图方法其实是是一种黑盒白盒混合用例设计方法。
(功能图方法中要用到逻辑覆盖和路径测试的概念和方法其属白盒测试方法中 的内容.逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法.该方法要求测试人员对程序的逻辑结构有清楚的了解.由于覆盖测试的目标不同逻辑覆盖可分为:语句覆盖判定覆盖判定-条件覆盖条件组合覆盖及路径覆盖.下面我们指的逻辑覆盖和路径是功能或系统水平上的以区别与白盒测试中的程序内部的.)
功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间)而迁移则指明状态的改变.同时要依靠判定表或因果图表示的逻辑功能.例一个简化的自动出纳机ATM的功能图。
为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来从功能图生成实用的测试用例须定义下面的规则.在一个结构化的状态迁移(SST)中定义三种形式的循环:顺序选择和重复.但分辨一个状态迁移中的所有循环是有困难的.(其表示图形省略)。
1)生成局部测试用例:在每个状态中从因果图生成局部测试用例.局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。
2)测试路径生成:利用上面的规则(三种)生成从初始状态到最后状态的测试路径。
3)测试用例合成:合成测试路径与功能图中每个状态中的局部测试用例.结果是初始状态到最后状态的一个状态序列以及每个状态中输入数据与对应输出数据的组合。
5.测试用例的合成算法:采用条件构造树.