zoukankan      html  css  js  c++  java
  • 场景法测试用例设计详解

    一、定义:

      场景法是通过运用场景来对系统的功能点或业务流程的描述,从而提高测试效果的一种方法。
    场景法一般包含基本流和备用流,从一个流程开始,通过描述经过的路径来确定的过程,经过遍历所有的基本流和备用流来完成整个场景。场景主要包括4种主要的类型:正常的用例场景,
    备选的用例场景,异常的用例场景,假定推测的场景。
    二、基本流备用流:
    <ignore_js_op>
    上图为,用例基本流和备选流(注意:备选流的起止点)
    基本流:采用直黑线表示,是经过用例的最简单的路径(无任何差错,程序从开始直接执行到结束)
    备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如1和3),也可以起源于另一个备选流(如2),或终止用例,不在加入到基本流中(如4);(各种错误情况)
    上图生成的场景如下:
    场景1:基本流
    场景2:基本流  备选流1
    场景3:基本流  备选流1 备选流2
    场景4:基本流  备选流3
    场景5:基本流  备选流3 备选流2
    场景6:基本流  备选流3 备选流2  备选流1
    场景7:基本流  备选流4
    场景8:基本流  备选流3  备选流4
    为什么场景法能如此清晰的描述整个事件?因为,现在的系统基本上都是由事件来触发控制流程的。如:我们申请一个项目,需先提交审批单据,再由部门经理审批,审核通过后由总经理来最终审批,如果部门经理审核不通过,
    就直接退回。每个事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。这一系列的过程我们利用场景法可以清晰的描述清楚。
    三、场景法设计步骤:
    1.根据说明,描述出程序的基本流及各项备选流
    2.根据基本流和各项备选流生成不同的场景
    3.对每一个场景生成相应的[url=]测试用例[/url]
    4.对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
    对于每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。
    下面范例中显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。
    本例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于[url=]数据库[/url]中)以及预期结果。
    通过从确定执行用例场景所需的数据元素入手构建矩阵。然后,对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。例如,在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,
    而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。
    四、场景法设计实例:
    有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
    1.       根据说明,描述出程序的基本流及各项备选流
    基本流:登录网站,选购物品,账号登录,付钱交易,生成订单
    备选流:无账号,账号或密码错误,账号没有钱,账号余额不足 用户退出系统
    2.       根据基本流和各项备选流生成不同的场景
    场景1:登录网站,选购物品,账号登录,无账号
    场景2:登录网站,选购物品,账号登录,账号或密码错误
    场景3:登录网站,选购物品,账号登录,付钱交易,账号没有钱
    场景4:登录网站,选购物品,账号登录,付钱交易,账号余额不足
    场景5:登录网站,选购物品,账号登录,付钱交易,生成订单
    场景6:登录网站,选购物品,账号登录,用户退出系统
    3.       根据场景生成相应的测试用例
      
    测试用例ID
      
      
    场景/条件
      
      
    账号
      
      
    密码
      
      
    余额
      
      
    预期结果
      
      
    1
      
      
    场景1:无账号
      
      
    I
      
      
    n/a
      
      
    n/a
      
      
    提示无账号
      
      
    2
      
      
    场景2:账号或密码错误(账号错误,密码正确)
      
      
    I
      
      
    V
      
      
    n/a
      
      
    提示账号或密码错误重新输入
      
      
    3
      
      
    场景2:账号或密码错误(账号正确,密码错误)
      
      
    V
      
      
    I
      
      
    n/a
      
      
    提示账号或密码错误重新输入
      
      
    4
      
      
    场景3:账号余额不足
      
      
    V
      
      
    V
      
      
    I
      
      
    提示账号余额不足
      
      
    5
      
      
    场景4:账号没有钱
      
      
    V
      
      
    V
      
      
      
      
    提示账号余额不足
      
      
      
      
    场景5:购物成功
      
      
    V
      
      
    V
      
      
    V
      
      
    生成订单
      
      
      
      
    场景6:操作中退出系统
      
      
    V
      
      
    V
      
      
      
      
    用户退出系统
      



    4.       根据上表,设计数据,填入数据

      
    测试用例ID
      
      
    场景/条件
      
      
    账号
      
      
    密码
      
      
    余额
      
      
    预期结果
      
      
    1
      
      
    场景1:无账号
      
      
      
      
    n/a
      
      
    n/a
      
      
    提示无账号
      
      
    2
      
      
    场景2:账号或密码错误(账号错误,密码正确)
      
      
      
      
      
      
    n/a
      
      
    提示账号或密码错误重新输入
      
      
    3
      
      
    场景2:账号或密码错误(账号正确,密码错误)
      
      
    ff
      
      
    I
      
      
    n/a
      
      
    提示账号或密码错误重新输入
      
      
    4
      
      
    场景3:账号余额不足
      
      
    ff
      
      
      
      
    10
      
      
    提示账号余额不足
      
      
    5
      
      
    场景4:账号没有钱
      
      
    ff
      
      
      
      
      
      
    提示账号余额不足
      
      
      
      
    场景5:购物成功
      
      
    ff
      
      
      
      
    500
      
      
    生成订单,余额减少
      
      
      
      
    场景6:操作中退出系统
      
      
    ff
      
      
      
      
      
      
    用户退出系统


    http://www.bcbxhome.com/bcbx/forum.php?mod=viewthread&tid=24&fromuid=27
    (出处: 编测编学软件测试)

  • 相关阅读:
    JavaScript界面传值与前后台互调
    @requestBody注解的使用
    mybatis动态sql中foreach标签的使用
    mybatis动态SQL中的sql片段
    mybatis动态sql中where标签的使用
    mybatis动态sql中的trim标签的使用
    mybatis动态SQL中的set标签的使用
    SQL-join(inner join)、left join、right join、full join
    Oracle-distinct()用法、count(distinct( 字段A || 字段B))是什么意思?distinct多个字段
    Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
  • 原文地址:https://www.cnblogs.com/zihkj/p/12432065.html
Copyright © 2011-2022 走看看