状态迁移法 一、概念 1.什么是状态迁移法 在定义状态迁移法之前,先介绍一下程序的功能说明
一个程序的功能说明通常由动态说明和静态说明组成
动态说明描述了输入数据的次序或转移的次序
静态说明描述了输入条件与输出条件之间的对应关系
对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明
功能图方法是用功能图形式化地表示程序的功能说明,并机械地生成功能图的测试用例
功能图模型由状态迁移图和逻辑功能模型构成: (1) 状态迁移图用于表示输入数据序列以及相应的输出数据
用状态和迁移来描述一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能
在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态
(2) 逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系
逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定
(3) 测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成
如何从状态迁移图中选取用例
我们采用节点代替状态,弧线代替迁移,那么状态迁移图就转换成为一个程序的控制流程图,问题也就随之转换为路径测试的问题了
所以,功能图方法其实是是一种黑盒/白盒混合使用的用例设计方法
比如在功能图方法中,用到的逻辑覆盖与路径测试的概念和方法,就是属于白盒测试方法中的内容
(逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法,该方法要求测试人员对程序的逻辑结构有清楚的了解
由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖及路径覆盖
) 注意:测试人员应当注意区分黑盒测试中系统功能或者系统水平上的逻辑覆盖与路径,和白盒测试中所指的程序内部的逻辑覆盖的区别
状态迁移法的目