手机中MP3播放功能状态-事件表如下,
并且当MP3曲目在起点时不能按R键,当MP3曲目在末端时不能按P、F键。
Step1、如果需求是文字描述,将文字转化为图形
Step2、需求中包含1个独立功能 —— 播放功能
Step3、针对打印功能开展需求分析
界面可见输入参数: 播放、停止、前进、倒退、录音
界面不可见输入参数: 电量、音源
Step4、分析界面可见输入参数之间的关系及特点
界面所有参数都是有效的,不存在区间范围—X— 等价类、边界值
参数之间不存在一个是什么另外一个必须是什么 —X— 判定表
有效参数组合会输出不同结果,需求中参数部分可以组合,部分不可以组合,如前进与后退是互斥的 —X— 正交试验
不跨多个界面 —X— 流程分析法
所有参数都是有效的参数之间存在约束条件(功能之间的约束、状态之间的约束)—— 状态迁移图
Step5、利用状态迁移图设计测试用例
① 根据需求《SRS》提取所有的功能名或状态名
② 形成N*N业务矩阵
③ 根据需求分析功能/状态的可达项, 可达用功能名/状态名代替、不可达用黑点表示
④ 将业务矩阵转化为需求树,深度优先画法、广度优先画法
⑤ 一条分支为一条测试用例
深度优先画法
找一个功能名/状态名作为入口
根据业务矩阵从第一列开始竖着画,把可达项并列存放在入口的下一行
画可达项,从左边第一个功能画起,其他都注掉
一个功能只画一次,再出现就注掉,一直画到最后一个功能的可达项
优点:保证每一个功能/状态的可达项都被覆盖
缺点:对无效的路径无法覆盖
一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序或转移的次序。静态说明描述了输入条件与输出条件之间的对应关系.
对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的.必须用动态说明来补充功能说明.
功能图方法是用功能图FD形式化地表示程序的功能说明,并机械地生成功能图的测试用例.
功能图模型由状态迁移图和逻辑功能模型构成.
状态迁移图用于表示输入数据序列以及相应的输出数据.在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态.
逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系.逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定.
测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成.功能图方法其实是是一种黑盒白盒混合用例设计方法。
(功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中 的内容.逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法.该方法要求测试人员对程序的逻辑结构有清楚的了解.由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖及路径覆盖.下面我们指的逻辑覆盖和路径是功能或系统水平上的,以区别与白盒测试中的程序内部的.)
功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同时要依靠判定表或因果图表示的逻辑功能.例,一个简化的自动出纳机ATM的功能图。
从功能图生成测试用例,得到的测试用例数是可接受的. 问题的关键的是如何从状态迁移图中选取测试用例. 若用节点代替状态,用弧线代替迁移,则状态迁移图就可转化成一个程序的控制流程图形式.问题就转化为程序的路径测试问题(如白盒测试)问题了.
为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,须定义下面的规则.在一个结构化的状态迁移(SST)中,定义三种形式的循环:顺序,选择和重复.但分辨一个状态迁移中的所有循环是有困难的.(其表示图形省略)。
1)生成局部测试用例
在每个状态中,从因果图生成局部测试用例.局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。
2)测试路径生成
利用上面的规则(三种)生成从初始状态到最后状态的测试路径。
3)测试用例合成
合成测试路径与功能图中每个状态中的局部测试用例.结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
5.测试用例的合成算法
采用条件构造树.