测试用例设计方法:功能图

1 引言
前面几篇文章为我们讲述了因果图、判定表、正交试验等几种方法,主要是针对于不同条件输入输出的组合进行测试,但在实际需求中,我们也常会遇到需要对被测对象的状态流转进行验证的情况,此时前面几种方法将不再适用,对于这种状态转换类问题,功能图法则可大展身手。

2 概念及原理
2.1 基本概念
功能图:也称状态图法,该方法是一种专门解决动态说明问题的测试用例设计方法 ,主要由状态迁移图和逻辑功能模型两部分构成。

2.1.1 状态迁移图
用于描述一个特定对象生命期中满足某些条件的所有状态,以及由于各种事件的发生而引起的状态之间的转移。关于状态迁移图,有如下几点需要注意:

1)一个状态迁移图中包含如下几种状态:

•初态(即初始状态) ——实心圆

•终态(即最终状态) ——一对同心圆(内圆为实心圆)

•中间状态——圆角矩形

2)在一张状态图中只能有一个初态,而终态则可以有0至多个。

3)状态图既可以表示单程生命周期,也可以表示系统循环运行过程。

2.1.2 逻辑功能模型
用于描述静态说明,表示在状态中输入条件和输出条件之间的对应关系。

2.2 核心思想
功能图法的核心思想在于:抽象出待测系统的若干状态以及状态之间的转换条件和转换路径,然后从状态迁移路径覆盖的角度设计测试用例。

3 方法步骤
1)分析需求,明确状态节点,具体关注以下几个信息

•存在的状态;

•状态之间的转换关系;

•状态变化的触发条件。

2)梳理不同状态的转换,输出状态-条件表;

3)画出状态迁移图;

•定义初始状态;

•为初始状态增加一次操作改变初始状态,增加新的状态;

•为上一步步产生的新状态增加一次操作,再增加新的状态;

•循环直到没有新状态产生为止。

4)转换为状态迁移树;

结合广度优先遍历+深度优先遍历算法,遍历状态迁移图的每一条路径,得到状态迁移树。

5)从状态迁移树导出测试路径。

状态迁移树中根节点到每个叶子节点的路径即为一条测试用例。

4 举个栗子
场景:针对客服系统事件状态流转过程设计测试用例

1)分析客服事件可能存在的所有状态。

•已创建/待分配

•已分派

•处理中

•已解决

•已关闭

•升级待分派

•再次打开

2)梳理状态之间的转换关系和触发条件,得到状态-条件表。
当前状态    下一个状态    状态转换条件
已创建/待分配    已分派    ①系统自动分派②手动领取
已分派    处理中    ①客服操作事件/事件有更新
已创建/待分配    处理中    ①事件转移
已创建/待分配    已解决    ①系统解决事件(如小程序-用户取消服务)
已创建/待分配    已关闭    ①mq触发关闭(如上游取消异常)
处理中    已解决    ①客服手动解决事件②系统自动解决事件
已解决    已关闭    ①归档
已解决    再次打开    ①手动reopen②系统触发reopen
处理中    升级待分派    ①客服升级事件
处理中    已关闭    ①合并
升级待分派    已分派    ①系统自动分派②手动领取
升级待分派    处理中    ①事件转移
再次打开    升级待分派    ①客服升级事件
再次打开    已解决    ①客服手动解决事件②系统自动解决事件
-    已创建/待分配    ①fxm/小程序等生成事件
-    已分派    ①客服手动创建②电话/咚咚等方式进线
-    升级待分派    ①系统升级事件(如邮政投诉事件)
3)根据状态-条件表,画出功能图/状态图。

4)根据功能图输出状态迁移树。

 5)输出测试用例,下表举例输出前5条,其余类似不做赘述。

用例编号    测试项    标题    预置条件    操作步骤    预期结果
Test_01    改变事件状态    事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【已关闭】    可正常操作事件    1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、事件15天无操作,系统归档事件。    事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【已关闭】
Test_02    改变事件状态    事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【已解决】--【已关闭】    可正常操作事件    1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击解决事件;7、事件15天无操作,系统归档事件。    事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【已解决】--【已关闭】
Test_03    改变事件状态    事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】    可正常操作事件    1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击升级事件;7、事件分派至其他客服;8、客服操作更新事件信息;9、客服解决事件;10、事件15天无操作,系统归档事件。    事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】
Test_04    改变事件状态    事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【处理中】--【已解决】--【已关闭】    可正常操作事件    1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击解决事件;5、客服reopen事件;6、客服点击升级事件;7、主管转移事件;8、客服处理并解决事件;9、事件15天无操作,系统归档事件。    事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【已解决】--【再次打开】--【升级待分派】--【处理中】--【已解决】--【已关闭】
Test_05    改变事件状态    事件状态转变:【已创建/待分配】--【已分派】--【处理中】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】    可正常操作事件    1、通过fxm渠道进线生成事件;2、客服手动领取事件;3、客服操作更新事件信息;4、客服点击升级事件;5、事件分派至其他客服;6、客服操作更新事件信息;7、客服解决事件;8、事件15天无操作,系统归档事件。    事件状态转变为:【已创建/待分配】--【已分派】--【处理中】--【升级待分派】--【已分派】--【处理中】--【已解决】--【已关闭】
...    ...    ...    ...    ...    ...
5 总结

功能图/状态图方法
适用场景    1、由于某种条件成立导致发生状态改变的情况。2、主要关注状态转移的正确性。
优点    1、通过状态图可以清晰掌握系统的整个交互过程;2、可保证每一个状态的所有可达状态都覆盖到;3、通过验证给定条件内是否能够产生需要的状态变化,可检验出是否存在不可达的状态、不必要的状态或其他非法状态,以及非法的状态迁移。
缺点    针对有效输入输出进行设计,所以无法覆盖无效路径和非法输入。
注意事项    1、每种状态至少需要访问一次;2、重点测试最常见、最普遍的状态转换;3、其次测试最不常用的状态转换路径;4、单个状态之间的转换可通过结合其他用例设计方法保证覆盖全面;5、添加非法测试路径进行测试。(异常输入、状态和条件的非法组合)
通过本节讲述的功能图测试用例设计方法,我们可以轻松设计存在对象状态转移变换需求的测试用例,从而清楚的掌握整个系统的交互过程,但如果我们面对的需求中更多描述复杂的业务处理流程,我们又该使用哪种方法呢?一起看看下一节的场景法吧~

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助

  行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值