测试用例设计方法 - 场景分析法

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

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

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

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

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

场景 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:购物成功VVV成功购物
2场景2:帐号不存在In/an/a提示帐号不存在
3场景3:帐号错误IVn/a提示帐号错误,返回基本流步骤2
4场景4:密码错误VIn/a提示密码错误,返回基本流步骤3
5场景5:无选购书籍VVI提示选购书籍,返回基本流步骤5

 

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

 

测试用例ID场景/条件帐号密码选购书籍预期结果
1场景1:购物成功xu123456

《软件测试艺术》与

《软件测试自动化》

成功购物
2场景2:帐号不存在zhangn/an/a提示帐号不存在
3场景3:帐号错误zhou123456n/a提示帐号错误,返回基本流步骤2
4场景4:密码错误xu123$%^n/a提示密码错误,返回基本流步骤3
5场景5:无选购书籍xu123456提示选购书籍,返回基本流步骤5

转载于:https://www.cnblogs.com/52Test/p/7478197.html

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

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

相关文章

jspx格式手机打开_制作手机浏览器显示格式的HTML页面

最近要推出手机支持访问的HTML页面效果,而这在制作手机页面的过程中状况连连。 主要一下就我制作的工程中所遇的问题说明一下:1. 改掉HTML页面声明:(以往大部分页面都是HTML4.0的声明)  还有很多参数可以配置大家可以google一下2. 关于img标…

Lucene第一讲——概述与入门

一、概述 1.什么是Lucene? Lucene是apache下的一个开源的全文检索引擎工具包。 它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能。 2.能干什么? 主要运用:全文检索 3.全文检…

(一)svn介绍

项目管理中的版本控制问题 通常软件开发由多人协作开发,如果对代码文件、文档等没有进行版本控制,将会出现很多问题: 备份多个版本,占用磁盘空间大解决代码冲突困难容易引发BUG难于恢复至以前正确版本无法进行权限控制项目版本发布困难什么是…

训练不出结果_训练赛惨败SKT?FPX直播透露拿冠军原因!Karsa再谈离开RNG?

都说人逢喜事精神爽,小凤凰拿了世界冠军当然更爽。一回国就开启了快乐直播,人均阴阳怪气,信息量巨大,让我们一起来康康吧!“刘青松赢了装自己很淡定,其实耳机里叫得最大声。”“把林炜翔冠军奖牌给大家抽了…

linux ns级定时器_预热 | 万众期待的单片机、Linux二合一的STM32MP157开发板亮相

STM32mp157 GUI操作体验视频GUI架构简介支持多种应用场景的HMI2.0应用,根据应用的类型将整个UI分为五个大类:多媒体,智能家电,卫生医疗,公共服务,系统。均支持于100ask_stm32mp157_pro硬件开发平台&#x…

Spring加载properties文件的两种方式

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加…

jsp判断json第一位_java 判断字符串是否为json格式

1,import com.fasterxml.jackson.databind.ObjectMapper;ObjectMapper mapper new ObjectMapper();Myclass myclass mapper.readValue(jsonStr , Myclass.class); //这里Myclass是我自己定义的类,里面有一系列的属性字段。jsonStr是需要传入的json参数…

(转)如何使用caffe的MATLAB接口

编译MatCaffe 转自: http://blog.csdn.net/ws_20100/article/details/50525879 使用如下命令编译MatCaffe make all matcaffe 1之后,你可以用以下命令测试MatCaffe: make mattest 1如果你在运行上面命令时,遇到如下错误:libstdc.s…

c++2010修复不了_汽车凹痕太小修复不了?汽车无痕修复是骗局还是技术不行?...

前段时间在网上看到一个推荐搜索说汽车凹痕太小修复不了,又是一个不知道从哪传出来的谣言。只听说过汽车凹陷变形太厉害修复不了的,没听说过凹陷的太小而修复不了的。但是我转念一想,能被搜索推荐说明搜遇到这个问题的人还挺多的,…

ege限制鼠标移动的函数_浅谈函数节流和函数防抖

什么是函数节流和函数防抖?下面本篇文章就来给大家浅谈一下函数节流和函数防抖。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。前言事件的触发权很多时候都属于用户,有些情况下会产生问题:向后台发…

〖Demo〗-- HAproxy配置文件操作

【HAproxy配置文件操作】 要求 1. 根据用户输入输出对应的backend下的server信息2. 可添加backend 和sever信息3. 可修改backend 和sever信息4. 可删除backend 和sever信息5. 操作配置文件前进行备份6 添加server信息时,如果ip已经存在则修改;如果backend不存在则创…

centos调整页面大小_这2种方法都能调整PDF文档的纸张大小

PDF文件大家都很熟悉了,在工作中是经常会遇到的,但是想对PDF文件进行修改和编辑的可能很多人都觉得为难。比如当你在阅读PDF文件时,发现PDF文档的页面尺寸不是自己想要的尺寸,要如何修改PDF的纸张大小呢?以下介绍2种简…

罗小黑用flash做的_中影星美好看罗小黑战记正式定档!

《罗小黑战记》定档的消息一发出,原微博已被转发45000次,大家真是太激动啦~罗小黑官博下热闹非凡在B站也同样壮观原是猫妖的小黑,在盗取宝珠后逃走,但被发现,而化为了一只猫,在街头流浪时,被小白…

An Overview of Cisco IOS Versions and Naming

An Overview of Cisco IOS Versions and Naming http://www.ciscopress.com/articles/article.asp?p2106547 By Sean Wilkins.Article is provided courtesy of Cisco Press.Date: Jun 28, 2013.SaveDiggDel.icio.usPrint Article Information Article Description   Versio…

click事件的累加绑定

click事件的累加绑定,绑定一次点击事件,执行多次。 在页面中为一个元素绑定事件,事件执行后页面未刷新且元素还在,然后你再次点击,元素又被绑定一个点击事件,这样第二次点击就会执行两次,以此类…

ubuntu 查找qt是否安装_Ubuntu Qt 安装教程--快速下载连接(网盘)

做个笔记以便忘了(这个笔记我用到三次了,现在都能记住步骤了,Ubuntu也装了四五次了。折腾。。。)先下载Qt的安装包 .run文件 (三个途径下载)1官方: http://download.qt.io/archive/qt/5.12/5.12…

C# 代理访问页面并获取数据

本来在找IWebDriver使用代理的方法,偶然获知这种的,记录并且共享 1 WebProxy proxyObject new WebProxy("125.31.19.26", 80);//str为IP地址 port为端口号 代理类2 HttpWebRequest Req (HttpWebRequest)WebRequest.Create("http://ip.c…

vscode用鼠标滚轮_前端开发神器 VSCode 使用总结

前端开发神器 VSCode 使用总结VSCode 是微软出品的,基于 Electron 和 TypeScript 的,集成了 git 版本管理和命令行终端,而且开源稳定,插件丰富,再搭配一款 Chrome 浏览器,可以说是前端开发神器了。安装指南…

python3 os_Python3 标准库:os

1.重命名import osos.rename(test.txt,x.txt) #重命名文件或目录imageimport osos.renames(a/123.txt,a/b/h.txt) #递归重命名文件image2.列出目录中的子目录和文件import osfilesos.listdir()for i in files:print(i)输出结果:image3.列出当前目录下的文件和文件夹以及文件夹下…

微信iOS收款到账语音提醒开发总结

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/yYCaPMxHGT9LyRyAPewVWQ 作者:littleliang 一、背景 为了解决小商户老板们在频繁交易中不…