用FSM写Case,玩过没?

  一、引言

  测试工程师小新一是一名安卓客户端测试工程师,对于安卓客户端的功能测试、自动化测试和性能测试方面都有着非常丰富的经验。最近小新一被通知负责某二手交易APP的功能测试,在初步了解了该APP后,小新一皱起了眉头。

  该APP虽然看起来功能简单,只是提供了一个买家和卖家的交易沟通平台,但是其中涉及到了多个实体的状态变迁,如果只是对于需求进行测试用例设计的话,很难保证所有的功能路径都被覆盖了,而且测试用例对于路径的覆盖无法区分优先级。这样的测试用例是远远不能保证到产品的质量的。

  针对这个情况,小新一和测试分析小组负责人锅仔进行了一次深入的沟通,在听完小新一对于测试任务的描述后,锅仔提出了使用基于状态的测试方法来完成对于该APP的测试。

  那么什么是状态机呢?什么又是基于状态的测试呢?怎么使用基于状态的测试呢?基于状态的测试适用于什么情况呢?在使用状态机的时候需要注意哪些事项呢?如果你对这些问题还存有疑问,那么请看官继续往下看,和小新一一起,学习基于状态的测试方法。

  二、基于状态的测试

  2.1定义

  基于状态的测试是一种基于模型的测试方法,作为黑盒测试设计技术中的一种,常被用于事件驱动的系统中。基于状态的测试核心思路是通过遍历系统所有的状态转换迁移,来保证整个系统功能的正常。

  2.2状态机

  顾名思义,基于状态机的测试,其核心模型就是状态机,也叫状态图。状态机的组成其实比较简单,要素大致有三个:输入,输出,还有状态。输入和输出比较容易理解,那么什么叫做状态呢?状态就是对象生命期中的条件或情况,在这种状态中,对象满足某种条件,执行某种活动,或者等待某种事件。

  在基于状态的测试中,状态机的准确度直接决定了测试效果,所以状态机的绘制是非常重要的一环,我们可以通过以下三步来分析如何绘制状态机:

  步骤一:列出研究对象拥有的各种状态

  通过启发式的探索来发现系统的状态:

  1)通过三个简单问题发现状态:有没有什么事情是我现在可以做但之前不可以做的?有没有什么事情是我现在不可以做但之前可以做的?我现在所采取的行动是否产生了和之前不同的结果?

  2)留意用于描述正在发生事情的言辞,如"当……的时候"(While)、"当系统正在导入数据的时候……"、"当账户被冻结的时候……"

  3)每个状态都由事件所触发,认出状态可回过头找出触发事件,反之亦然

   ... ...

   查看全文内容,请点击下载:《51测试天地》原创测试文章系列(四十二)

时间: 2024-10-23 20:05:32

用FSM写Case,玩过没?的相关文章

微信商城开发系列第四篇 不写代码玩转微信公众号

本系列文章属作者原创文章,请尊重作者的劳动成果,转载请注明出处:walkingmanc的专栏 , 谢谢! 同时欢迎大家加入微信商城开发QQ群:364072602,共同探讨进步.  为什么叫不写代码玩转微信公众号呢? 我们大家都知道,微信公众号有两种模式,一种是编辑模式,一种是开发模式.所谓的不写代码玩转微信公众号,其实就是在编辑模式下如何使用微信公众号的意思,呵呵,是不是有种恍然大悟的感觉. 其实,如果你关注的微信公众号比较多的话,你会发现有很多有名的公众号,它们没有菜单,每天都会发布4到5篇文

c# 写着玩的,两个Task并发,一个写队列一个读队列的异常情况

class Program { class TestEnqueue { static Queue<string> str = new Queue<string>(); public static void AddEnqueue() { for (int i = 0; i < 10; i++) { string s= i.ToString(); Console.WriteLine("Task1 now runing"); str.Enqueue(s); }

关于双重循环的简单应用——打印菱形(没事写的玩的,纯属娱乐)

public class LingXing { public static void print(int n){ int i = 0; int j = 0; for(i=0; i<n; i++){//前四行 for(j=0; j<n+i;j++){ if(j < n-i-1) System.out.print(" "); else System.out.print("*"); } System.out.println(); } for(i=1; i

Onblur事件里面写Focus()方法,JS没效果的处理方法

<input id="Text1" type="text" onblur="check(this);" /> <script type="text/javascript"> function check(obj) { $("#Text1").focus(); } </script> 直接在onblur事件里面写foucs事件,让输入框有鼠标焦点.但是没有效果. 经过查找资

骚骚的CRT,你玩过没

今天朋友发了段命令给我: PS1="\[\e[35;33m\][\[\e[35;33m\]\u\[\e[35;35m\]@\h \[\e[35;35m\]\w\[\e[35m\]]\\$ " 他叫我到命令行跑一下,然后,我就骚了一整天.算是复习了一下之前学的不是很好的环境变量吧. 可惜转义序列没有学过,不过改改数字换换颜色还是搞得来的, 在这里30对应黑色,31对应红色,32对应绿色,33对应yellow,34对应蓝色,35对应洋红,36对应青色,37对应白色. 另外还有很骚的操作,在

自己写着玩的一个天气APP

打开的界面: 向上滑动,进入主界面: 省份界面: 城市界面: 加载天气界面: 显示天气界面: 侧滑,显示地区,然后根据天气来显示一首诗句(晴,多云,雪,雨什么的): 第一次启动App的时候才会加载数据. 首先进去到省份界面,然后根据省份的城市绘制城市页面,点击了城市后,找数据库里面的城市编号,补全URL去爬取天气数据. 然后更新界面三的UI. 比较综合的一个APP,用了滑动相关的东西,自定义ListView,自定义字体,访问网络,爬虫(天气数据不是用的API,是我自己网上爬的),侧滑,数据库(不

自己写着玩

1 #include "stdafx.h" 2 3 int APIENTRY WinMain(HINSTANCE hInstance, 4 HINSTANCE hPrevInstance, 5 LPSTR lpCmdLine, 6 int nCmdShow) 7 { 8 // TODO: Place code here. 9 int ret; 10 ret=MessageBox(NULL,TEXT("你是好人吗?"),TEXT("询问对话框"),

阿里云抢月饼代码实验,自己写着玩的

阿里4名工程师因刷月饼被开除.软件抢票.优惠秒杀...各种抢. 但是我还不知道怎么抢,所以我就模拟了一下抢月饼的流程. ps:自己不是专业前端,纯属娱乐!!! 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>阿里云抢月饼代码实验</title> 6 <script src="jquery-1.11.3.min

java会话管理之Cookie基础(写着玩)

1. Cookie 存储在客户端 2. 创建cookie Cookie c = new Cookie("name", "value"); 3. 添加cookie response.addCookie(c); 4. 接收cookie Cookies[] cookies = request.getCookies(); 5. for循环遍历 if (cookies != null) { for (Cookie cookie : cookies) { String name