• 0
  • 0
分享
  • 以ATM为例,讲讲如何写测试用例——软件测试圈
  • 曼倩诙谐 2022-12-19 11:26:24 字数 2870 阅读 6561 收藏 0

  【案例】

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

  【解析】

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

  (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卡。

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

1-1.jpg

  值得一提的是,在卡密码校验处,一旦用户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.jpg

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

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

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

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

1-3.jpg

  写在最后

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



作者:佚名    

来源:http://www.51testing.com/html/89/n-4476589.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、环境搭建1、安装appium(1)首先去网站下载一个appium的exe安装包。官网上的话下载比较慢,可以找资源去下载一下。-----注:这边就是简单的一个安装方式、还有一个比较复杂的,后续我再更新。(2)然后我们直接双击下面的exe安装包进行安装即可。(3)打开appium,可以看到界面如下图所示:这个就是appium已经安装完成了。2、安装安卓模拟器这边我安装的呢是雷电模拟器,这个主要看你们自己装什么都可以,有雷电模拟器、什么逍遥模拟器等等。3、安装PyCharm这个可以安装一个社区版的因为是免费的不需要激活。4、准备待测的APP的安装包打开我们的安卓模拟器,直接将安装包拖进模拟器安装...
            0 0 962
            分享
          • 在使用postman进行接口自动化测试前,需要对postman的基本使用有一定的了解首先,既然是自动化测试,那么我们肯定需要工具 (Postman) 或者代码帮我们直接判断结果是否符合预期。那么在接口测试上,大体就两个思路:判断请求返回的 code 是否符合预期;判断请求返回的内容中是否包含预期的内容(关键字)。接下来我们看看如何利用 Postman 来解决上述的问题,这是三个模拟天气的接口集合,点击扩展按钮,找到RUN,进入这里我们先简单运行一次:发现,运行成功。里面我每个接口都写了两个tests进行校验字段,所以上面一共有6条tests测试点被测试到,并且是成功的每个接口里的tests数据...
            0 0 1047
            分享
          • Fintech概念正受到不少互联网金融公司的热捧,主要是指代那些可用于撕裂传统金融服务方式的高新技术。越来越多的企业开辟了新的部门去研究各种各样能让自己产品增值的科技类产品。尤其是在很多互联网金融公司,业务分析师BA(Business Analyst),又称产品经理受到大家的追捧,虽然身处西二旗等ITer聚集地,但是他们做的工作与金融街上的白领们并无不同,他们是无所不懂的金融达人,顶着各个海外名校金融数学系的Master光环,手持CFA,CPA,FRM,AFP/CFP,CIIA,ACCA等等。既然是在IT公司做需求分析的工作,除了需要出具需求说明书,然后将需求翻译成程序员能够理解的说明文档,不...
            0 1 2360
            分享
          • 前言我曾经在好几个项目里都近乎完整参与过补齐前端测试的工作,也收集到不同项目的同事很多关于前端测试的困惑和痛点,这其中大部分都很相似,我也感同身受,在这篇文章里,我会针对大家和自己常遇到的痛点分享一些自己的经验,如果你也有如下相似的困扰,那希望这篇文章能对你有些帮助~常见问题(排名不分先后):前端测试感觉写起来很复杂,会花很多时间,甚至经常是业务代码时间的好几倍前端测试怎么TDD?测试一些第三方UI控件时,特别难模拟与之的交互有些东西不知道怎么mock,比如时间,浏览器全局变量(window.location,local storage)等测试里准备数据的代码特别长,真正的测试代码很靠后,要翻...
            0 0 1999
            分享
          • 写作背景:最近互联网行业大新闻,员工遭到集体裁员到事件估计大家都听说了,没错,我也在其中,在之前的文章里也有提到过目前就职于外包公司,当然,这么大的动作我们当然逃不过去。接到通知后,大家第一时间纷纷编辑简历,进行网上投递,同时领导也帮忙协调岗位,走内部通道,到这时候可真是不怕技多压身啊,同事A就是很好的例子,当大家都在像热锅上的蚂蚁一样寻找工作大时候,同事A就因为会日语,顺利调岗成功,怎么样后没后悔多学点东西,现在说什么已经为时以晚啦。正好有很多调休假没休,趁着这时候和领导请了假,一方面调整心情,一方面好应聘面试,休假的前两天心情是异样的差,有很多不利的因素:1.处于年末阶段,很多公司处于核算...
            3 0 2625
            分享
      • 51testing软件测试圈微信