用FSM写Case,玩过没?

发表于:2016-7-20 08:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:腾讯TMQ 黎懋靓    来源:51Testing软件测试网原创

  一、引言
  测试工程师小新一是一名安卓客户端测试工程师,对于安卓客户端的功能测试自动化测试性能测试方面都有着非常丰富的经验。最近小新一被通知负责某二手交易APP的功能测试,在初步了解了该APP后,小新一皱起了眉头。
  该APP虽然看起来功能简单,只是提供了一个买家和卖家的交易沟通平台,但是其中涉及到了多个实体的状态变迁,如果只是对于需求进行测试用例设计的话,很难保证所有的功能路径都被覆盖了,而且测试用例对于路径的覆盖无法区分优先级。这样的测试用例是远远不能保证到产品的质量的。
  针对这个情况,小新一和测试分析小组负责人锅仔进行了一次深入的沟通,在听完小新一对于测试任务的描述后,锅仔提出了使用基于状态的测试方法来完成对于该APP的测试。
  那么什么是状态机呢?什么又是基于状态的测试呢?怎么使用基于状态的测试呢?基于状态的测试适用于什么情况呢?在使用状态机的时候需要注意哪些事项呢?如果你对这些问题还存有疑问,那么请看官继续往下看,和小新一一起,学习基于状态的测试方法。
  二、基于状态的测试
  2.1定义
  基于状态的测试是一种基于模型的测试方法,作为黑盒测试设计技术中的一种,常被用于事件驱动的系统中。基于状态的测试核心思路是通过遍历系统所有的状态转换迁移,来保证整个系统功能的正常。
  2.2状态机
  顾名思义,基于状态机的测试,其核心模型就是状态机,也叫状态图。状态机的组成其实比较简单,要素大致有三个:输入,输出,还有状态。输入和输出比较容易理解,那么什么叫做状态呢?状态就是对象生命期中的条件或情况,在这种状态中,对象满足某种条件,执行某种活动,或者等待某种事件。
  在基于状态的测试中,状态机的准确度直接决定了测试效果,所以状态机的绘制是非常重要的一环,我们可以通过以下三步来分析如何绘制状态机:
  步骤一:列出研究对象拥有的各种状态
  通过启发式的探索来发现系统的状态:
  1)通过三个简单问题发现状态:有没有什么事情是我现在可以做但之前不可以做的?有没有什么事情是我现在不可以做但之前可以做的?我现在所采取的行动是否产生了和之前不同的结果?
  2)留意用于描述正在发生事情的言辞,如"当……的时候"(While)、"当系统正在导入数据的时候……"、"当账户被冻结的时候……"
  3)每个状态都由事件所触发,认出状态可回过头找出触发事件,反之亦然
   ... ...
   查看全文内容,请点击下载:http://www.51testing.com/html/09/n-3710809.html
  步骤四:状态机Review
  在上面三步做完之后,就形成了一个状态机。但是,状态机的正确性,完整性是否可以得到保证呢?状态机的绘制是否符合规范呢?这些都需要通过人工或者工具的方式进行review。 
  以腾讯地图APP的收藏夹模块为例,我们尝试对其进行状态机建模。
  1、列举研究对象的各种状态。收藏夹功能模块包含的对象比较简单,就是收藏夹页,这个页面包含了以下六个状态:
  1)未登录/无数据态
  2)未登录/有数据态
  3)微信登录/同步态
  4)微信登录/未同步态
  5)QQ登录/同步态
  6)QQ登录/未同步态
  2、列举各个状态之间的转换,确定各个转换的事件。
  从收藏夹需求中,我们不难得出收藏夹六个状态之间的转换关系如下:
  1)在状态1添加数据,进入状态2
  2)在状态2修改数据,保持状态2;
  3)在状态2将数据全部删除,进入状态1
  4)在状态1进行微信登录,进入状态3
  5)在状态1进行QQ登录,进入状态5
  6)在状态2进行微信登录,进入状态4
  7)在状态2进行QQ登录,进入状态6
   ... ...
   查看全文内容,请点击下载:http://www.51testing.com/html/09/n-3710809.html
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号