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

现在的软件几乎都是用事件触发来控制流程的。象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,一经查实,立即删除!

相关文章

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文件即可,不需要修改源代码,这样更加…

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…

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

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

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

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

Jmeter连接Mysql

1、将mysql-connector-java-5.1.7-bin.jar放入Jmeter安装目录的bin文件夹中 2、在顶层目录<测试计划>中加载驱动 3、添加JDBC Connection Configuration 4、配置数据库信息 1&#xff09;Variable Name不能为空 2&#xff09;DataBase URL 格式为&#xff1a;jdbc:mysql:…

胃net的放大内镜_李锐:内镜下的早癌诊断

写在前面&#xff1a;这是一篇很专业的文章&#xff0c;因为很多术语对于大多数朋友来说看的不是很明白。简单讲&#xff0c;这是让消化内镜医生看的&#xff0c;说的是怎么样才能发现更多的早癌。这里需要说明一下&#xff0c;很容易造成误解&#xff1a;早癌就在那里&#xf…

单线程多线程_面试系列 redis为什么快amp;单线程amp;多线程

redis为什么这么快C语言实现&#xff0c;执行速度快纯内存操作&#xff0c;数据读写在内存中&#xff0c;异步持久化到磁盘丰富和高效的数据结构基于非阻塞的I/O多路复用机制单线程避免了上下文切换Redis单线程redis单线程的核心就是它基于一个假设&#xff1a;它在内存中执行的…

c语言float二进制输出代码_C语言学习笔记——学前知识概述

将我大一学习C语言时做的笔记拿来与大家分享&#xff0c;内容比较浅显&#xff0c;比较适合初学者&#xff0c;如有错误还请见谅&#xff0c;提出改正&#xff0c;谢谢&#xff01;前言&#xff1a;此C语言笔记是本人在自学时记录的一些重点或初学者常犯的错误&#xff0c;希望…

[Codevs] 1081 线段树练习 2 ----“分块!”

1081 线段树练习 2 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作 1&#xff1a;给区间[a,b]的所有数都增加X 2&#xff1a;询问第i个数是什么&#xff1f; 输入描述 Input Description第一行一个正整数n&#…

[Codevs] 1082 线段树练习3

1082 线段树练习 3 时间限制: 3 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作&#xff1a; 1&#xff1a;给区间[a,b]的所有数增加X 2&#xff1a;询问区间[a,b]的数的和。 输入描述 Input Description第一行一个正整数n&a…

双摄测距原理_双摄像头系列原理深度剖析

http://www.dzsc.com/data/2016-7-13/110171.html如之前文章介绍&#xff0c;双摄像头的应用主要分为&#xff1a;距离相关的应用&#xff0c;光学变焦&#xff0c;暗光补偿以及3D拍摄和建模。每种应用的原理都有些不同&#xff0c;我们就分别介绍一下相关的原理&#xff1a;从…