实战案例:场景测试之ATM机取款业务测试

news2024/11/19 11:26:32

本期,我们通过经典案例——ATM机的操作,来为大家详细说说如何撰写对应的测试用例。

案例

在我们日常生活中,ATM机是个大家都非常熟悉的事物。银行为例提高工作效率,方便客户随时办理基础的储蓄和提现业务,于是,ATM机就诞生了。我们都知道,所谓用户取款业务,就是指为用户提供插卡、校验和取款操作的全过程。那么,围绕用户取款业务,我们应该如何为之设计测试步骤呢?

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

B站封神的接口测试教程,30天练完70个项目实战(含自动化测试、性能测试),学完即就业,永久白嫖!

解析

在这一场景下,我们首先需要做的,就是构造基本流和备选流。详情如下:

1)基本流

对于ATM机来说,它的基本流的初始状态是:荧幕出现欢迎页面,表示系统已经准备就绪,可以开始自主操作。接下来,它的业务处理流程基本如下:

① 插卡:用户将银行卡插入ATM机的卡槽;

② 卡校验:系统读取被插卡的账户代码,判断该卡是否为本系统可接受的卡。

在基本流中,插卡校验顺利通过后,即表示这是一张系统可以识别接受的ATM卡。因此,此处对应第1个校验点。

③ 密码输入:系统自动读取卡的账户,获取其预设密码,并要求用户输入6位数字取款密码。

④ 密码校验:系统根据卡账户的预设密码,并与用户输入的密码比较,判断二者是否一致。

对基本流而言,输入的密码正确,表示可接受该银行卡接受后续操作。所以,此处对应第2个校验点。

⑤ 取款交易选择:基于我们是针对用户取款业务做的场景测试,因此,我们将在这一测试处,简化操作流程。默认我们直接选择取款交易,且该银行卡处于活期账户状态。在此处,我们暂时忽略系统还支持存款、查询余额、修改密码等其他操作,并忽略银行卡可能属于定期、冻结账户等状态;

⑥ 取款金额设置:系统要求用户输入要取款的金额数。注意,取款的金额应为50的整数倍,且应受到数目上的各种限制;

⑦ 取款校验:系统将账户、密码、交易类型(本例为“取款”交易)及金额数作为一笔交易发送给银行系统,启动校验过程。

对于基本流而言,系统处于联机状态,对用户的授权请求予以答复,且批准完成取款,并更新账户余额。此处对应第3个校验点。

⑧ 出钞:系统从现金槽中提供现金钞票。

⑨ 凭条打印选择:一般在处理完成一次事务后,系统会再次提示选择交易类型,为了简化流程,本案例中我们暂且忽略这个步骤。而是认为完成交易后,直接提示是否进入后续交易凭条打印环节。

对于基本流而言,用户选择打印交易凭条。此处对应第4个校验点。

⑩ 提供交易凭条:系统从ATM机的小票卡槽中提供交易凭条,并更新ATM机内部记录。

⑪ 退卡:系统返还用户的ATM卡。

用例至此结束,这时ATM机再次回到准备就绪状态。

2)备选流

基本流中得到4个关键校验点如下:

校验点1:对应步骤②,对卡的有效性进行校验,判断卡是否有效;

校验点2:对应步骤④,对用户输入的密码进行校验,判断输入的密码是否匹配预设密码;

校验点3:对应步骤⑦,对输入的取款金额进行校验,判断取款金额设置是否有效;

校验点4:对应步骤⑨,对凭条打印进行选择,判断是否需要打印交易凭条。

图片

根据上述4个校验点,我们可以分别得到各个校验点的备选流。对此,我们可以做出如下的分析判断:

① 备选流1:卡错误

在基本流步骤②处触发,在校验ATM卡时,发现该卡无效,则应提示无效卡并将卡退回。退回后,系统回到准备就绪状态,本用例终止。

② 备选流2:密码错误

在基本流步骤④处触发,校验密码时有3次输入密码的机会,当第一次或第二次密码输入错误后,仍有继续输入密码的机会,则系统提示密码错误,要求用户再次输入密码,系统返回密码输入状态,在步骤③处重新加入基本流。

③ 备选流3:密码失败

该备选流仍在基本流步骤④处触发,校验密码时,当密码第3次输入错误后不再有输入机会,此时系统提示密码失败,并直接吞掉用户的ATM卡,并提示用户到银行柜台办理相关取卡事宜,系统返回准备就绪状态,本用例终止。

值得我们注意的是,备选流2、3是由相同事件触发的(密码输入错误),区别只是在于触发次数问题。多次触发后,将导致系统产生不同的处理结果。这与程序执行中的循环结构,其实是非常类似的。

④ 备选流4:输入金额错误

在基本流步骤⑦处触发,校验用户输入的取款金额时失败,禁止取款,要求用户重新输入取款金额,系统返回金额输入状态,在步骤⑥处重新加入基本流。

这里需要注意的是,取款金额错误可分多种情况。包括:取款账户的余额不足;金额格式错误;ATM机现金不足;达到账户单次取款的最大金额等等。但是,机智的小伙伴可能发现了,我们比昂没有针对所有可能出现的错误情况,分别构建不同的备选流,这是为什么呢?感兴趣的小伙伴,可以在留言区告诉小编你的答案。

⑤ 备选流5:不打印凭条

在基本流步骤⑨处触发,选择是否打印交易凭条时选择不打印,则直接退还用户的ATM卡。

小结:我们通过上述所有的基本流与备选流,可以得出一张清晰的画像,如下图:

图片

值得一提的是,在卡密码校验处,一旦用户3次输入密码错误,系统将会把用户的卡没收。之后,ATM机仍会回到系统欢迎画面。这似乎应从基本流的退出状态来结束?但事实上,由于此处包含了一个吞卡的动作,因此,与备选流1和备选流5的执行结果不完全一致。所以,备选流3的执行结果是不同于备选流1和备选流5的。

场景设计

根据取款业务的基本流和5个备选流得到的场景集合如下:

场景1(取款成功,且打印凭条):基本流;

场景2(卡错误):基本流+备选流1;

场景3(密码错误):基本流+备选流2;

场景4(密码失败):基本流+备选流3;

场景5(取款金额错误):基本流+备选流4;

场景6(取款成功,不打印凭条):基本流+备选流5。

测试用例设计

虽然每个场景对应系统业务流程(从开始到结束状态)的一系列执行过程,但实质上,它仍然是对应测试用例的一组输入和预期输出。因此,对应每个场景可设计一个或多个测试用例。

比如:

(1)根据某场景所包含的执行流程,分析出系统应满足的所有输入条件和预期输出;

(2)当场景中包含备选流时,应确定触发该备选流执行的输入条件,并予以标记。

由此,我们可以得出如下结论:

(“V”表示该条件必须有效才可以执行该用例;“I”表示其是触发对应某个备选流的条件;“N/A”表示此测试用例中不需要设置该输入条件。)

图片

为了保证覆盖准确率,我们可以通过以下途径来判断:

(1)应用独立路径测试的策略,每条独立路径对应一个场景;

(2)检查测试用例表,查看是否所有输入都取到“I”的情况,即曾经作为测试用例的触发条件,只要存在某条件从未取到“I”,就证明测试用例存在漏洞,未覆盖所有的场景。

另外,我们还应注意测试数据的设计。对于测试用例来说,我们可以继续根据边界值、等价划分等方法,为它们一一设计具体的测试数据。举个例子,假设正确密码是8个8,那么,我们会得到如下测试结果:

图片

写在最后

通过上述内容,相信大家对场景测试的内容有了一定的了解,希望大家在实际工作中,也能按照上述方法一步一步去做,通过多次实践,对场景测试有更加深刻的认识。祝大家在测试的道路上越走越顺畅~

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

Qt5开发及实例V2.0-第二十章-Qt.QML动画特效

Qt5开发及实例V2.0-第二十章-Qt.QML动画特效 第20章 QML动画特效20.1 QML动画元素20.1.1 PropertyAnimation元素20.1.2 其他动画元素20.1.3 Animator元素 20.2 动画流UI界面20.2.1 状态和切换 20.3 图像特效20.3.1 3D旋转20.3.2 色彩处理 20.4 Qt 5.5(Qt Quick Extr…

web前端float布局、flex布局

1、float布局 <!DOCTYPE html> <html> <head><title>Login Page</title><style>body {font-family: Arial, sans-serif;background-color: #f3f3f3;}.container {max-width: 400px;margin: 0 auto;padding: 40px;background-color: #fff;…

变压器(电抗器) 红外测温作业指导书

1 范围 本标准化作业指导书规定了变压器(电抗器)红外测温(一般检测)工作的准备工作、测温流程图、 现场操作方法、测温周期和标准、测温记录管理等要求。 本标准化作业指导书适用于指导变压器(电抗器)红外测温的一般性检测工作。 2 规范性引用文件 下列文件对于本文件的应用…

我们为什么要做一名系统管理员?

我们为秩序而战&#xff0c;而服务器大叔则需要你成为系统管理员。这是个很好的机会&#xff0c;因为你已经管理过你有的那些系统&#xff0c;你本可以不需酬劳地管理那些日逐一日地运行的系统。但还是有一些面试官&#xff0c;愿意拿一笔很不错的薪水来找一些人去管理他们的系…

最频繁被问到的SQL面试题

面试感叹失败的原因可能有很多&#xff0c;而做成的道路只有⼀条&#xff0c;那就是不断积累。纯手工的8291字的SQL面试题总结分享给初学者&#xff0c;俗称八股文&#xff0c;期待对新手有所帮助。 窗口函数题 窗口函数其实就是根据当前数据, 计算其在所在的组中的统计数据。…

计算机毕业设计 基于SpringBoot的4S店车辆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Latex中使用package:authblk定义作者署名和单位

latex 一般情况下要自定义作者环境&#xff0c;因为自带的环境效果特别差&#xff0c; 所需的宏包一般使用 authblk。 文档说明网址&#xff1a; http://mirror.lzu.edu.cn/CTAN/macros/latex/contrib/preprint/authblk.pdf 非常简单明了&#xff0c;使用 \thanks 定义通讯作…

Python:Django框架的Hello wrold示例

Django是Python的目前很常用的web框架&#xff0c;遵循MVC设计模式。 以下介绍如何安装Django框架&#xff0c;并生成最简单的项目&#xff0c;输出Hello world。(开发工具VScode) 一、安装Django 在VScode终端控制台执行以下指令安装Django python install django 如果要查…

【树上莫队C++】Count on Tree II(欧拉序降维,树链剖分求最近共同祖先LCA)

》》》算法竞赛 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在算法竞赛学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff1a;转载…

【观察】数字化转型的“下半场”,华为加速行业智能化升级

过去几年数字化转型席卷全球&#xff0c;随着新技术的广泛应用&#xff0c;新的机会和价值正在不断被发现和创造。从某种程度上说&#xff0c;数字化转型不再是“可选项”&#xff0c;而变成了“必选项”。 目前&#xff0c;已经有超过170多个国家和地区制定了各自的数字化相关…

华为云云耀云服务器L实例评测:您值得信赖的云端伙伴

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

SAP PO运维(一):系统概览异常处理

打开SAP PIPO Netweaver Administration界面,系统概览下显示异常: 参考SAP note: 2577844 - AS Java Monitoring and Logging parametrization best practice service/protectedwebmethods = SDEFAULT -GetVersionInfo -GetAccessPointList -ListLogFiles -ReadLogFile -Para…

9.基于粤嵌gec6818开发板小游戏2048的算法实现

2048源码&#xff1a; 感兴趣的可以去了解一下2048优化算法&#xff1a; 基于蒙特卡罗树搜索的_2048_游戏优化算法_刘子正 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/mman.h> #incl…

modbusRTU【codesys】

先熟悉功能码&#xff1a; 1添加主站&#xff1a; 2添加从站&#xff1a; 3从站操作&#xff1a;【写】 注&#xff1a; 厂家屏蔽了 5和6 【不能写 单线圈和单寄存器】 映射好【站1Q】之后&#xff0c;就不需要再管其他设置。 只需要再程序里赋值【站1Q】的输出值就行 比如 站…

爬虫使用Selenium生成Cookie

在爬虫的世界中&#xff0c;有时候我们需要模拟登录来获取特定网站的数据&#xff0c;而使用Selenium登录并生成Cookie是一种常见且有效的方法。本文将为你介绍如何使用Selenium进行登录&#xff0c;并生成Cookie以便后续的爬取操作。让我们一起探索吧&#xff01; 一、Seleni…

【数据结构】七大排序算法详解

目录 ♫什么是排序 ♪排序的概念 ♪排序的稳定性 ♪排序的分类 ♪常见的排序算法 ♫直接插入排序 ♪基本思想 ♪算法实现 ♪算法稳定性 ♪时间复杂度 ♪空间复杂度 ♫希尔排序 ♪基本思想 ♪算法实现 ♪算法稳定性 ♪时间复杂度 ♪空间复杂度 ♫直接选择排序 ♪基本思想 ♪算法…

基于51单片机简易计算器仿真设计(proteus仿真+程序+原理图+PCB+设计报告+讲解视频)

基于51单片机简易计算器仿真设计&#xff08;proteus仿真程序原理图PCB设计报告讲解视频&#xff09; 讲解视频1.1 功能要求1.2 仿真图&#xff1a;1.3 原理图&#xff1a;1.4 PCB&#xff1a;1.5 源程序&#xff1a;1.6设计报告&#xff1a;资料清单&&下载链接&#x…

C/C++统计满足条件的4位数个数 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C统计满足条件的4位数个数 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C统计满足条件的4位数个数 2019年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定若干…

搭建安信可小安派Windows 开发环境

搭建小安派Windows 开发环境 Ai-Pi-Eyes 系列是安信可开源团队专门为Ai-M61-32S设计的开发板&#xff0c;支持WiFi6、BLE5.3。所搭载的Ai-M61-32S 模组具有丰富的外设接口&#xff0c;具体包括 DVP、MJPEG、Dispaly、AudioCodec、USB2.0、SDU、以太网 (EMAC)、SD/MMC(SDH)、SP…