场景法设计测试用例

在面向对象的软件开发中,事件触发机制是编程中经常遇到的。

 (一)场景法原理

现在的软件几乎都是用事件触发来控制流程的。像GUI软件、游戏等。事件触发时的情景形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。这种在软件设计方面的思想可以引入到软件测试中,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。

在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确流程,那么我们把这个称为该软件的基本流;而凡是出现故障或缺陷的过程,就用备选流加以标注,这样的话,备选流就可以是从基本流来的,或是由备选流中引出的。所以在进行图示的时候,就会发现每个事件流的颜色是不同的。

基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。

    

 

                             

在这个图中,有一个基本流和四个备选流。

每个经过用例的可能路径,可以确定不同的用例场景。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:

场景 1 基本流

场景 2 基本流 备选流 1

场景 3 基本流 备选流 1 备选流 2

场景 4 基本流 备选流 3

场景 5 基本流 备选流 3 备选流 1

场景 6 基本流 备选流 3 备选流 1 备选流 2

场景 7 基本流 备选流 4

场景 8 基本流 备选流 3 备选流 4

下面是场景法的基本设计步骤:

  • 根据说明,描述出程序的基本流及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

(二)场景法例子

 1、在线购物系统

我们都在当当网或china-pub华章网上书店都订购过书籍,整个订购过程为:用户登录到网站后,进行书籍的选择,当选好自己心仪的书籍后进行订购,这时把所需图书放进购物车,等进行结帐的时候,用户需要登录自己注册的帐号,登录成功后,进行结帐并生成订单,整个购物过程结束。

那么我们通过以上的描述,从中确定哪是基本流,哪些是备选流:

 

 基本流

用户登录到网站,书籍的选择,进行订购,把所需图书放进购物车,等进行结帐的时候,登录自己的帐号,登录成功后,生成订单

备选流1

帐号不存在

备选流2

帐号错误

备选流3

密码错误

备选流4

无选购书籍

备选流x

退出系统

 

    根据基本流和备选流来确定场景:

 

场景1-购物成功

基本流

 

场景2-帐号不存在

基本流

备选流1

场景3-帐号错误

基本流

备选流2

场景4-密码错误

基本流

备选流3

场景5-无选购书籍

基本流

备选流4

我们来设计用例

对于每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。

下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。

本例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。

通过从确定执行用例场景所需的数据元素入手构建矩阵。然后,对于每个场景,至少要确定包含执行场景所需的适当条件的测试用例。例如,在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。

  

测试用例ID

场景/条件

帐号

密码

选购书籍

预期结果

1

场景1:购物成功

V

V

V

成功购物

2

场景2:帐号不存在

I

n/a

n/a

提示帐号不存在

3

场景3:帐号错误

I

V

n/a

提示帐号错误,返回基本流步骤2

4

场景4:密码错误

V

I

n/a

提示密码错误,返回基本流步骤3

5

场景5:无选购书籍

V

V

I

提示选购书籍,返回基本流步骤5

 

我们看到以上表中,是把每个场景成立的条件进行了分析,基本上已经明确了测试用例的数量,现在只要把真实数据填充上,那么整个测试用例就完成了。

  

测试用例ID

场景/条件

帐号

密码

选购书籍

预期结果

1

场景1:购物成功

xu

123456

《书》

成功购物

2

场景2:帐号不存在

zhang

n/a

n/a

提示帐号不存在

3

场景3:帐号错误

zhou

123456

n/a

提示帐号错误,返回基本流步骤2

4

场景4:密码错误

xu

123$%^

n/a

提示密码错误,返回基本流步骤3

5

场景5:无选购书籍

xu

123456

提示选购书籍,返回基本流步骤5

转载于:https://www.cnblogs.com/lixy-88428977/p/9546302.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JQuery让input从disabled变成enabled

设置input框可用:0.document.getElementById("removeButton").disabled false; //普通Js写法 1.$("#input").attr("disabled",true) 2.$("#input").removeAttr("disabled") 3.$("#input").attr(&q…

python中range函数是什么意思_python里range是什么

python range() 函数可创建一个整数列表,一般用在 for 循环中。函数语法(推荐学习:Python视频教程)range(start, stop[, step]) 参数说明: start: 计数从 start 开始。默认是从 0 开始。例如range(5&#x…

android 7.0编译报错,编译android7.0 sdk错误解决方法

编译时最后报错:SDK: warning: including GNU target out/target/product/generic/system/lib/libext2fs.so SDK: warning: including GNU target out/target/product/generic/system/lib/libiprouteutil.soSDK: warning: including GNU target out/target/product/…

为什么我喜欢Spring bean别名

Spring框架被广泛用作依赖项注入容器,这是有充分理由的。 首先,它促进了集成测试,并赋予了我们自定义Bean创建和初始化功能的能力(例如Autowired用于List类型 )。 但是还有一个非常有用的功能,可能会被忽略…

SYS.AUD$无法扩容导致无法登录的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/19068663昨天同事说有个测试库无法登录了,用PLSQL Developer登陆后提示: ERROR: ORA-00604: error occurred at recursive SQL…

Jquery——hover与toggle

hover方法的语法结构为&#xff1a;hover&#xff08;enter&#xff0c;leave&#xff09;hover()当鼠标移动到元素上时&#xff0c;会触发第一个方法&#xff0c;当鼠标移开的时候会触发第二个方法复制代码<html><head><title>测试用</title><scri…

uoj#351. 新年的叶子(概率期望)

传送门 数学还是太差了&#xff0c;想了半天都没想出来 首先有一个定理&#xff0c;如果直径&#xff08;这里考虑经过的点数&#xff09;为奇数&#xff0c;所有直径有同一个中点&#xff0c;如果直径为偶数&#xff0c;所有直径有同一条最中间的边。这个可以用反证法&#xf…

python中mainloop添加背景_Python实例讲解 - tkinter canvas (设置背景图片及文字)

Python实例讲解 -- tkinter canvas (设置背景图片及文字) 先来一个绘图&#xff1a; from Tkinter import * master Tk() w Canvas(master, width200, height100) w.pack() w.create_line(0, 0, 200, 100) w.create_line(0, 100, 200, 0, fill"red", dash(4, 4)) w…

android高德地图搜索地址,地点/周边搜索-Android平台-开发指南-高德地图车机版 | 高德地图API...

关键字搜索第三方通过该接口可传入关键字信息给auto&#xff0c;调起auto执行关键字搜索并跳转到搜索结果展现界面&#xff0c;官网版本都可支持参数说明参数说明是否必填类型ActionAUTONAVI_STANDARD_BROADCAST_RECV是stringKEY_TYPE协议ID:10036是intSOURCE_APP第三方应用名称…

项目学生:业务层

这是Project Student的一部分。 其他帖子包括带有Jersey的Webservice Client&#xff0c;带有Jersey的 Webservice Server和带有Spring Data的Persistence 。 RESTful Webapp洋葱的第三层是业务层。 这就是应用程序的精髓所在–编写良好的持久性和Web服务层受到约束&#xff0…

setTimeout和setInterval的区别

setTimeout和setInterval的区别javascript都是以单线程的方式运行于浏览器的javascript引擎中的, setTimeout和setInterval的作用只是把你要执行的代码在你设定的一个时间点插入js引擎维护的一个代码队列中。setTimeout 定时&#xff1b;仅执行一次;和window.clearTimeout一起使…

Luogu 3626 [APIO2009]会议中心

很优美的解法。 推荐大佬博客 如果没有保证字典序最小这一个要求&#xff0c;这题就是一个水题了&#xff0c;但是要保证字典序最小&#xff0c;然后我就不会了…… 如果一条线段能放入一个区间$[l, r]$并且不影响最优答案&#xff0c;那么对于这条线段$[l, r]$&#xff0c;设$…

python编程求导数_面向对象编程 —— java实现函数求导

首先声明一点&#xff0c;本文主要介绍的是面向对象&#xff08;OO&#xff09;的思想&#xff0c;顺便谈下函数式编程&#xff0c;而不是教你如何准确地、科学地用java求出函数在一点的导数。 一、引子 defd(f) :defcalc(x) : dx 0.000001 #表示无穷小的Δx return (f(xdx) - …

listitem android,android-为contextmenu标识listitem的ID

我有一个扩展活动的视图. ListView将显示许多列表项.当用户长按时,我想向他们显示一个上下文菜单,允许他们选择编辑,删除等…,然后标识被选为要执行操作的项目的列表项.在onCreate中,我有&#xff1a;listView.setAdapter(adapter);listView.setOnItemClickListener(onListClic…

JUnit理论简介

您读过数学理论吗&#xff1f; 它通常读取如下内容&#xff1a; 对于所有a&#xff0c;b> 0满足以下条件&#xff1a;a b> a和a b> b 通常&#xff0c;这些语句更难以理解。 这种陈述有一些有趣之处&#xff1a;它适用于相当大&#xff08;在这种情况下为无限&a…

基础类

/*_________________________基础类 构造&#xff1a;独立 原型&#xff1a;共享设计人&#xff1a;杨秀徐 2013-8-1_________________________*///1、结构(function (i) { //参数作为对外暴露的对象var o { }; //对象直接量、实例…

BZOJ5093图的价值(斯特林数)

题目描述 “简单无向图”是指无重边、无自环的无向图&#xff08;不一定连通&#xff09;。一个带标号的图的价值定义为每个点度数的k次方的和。给定n和k&#xff0c;请计算所有n个点的带标号的简单无向图的价值之和。因为答案很大&#xff0c;请对998244353取模输出。题解因为…

重写override

不可重写私有方法。 不可重写非静态的方法&#xff0c;虽然编译器不会报错&#xff0c;但是得不到预期的结果。 可以通过重写的形式对父类的功能进行重新定义&#xff0c;比如&#xff1a;对功能进行修改或者进行升级时。 class BaseAction {public void showMsg(){System.out.…

python程序写诗_用Python作诗,生活仍有诗和远方

原标题&#xff1a;用Python作诗&#xff0c;生活仍有诗和远方 报 名 来源&#xff1a;TheodoreXu链接&#xff1a; https://segmentfault.com/a/1190000013154329 常听说&#xff0c;现在的代码&#xff0c;就和唐朝的诗一样重要。 可对我们来说&#xff0c;写几行代码没什么&…

华为鸿蒙手机beta版,鸿蒙2.0 Beta手机版来了!明年将全面支持华为手机

读创/深圳商报记者陈 姝备受关注的华为鸿蒙操作系统(HarmonyOS&#xff0c;以下简称鸿蒙)有了新进展。华为消费者业务软件部总裁王成录日前透露&#xff0c;将于12月16日在北京发布鸿蒙2.0手机开发者Beta版本。王成录在12月14日发微博称&#xff1a;“HarmonyOS正沿着我们在HDC…