3

高级测试工程师必会——状态迁移法?纯干货!!

 2 years ago
source link: https://blog.51cto.com/u_15490690/5115073
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

状态迁移法主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导致状态迁移的事件,来测试状态之间的转换。

2、 应用范围

状态迁移法的思想是提供将多个状态的转换串起来进行测试的思路。该方法适合功能的状态比较多的情况下,需测试各种状态的转换,且这些状态转换的测试在实际工作中容易被遗漏。比如播放器、遥控按键等。

3、状态迁移法的步骤

  1. 分析需求,整理所有状态;
  2. 画出状态迁移图;
  3. 列出状态-事件表;
  4. 得到状态转换树(测试路径);
  5. 根据状态转换树得到测试用例

4、案例:

需求:通过某购票系统,顾客可以提前购买火车票,去到某地。

  1. 用户登录购票系统,选择出发地、目的地、出发日期,选择某趟车次点击”预定“,且填好订票人信息,点击提交订单;当前订单状态为”未支付“;

    用户手动取消订单,车票状态更新为“已取消”;

    45 分钟内未支付,订单自动取消,车票状态为“已取消”;

  2. 用户支付车票,车票状态变为“已支付”;

  3. 用户到达车站通过自动取票机或售票窗口取票,车票状态为“已出票”;

  4. 在开车半小时前,可进行改签,改签成功,车票状态为“改签成功”;

  5. 已出票/已改签的车票检票登上火车后,车票状态变为“已使用”;

  6. 在开车半小时前,可进行退票,退票成功,车票状态为“退票成功”。

a、整理车票订单的所有状态:

未支付、已取消、已支付、已出票、退票成功、改签成功、已使用

b、画出状态迁移图:

高级测试工程师必会——状态迁移法?纯干货!!_事件表

c、列出状态-事件表:

此项不是必须项,可依据实际情况跳过该步骤,直接得到状态转换树;

高级测试工程师必会——状态迁移法?纯干货!!_状态转移_02

d、得到状态转换树(测试路径):

高级测试工程师必会——状态迁移法?纯干货!!_状态转移_03

通过以上得到测试路径:

  1. 未支付--> 已取消
  2. 未支付--> 已支付--> 已出票--> 改签成功--> 退票成功
  3. 未支付--> 已支付--> 已出票--> 改签成功--> 已使用
  4. 未支付--> 已支付--> 已出票--> 退票成功
  5. 未支付--> 已支付--> 已出票--> 已使用
  6. 未支付--> 已支付--> 改签成功--> 退票成功
  7. 未支付--> 已支付--> 改签成功--> 已使用
  8. 未支付--> 已支付--> 退票成功
  9. 未支付--> 已支付--> 已使用

e、根据状态转换树得到测试用例

以上每条测试路径则为 1 条测试用例,把每条路径进行覆盖测试即可。对于状态转换有存在多个事件触发,覆盖多个事件的操作,比如“未支付--> 已取消”这条测试路径,需要测试 2 种情况:1)用户手动取消车票订单 2)超过 45 分钟用户未支付,自动取消车票订单

实际工作中,对于业务流程复杂的产品,不能很好地通过场景覆盖的方法进行用例设计时,可应用状态迁移法的思路,从业务的各种状态出发,并通过这些状态之间的切换条件串联起来进行测试覆盖,以此保证用例的高覆盖率。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK