
啊胡
2022/09/07阅读:80主题:绿意
黑盒测试之 功能图法
实践是检验真理的唯一标准,学而不用假把式。
是什么(What)
功能图法
是用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例,功能图方法是一种黑盒白盒混合用例设计方法。
(1)程序功能说明的组成。程序功能说明包括动态说明和静态说明。
-
动态说明
:描述输入数据的次序或转移次序。 -
静态说明
:描述输入条件和输出条件之间的对应关系。
一个程序的功能说明通常由动态说明和静态说明组成,对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明。
(2)功能图、状态迁移图及逻辑功能模型。
-
功能图
:功能图模型由状态迁移图
和逻辑功能模型
构成。状态迁移图用状态和迁移来表示,一个状态指出数据输入的位置(或时间),一个迁移指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能。 -
状态迁移图
:用于表示输入数据序列以及相应的输出数据;由输入数据和当前状态决定输出数据和后续状态。 -
逻辑功能模型
:用于表示在状态中输入条件和输出条件的对应关系。由输入数据决定输出数据,此模型只适用于描述静态说明。
功能图法生成测试用例的步骤(How)
功能图测试用例由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满中的一对条件组成。生成测试用例的方法是:从状态迁移图中选取测试用例,用节点代替状态,用弧线代替迁移,状态图就可转化成一个程序的控制流程图形式。
为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,在一个结构化的状态迁移(SST)中,定义3种形式的结构:顺序
,选择
和重复
。
基于功能图法生成测试用例的步骤如下。
① 生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成;
② 测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径;
③ 测试用例合成:合成测试路径与功能图中每个状态的局部测试用例,结果是初始状态到最后状态的一个状态序列以及每个状态中输入数据与对应输出数据的组合;
④ 采用条件构造树测试用例的合成算法。
实战(Do)
【例】一个普通的餐饮APP,订单状态主要分为「制作中」、「制作完成」、「已完成」,在所有的订单状态都可以申请退款,变为「退款中」,退款完成后,订单状态变更为「退款完成」,若退款失败,则订单状态还原,完成测试用例的梳理。
解
:
-
简化后的状态迁移图如下:

-
画出状态迁移转换树

-
从状态转换树导出测试路径
-
路径1:制作中——>制作完成——>已完成——>退款中——>退款完成 -
路径2:制作中——>制作完成——>已完成——>退款中——>已完成 -
路径3:制作中——>制作完成——>退款中——>制作完成 -
路径4:制作中——>制作完成——>退款中——>退款完成 -
路径5:制作中——>退款中——>退款完成 -
路径6:制作中——>退款中——>制作中
然后根据具体的使用场景,可以补充更多的路径,比如正向流程一般是用户走的更多的路径,因此补充路径如下:
-
路径7:制作中——>制作完成——>退款中——>制作完成——>已完成
-
路径8:制作中——>退款中——>制作中制作完成——>已完成
-
-
最后根据测试路径完善测试用例
写在最后
看完不思考的喵不是一只成熟的测试喵~
-
大家测试过程中是否用到了功能图法,或者说是状态迁移法?欢迎评论区一起讨论~ -
编写测试用例是测试人员的基本功,无论大家最后是做业务功能测试,还是以后做自动化测试,甚至是做侧开,都是必须修炼的心法。 -
今天是黑盒测试中,功能测试方法系列的最后一篇,相信大家一定对功能测试有个更新更全面的认识,赶快实践起来吧~
作者介绍
