状态迁移法

摘要:
可能不可能产生非法的状态转移等。状态迁移法的使用:步骤一:根据需求提取全部状态;步骤二:绘制状态迁移图;步骤三:根据状态迁移图推导测试路径;步骤四:选取测试数据,构造测试用例。取消后,订票信息处于“已取消”状态;由以上分析得出客户预订机票时订单的全部状态:完成预定、已支付、已出票、已使用、已取消;2、测试设计方法分析:a).状态迁移图:b).测试路径:由状态迁移图得出的测试路径:.A-˃B-˃E;.A-˃B-˃C-˃E;.A-˃B-˃C-˃D。

许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证

其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态。可能不可能产生非法的状态转移等。对于

被测系统,若我们可以抽象出它的若干个状态,以及这些状态之间的切换条件和切换路径,那么就可以从状态迁移路径覆盖的角度

来设计用例对该系统进行测试。状态迁移法的目标是设计足够的用例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁移

路径的覆盖。

状态迁移法的思想是提供将多个状态的转换串联起来进行测试的思路。该方法适合测试各种状态的转换,而且这些状态转换的

测试在实践中是易遗漏的。例如像手机、MP3等,都可以使用状态迁移法对使用状态的迁移(即用户使用场景的转换)进行测试。

状态迁移法的使用:

步骤一:根据需求提取全部状态;

步骤二:绘制状态迁移图;

步骤三:根据状态迁移图推导测试路径(状态迁移树);

步骤四:选取测试数据,构造测试用例。

例子:

一、需求:路人甲打电话预订飞机票,要去某地。

二、分析:

1、测试需求分析:

a).客户向航空公司打电话预订机票。此时,机票信息处于“完成预订”状态;

b).顾客支付了机票款项后,机票信息变为“已支付”状态;

c).客户当天到达机场并使用身份证换领登机牌后,机票信息变为“已出票”状态;

d).检票登机后,机票信息变为“已使用”状态;

e).在登机前,可以取消自己的订票信息,若已支付机票费用,则可以退回票款。

取消后,订票信息处于“已取消”状态;

由以上分析得出客户预订机票时订单的全部状态:

完成预定、已支付、已出票、已使用、已取消;

2、测试设计方法分析(状态迁移法):

a).状态迁移图:

状态迁移法第1张

b).测试路径(状态迁移树):

状态迁移法第2张

由状态迁移图得出的测试路径:

(1).A->B->E;

(2).A->B->C->E;

(3).A->B->C->D。

3、用例设计(输入部分):

(1).完成预定->已支付->已取消;

(2).完成预定->已支付->已出票->已取消;

(3).完成预定->已支付->已出票->已使用;

三、用例详细:

总结:

状态迁移法实际测试了被测系统各种状态的转换,这些状态转换的测试在实际工作中是容易遗漏的,只要能够将这些状态的转换

测试到,是否采用状态迁移法并不重要,因为状态迁移法只是提供了一种将多个状态的转换串联起来进行测试的思路(思维模式)。

实际工作中,在业务流程中都涉及到了复杂的业务场景(即业务状态的迁移)。而这些业务场景在需求规格中往往不能够完全

阐述清楚,容易出现遗漏。所以当被测系统的业务场景复杂时,在工程中应用这种针对状态迁移测试的思路完成对复杂业务场景的

测试有时是很有必要的。

注:

用例设计要考虑三个层次的问题:策略、模式、方法。黑盒测试就是一种策略,状态迁移即是一种模式,也是一种方法。

怎样才叫精通测试用例设计? 实践是检验真理的唯一标准。理论也是来源于实践的,特别是在工程领域。懂得理论而没有实践的,其实还是不懂嘛。反而不如

有一定实践经验的人更接近真理。有大量实践经验,而又善于总结的,才可能成为专家。

转载自:http://blog.csdn.net/ggf123456789/article/details/8286181

免责声明:文章转载自《状态迁移法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA四类八种基本数据类型Word 转换为 PDf 的技术方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

VSCode, 当今最流行的免费开源代码编辑器,微软出品,必属精品

Visual Studio代码是一个轻量级但功能强大的源代码编辑器,可以在桌面上运行,可以用于Windows、MacOS和Linux。直接在编辑器中检查差异,暂时保存文件并提交。Visual Studio代码产品在初始操作中的内部代码控制可以通过编辑器内的SCM支持(包括丰富的Git集成)加快发布周期。用户界面-介绍VSCode编辑器的基本UI、命令和功能。...

硬中断与软中断的区别!

在多核系统上,一个中断通常只能中断一个CPU(也有一种特殊情况,即主机上有一个硬件通道。它可以在没有主CPU支持的情况下同时处理多个中断。软中断:1。软中断与硬中断非常相似。生成软中断的进程必须是当前正在运行的进程,因此它们不会中断CPU。...

oracle的序列号(sequence)

Oracle的自动递增列应使用序列号。在初始化阶段,需要手动创建序列,然后在插入序列时手动读取分配给相关字段(如ID)的序列的nextval。这很麻烦。但是,这对于SQL Server来说不是问题,可以获得。oracle的序列号也有缓存。默认情况下,一次生成20个。如果没有用完,它们可能会丢失,这可能会导致ID不一致。此外,有时这可能会引起误解。例如,我有一...

建行手机银行4.0版本转账怎么不要求输入支付密码?

建行手机银行单笔限额50万,日限额100万,这个6位数的验证码价值50万元!输入6个数字的支付密码只需要几秒钟而已,转账操作频率不是很高,手机银行转账速度比人工柜台、ATM、电脑网银转账速度不知道快了多少倍,输入6个数字的支付密码这几秒钟相对安全性算什么呢?另外建行还有帐号支付的方式,对电子商户日限额10000元,只需要帐号+手机验证码就可以支付,密码都不用...

dBFs和dBm

dBFs和dBmdBFs是用来表征数字域功率值的大小,一般情况下我们定义0dBFs为数字域满刻度功率值,即数字域中功率的最大值;因此看到的dBFs的值都是负的。...

嵌套For循环性能优化案例

4.1测试代码Java代码publicstaticvoidtestFunction{System.out.print(“”);//注意:此方法不影响整体优化,此处仅简单输出}publicstaticoidtestA(){longstart=System.anoTime();forfortestFunction;System.out.println;}publ...