大佬详细讲解:银行核心项目之测试阶段

news2024/11/17 15:59:41

最近有小伙伴留言说「想了解核心系统建设中,冒烟、SIT、UAT、回归测试的重点,如何设计测试案例,或相关的资料推荐等」。

这个话题很笼统,测试这一块儿除了业务测试,还有性能测试、安全测试等;以及不同的角色对案例的要求也是不一样的,比如:行方业务人员喜欢写将交易从头到尾全部跑一遍的案例,而测试公司的人员喜欢写的很细碎等等。

对此,因为没有经过正规的测试方法训练,主要是说说我的个人理解或感受吧。顺带总结了一些最关键的基础知识和朋友的实际经验,分享给大家,让更多人能够找到方向。

1、此文适合人群:

银行从业人员、业务人员、测试人员。

2、此文解决问题:

对刚接触银行业务的测试人员来说,通过学习有助于系统的理解银行系统相关的测试知识,对日后的工作有一定帮助。

3、此文分为四大部分:

一、银行测试的主要任务

二、银行测试的分类和依据

三、银行测试的案例设计

四、银行测试执行要求及准则

1

银行测试的主要任务

银行作为大家的理财顾问,对金钱非常敏感,频繁甚至偶尔出现的软件故障都会打击顾客的信心,如果来个黑客攻击,个人财产受到威胁,银行也必然蒙受损失。所以银行对系统的质量要求非常高,追求功能稳定、性能可靠、安全性高、最终达到客户信任,保证银行和个人的财产的完全。

而保障系统高质量的前提是测试,测试是整个核心项目中非常重要的一个阶段,所以测试人员的角色很重要。就先从测试阶段的主要任务说起。

(1)测试规则编写

测试规则是通过分析需求得出来的,是对原始需求进行分析找到需要测试的要点,是测试工作的第一步。一般由中、高级测试人员编写测试规则,写的越详细越精准,就表明对所测业务越了解,更容易发现系统问题和业务问题,更能把握测试的质量和进度。

若是测试需求分析的不明确,那么测试规则的要点就不清晰,测试案例的编写更是毫无根据。可能会造成时间或资源的浪费、测试工作量评估不准确,导致项目延期。那么,该如何提升需求分析能力?

首先,通过阅读需求文档了解需求的实现背景、了解需求的目的和用户使用的场景,在这过程中遇到疑惑先记下来,与业务多交流从而尽快熟悉业务知识;其次是分析需求的合理性,站在用户或业务的角度进行分析、理解、思考,给需求或开发人员一些设计上的建议,避免被惯性思维束缚;最后,充分利用身边或网络上的学习资源,比如好的博客或公众号,学习前辈的经验并运用到实际工作中去。

我们再回到小标题,关于测试规则的编写,对于初级测试人员来说,前面是模仿,照着有经验的人写出来的案例跟着写。后续加上多学习、多思考、多总结和分享,需求分析能力会有非常大的提升,后面慢慢也就能流畅的编写测试规则了。

测试文档不需要太复杂,直接使用excel编撰就可以了,我们以核心系统存款模块的定期部提交易为例,请看下图:

(2)测试案例编写

早在开发人员在设计和编码的同时,测试人员就已经在不断的细化和调整测试计划,并完成测试案例的编写。测试案例的编写其实就是根据上述的测试规则,细化出具体的测试案例,包括测试目标、测试环境、输入数据、测试步骤、预期结果等。

但关于测试要点细化到什么程度,是一个度的问题,我们要把握好测试点细化的一个度的问题,太粗的测试点没有指导意义,太细的测试点容易让我们纠的太细,忽略整体的测试,反而也起不到一个指导的效果,所以一定要把握好测试点细化的度。那作为新手入门,都会遇到哪些问题呢?

比如,很对人不知道如何开始书写测试案例,但迟迟不敢下手写测试案例的话,又担心影响整体的测试计划因为自己的延误而受影响。对于前怕狼后怕虎的心态,建议是不要顾虑自己的案例好与不好,先写下来;或者是参考以前写好的公共测试案例,甚至直接引用,这样既可以避免一些不必要的时间浪费,但是参考不等于照搬,在引用的同时,也一定要思考本次需求自己特有的测试点。

其次,测试案例都会参加案例评审,有资深测试人员和业务人员进行把关,测试案例中的问题会被发现,评审人都会给每个人修改意见。所以,安下心来写出自己想到的测试案例,这样才能帮助发现问题从而更好地解决。

还有就是,每个人的测试案例都不能说完美全面,都是在不断地评审过程中尽量的做到全面一些,覆盖率高一些。不过老员工毕竟经验和阅历要比小白多,所以在写测试案例的过程中,肯定有一套合适的方法。接下来,我们以手机银行开立定期整存整取为例子,分享一下干货,让所有测试的“巧妇”有米为炊。

(3)测试案例评审

测试案例编写完成后,测试经理就会组织测试案例评审,也就是对测试案例进行检查。时间一般在开发人员将交易或功能送测之前,行方业务或科技的主要干系人都要参与评审,一条一条的过案例,再次确认大家对需求的理解是否一致。测试案例评审是测试流程中极为关键的一环,案例评审何为如此重要?

首先,通过测试案例的评审不仅可以消除产品、开发、测试三方对需求文档理解的偏差,还可以保证测试内部人员,即测试执行者和测试案例设计者在测试质量保障方面保持一致性;

其次,通过测试案例评审,产品和开发可以通过对案例合理性和全面性进行评估,指出案例设计不合理或遗漏之处,以便更好的完善测试案例,提高测试案例的质量。

再者,如果囿于各种限制条件导致开发无法展开技术评审会议,那么在案例评审也可以和开发沟通确认实现方式,关注不同实现方式的测试点,以实现全面测试;

最后,常言道,测试人员是项目的前灯,是一个探路的角色,所谓良医治未病,那么测试人员就应该在项目前期多挖掘潜在的坑,并提醒开发注意,慎防掉坑,同时也降低了bug出现的概率,减少开发测试成本。

所以,因为很多需求的细节无法在需求阶段考虑完全,就会采用反复沟通的方式与相关人员不断细化,一般来说,这样评审会反复三次左右,以便完善案例。后面基本都会因为项目排期太紧或是需求变动次数过于频繁, 而对案例进行选择性的快速评审。

(4)冒烟测试

测试案例评审通过,待开发提交测试以后,测试人员迅速完成一轮“冒烟测试”。冒烟测试的目的是为了确认基本功能是否正常,可以进行后续的正式测试工作,将正式测试未知的风险降至最低,防止bug阻塞导致测试进度阻塞。不过也有项目是评审到一半的时候就会开始冒烟测试,边评审边冒烟。

站在核心开发组的角度,一般在通知测试人员冒烟测试之前,开发组内部会提前进行一些交易的验证,特别是在迁移冒烟测试阶段,各方领导都特别关注,因为迁移冒烟出现的问题直接影响到UAT的开始时间或是能否如期投产。所以基本都是发现如果存在问题,是要求即时解决,马上验证,或是当天内解决,并且会有项目助理持续跟进,逐个确认、收集反馈等。

另外,关于冒烟测试案例的建设,有两点建议:一是测试案例管理员与开发经理沟通确认新增功能点;二是确定原有案例中有哪些在新项目上仍然有效,删除不再适用的测试案例,由此建立一套新的测试案例。

(5)功能评审

在测试人员开始执行测试案例的同时,业务人员会组织一次“功能评审会”或是叫“演示会”,利用测试环境,把可以使用的功能在第一时间展示给相关干系人,更进一步确保做出来的东西就是大家想要的。

(6)测试

接下来,测试人员会做多轮测试,是一个“发现Bug,开发修复,复测,发现新Bug”的循环过程,从第二轮开始就可以叫做“回归测试”,经过多轮测试后,项目会要求行方各用户代表做更详细的UAT。

一般来说,在SIT末或进入UAT初期,是缺陷最多的时候,也是开发人员最难熬的时间段(个人感觉,不知道测试人员在此阶段是啥体会)。

在这段时期会遇到各种问题,比如参数不一致、功能反复修改后仍与需求不一致、打印输出字段不对、版本没管理好导致测试成功的案例出现复测失败、解决一个bug导致出现新的bug、解决时间超期、以及夜间批量各种报错、是不是有人催进度等等,让人应接不暇,手忙脚乱。

其实越来这种时候越不能急,越到淡定,天大的bug也得挨个处理。调整个人状态和做事的方法,挺过这段时期,后面就会好很多。当经过多轮UAT测试,在Bug都处理处理妥当之后,会进入UAT收尾、程序版本封板、参数核对及封板、演练及投产准备工作等。

此时,商业方面的准备工作也早已动起来了。业务人员可能要准备面向用户的功能、买点介绍的文档,产品更新的公告;培训服务人员和销售人员;运营人员可能已经在策划推广方案;销售人员可能在更新销售说辞······多个部门协同,很有大家在一起战斗的感觉。

★名词解释

冒烟测试(Smoke Test):可以理解为该测试耗时短,仅用一袋烟功夫足够了。也有人任务是形象地类比新电路板基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟。

UAT(User Acceptance Test):用户接受度测试。当然,更好的做法是直接让用户来测试。

验收测试(Acceptance Test):指除了把系统所有功能、性能概要测试一遍之外,还需要检查项目交付物,比如项目阶段文档、用户手册等是否齐全、是否符合规范。

回归测试(Regression Test):修改的代码部署版本后,复测之前的出现的BUG、验证版本的正确性。往往一个系统上线,都要经过多次回归,有的公司采取多轮次,第一轮、第二轮、第三轮等,都是回归测试的展现形式,只不过每轮次(回归)的测试重点不一样。

Bug:指缺陷或故障,区别在于项目上线之前发现的叫缺陷,项目上线之后发现的叫故障,通常故障会对用户造成伤害,团队里也针对故障制定了分级制度,针对责任人制定了相应的惩罚制度。

2

银行测试的分类和依据

在计算机行业,开发人员在实际的开发工作中会有自己涉及的主要领域,cobol,java,python,php,C等。测试人员也一样,因此银行测试的分类是有很多种的,按测试的内容可以分为:功能测试、性能测试、安全测试和其他性质。

(1)功能测试

功能测试可以分为模块功能测试、业务功能测试、场景功能测试和报文功能测试。我们继续以手机银行整存整取功能为例:

模块功能测试,如增删改查、下拉框的选择、值域的输入、点击按钮后的反应;业务功能测试,如定期转活期功能测试;场景功能测试,如定期存款流程、提前销户、提前部分支取,将业务功能串成一条;报文功能测试,如与支付系统或核心系统交互报文测试。

(2)性能测试

功能测试可以分为大容量场景测试、端对端并发测试、加挡板测试、业务压力测试。

(3)安全测试

安全测试可以分为报文加密测试、密码安全测试、穿透测试(防火墙)、通道传输安全性测试。

(4)其他性质

其他性质分为系统测试、硬件测试(POS机,智能柜台)、周边测试(ATM)。

接着我们聊聊测试的依据。

测试的依据可以分为六点:1.银行业务规则,如《银行支票中关于中文大写的相关规定》;2.业务场景要求,如转账业务场景;3.会计记账规则,如借贷记账法;4.中央银行下发的各种文件,如人行《关于落实个人账户分类管理制度》;5.各需求文档输入,如定期存款功能书;6.其他,如系统原型等。

3

银行测试的案例设计

(1)案例设计分类

(2)要求及准则

(3)注意事项

4

银行测试执行要求及准则

(1)测试执行要求及准则

1.执行要严格依照业务场景和业务流程进行。

2.所采用的测试数据一定是可靠的、完整的数据。

3.测试执行结果数据一定是正确存储,且计算正确的。

4.执行后特别注意证迹的核对及保留。

5.测试执行过程中一定需要考虑不同用户实际操作情景,且一定需要在执行时涉及不同机构、岗位、密码等权限控制的控制情况。

(2)执行注意事项

1.严格依照案例执行,保证测试和案例内容的一致性。

2.测试数据是依照业务流程做出来的可靠、有效的数据,非手工添加的随意性数据。

3.批处理交易重点在于被处理的批量数据的状态变化、计算变化以及迁移正确性等。

4.特别注意与案例中的预期结果不一致的问题。

5.尽可能的安排交叉测试。

结束语

早前还有小伙伴提出想从测试转开发岗或需求岗,我觉得主要还是要看自己擅长或喜欢哪方面。比如擅长沟通或协调,那做需求比较好;再如喜欢转眼技术,那转到开发岗能更好的施展拳脚;又如擅长逆向思维、善于发现主干之外的异常和分支,那么做测试就非常好。关于测试的话题就先聊到这,感兴趣的小伙伴可以关注,有机会可以扩展一下。

最后,绵薄之力

感谢每一个认真阅读我文章的人,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


软件测试面试小程序 被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux 6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

 获取方式 :

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

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

相关文章

解决pyecharts图表在jupyter notebook无法显示的问题

在jupyter notebook尝试制作pyecharts图表,遇到无法显示的问题,网上查到的结果有各种不同原因,此处一一罗列,便于大家排查并彻底解决问题。 情况1:图表完全无法显示 解决方案:参考此文档 注:…

web自动化测试——xpath和css语法详解(五)

目录 1.css选择器 1.1什么是css选择器? 1.2css选择器语法 2.xpath 1.什么是xpath? 2.什么是XML? 3.XML与HTML 4.节点的概念 5.XPath 🎁更多干货 完整版文档下载方式: 1.css选择器 1.1什么是css选择器&#xff1…

SmaAt-UNet github

来源 SmaAt-UNet github SmaAt-UNet: 使用小型关注网结构的降水预报 论文链接 安装依赖 这个项目使用poetry作为依赖性管理。因此,安装所需的依赖项就像这样简单: conda create --name smaat-unet python3.9 conda activate smaat-unet p…

基于Java学生宿舍管理设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

正负压自动控制技术在离体肺通气系统中的应用

摘要:模拟肺呼吸过程的离体肺通气控制新方法——真空压力(正负压)法,目前还停留在理论层面的文献报道,还未见到这种方法的仪器化内容和细节。本文基于这种新方法提出了仪器化实现的具体解决方案,解决方案的…

闲置iPad Pro打造真正的生产力工具!使用vscode编程写代码

文章目录 前言视频教程1. 本地环境配置2. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.2 创建HTTP隧道 3. 测试远程访问4. 配置固定二级子域名4.1 保留二级子域名4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问6. iPad通过软件远程vscode6.1 创建TCP隧道 7…

Windows电脑玩游戏出现白屏的解决方法

逢年过节玩游戏,周末放假玩游戏,休闲娱乐玩游戏…玩游戏成了不少电脑用户的小乐趣。但是有时候在玩游戏的过程中,会遇到一些令人头疼的问题,比如游戏突然白屏,无法正常进行。这种情况可能会影响游戏体验,甚…

Recurdyn导入x_t格式装配体

装配层次结构:选上表示导入的装配体包括子装配体,再勾选body或者subsystem表示子装配体以零件或者子系统显示在recurdyn中;不选,表示导入的装配体全部以零件显示。

如何修改 Linux 的时区

文章结构 一、查看 Linux 当前时区二、获取时区 TZ 值(可选做)三、配置 TZ 值四、加载配置并检验是否生效 TZ 是 time zone 的缩写! 一、查看 Linux 当前时区 你可以使用如下命令非常容易地就查看到 Linux 系统的当前时区: # 查…

AE插件:能量激光描边光效特效Saber Mac

Saber Mac插件主要用于AE软件中创造制作:能量光束,光剑,激光,传送门,霓虹灯,闪电,电流,朦胧等特效,插件操作直观简单,含有25种不同类型的特效预设&#xff08…

【sql注入-WAF绕过】编写sqlmap的tamper进行sql注入

目录 编写sqlmap的绕过脚本 二、理论知识2 sqlmap的tamper脚本 三、实战部分 一、理论知识1 编写sqlmap的绕过脚本 编写sqlmap的一个简单WAF绕过脚本 #!/usr/bin/env python""" Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/) See th…

网络安全合规-银行业数据治理架构体系搭建(二)

本次《指引》使用了许多新兴词汇,这些词汇均是首次被监管部门正式引用,并出现在银行业金融机构的监督管理文件中。我们将通过这些词汇更好地理解《指引》。 首席数据官:“首席数据官”首次作为需要监管机构任职资格许可的管理岗位被提出。通过…

Cortex-M内核知识点总结

总览 Cortex内核 基础 寄存器组 程序在经过编译后,生成可执行二进制文件,如上图,是截取某个函数在flash中存储的内容 (反汇编文件)可以看到以下信息: 指令的存储地址 ,指令的二进制内容 , 指令代表的汇编类…

MyBatis—环境配置

MyBatis 🔎MyBatis 的定义🔎MyBatis 的环境配置添加依赖链接数据库配置 MyBatis 中的 XML 路径 一些人习惯将 MyBatis 称为 iBatis MyBatis → iBatis(Plus 版) 🔎MyBatis 的定义 MyBatis 是⼀款优秀的持久层框架, 它⽀持⾃定义 SQL、存储过…

基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

5G NR:RACH随机接入过程

1. 简述 无论是3G,4G还是现在的5G都需要随机接入过程,随机接入过程主要是为了让基站和UE之间做好上行同步以及初始接入。此文章仅仅帮助大家了解此过程,更加具体的用途及其场景需要参考具体的3GPP协议(38.211,38.212,38.213).主要帮助理解如下…

Redis设计与实现笔记之链表

以下为Redis链表中一个节点的结构 typedef struct listNode {// 前置节点struct listNode *prev;// 后置节点struct listNode *next;// 节点的值void *value;} listNode; 可以看见此结构与我们常见的双向链表结构类似。由前去后继节点的地址以及当前节点的值组成。 redis中链…

使用percona xtraBackup8.x进行MySql8.0备份与还原(完全备份,增量备份,差异备份)

MySQL备份与还原 备份目标:数据的一致性,服务的可用性备份技术:物理备份(冷备份)【直接复制数据库文件,适用大型数据库,缺点是操作时服务需要停止】和 逻辑备份(热备份)【备份的是建表建库插入的SQL语句】备份方式&am…

CSDN周赛60期简要题解

一转眼,周赛都举办了60期了?还以为可以“寿终正寝”了,结果61期又安排上了。打开一看,还是《计算之魂》主题的周赛,还是这种 4 (非编程) 2 (编程) 的题型。可能目前就指…

HttpRunner 使用小结

目录 https 请求证书验证 2.0.3 (2019-02-24) 代理调试 $ 符引用 json 响应中数组的提取和断言 text/html 响应的提取和断言 testcase 之间传递参数 2.2.2 (2019-06-26) 复用 cookies 和 token 1. 每个 testcase 登录一次 2. 将 cookies 或 token 写入文件&#xff…