怎样测试一笔金融交易?

2024-04-01 09:28

本文主要是介绍怎样测试一笔金融交易?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 前言
    • 一 支付交易的过程
    • 二 支付交易测试点
      • 1. 报文前置数据处理
      • 2. 业务前置数据处理
      • 3. 业务处理中(交易进行中)
      • 4. 业务处理完成(交易完成)
      • 5. 上,下游关联功能检查

前言

  这篇文章来梳理下关于金融支付的一些基本测试点,由于平时接触的基本都是偏业务底层和接口测试,所以从数字底层的角度来简单总结下金融支付交易的测试点,当个人笔记使用。

一 支付交易的过程

  一个完整的支付过程其实流程是比较长的,不是我们去银行取到钱或者买东西付完钱这个支付交易过程就结束了,这仅仅是支付过程中的一个交易环节。一个完整的支付过程主要有三个环节:交易清算结算。具体如下

  • 交易:产生债权债务的过程。交易主要是由客户端产生,比如平时的消费,转账和充值交易。
  • 清算:对交易产生的债权债务进行计算和轧差的过程。比如我们拿招商银行的卡去农业银行的ATM机取钱,当我们取到钱,退出卡的时候这个取款交易对于我们客户来说就完成了,但对于银行来说还没有结束,因为你的钱并不是招商银行直接给你的,而是农业银行帮招商银行垫付的,所以取款就是产生了招商银行债务,农业银行债权的关系。清算过程就是对银行与银行,银行与支付机构间类似跨行取款交易的债权债务关系的计算。类似的还有跨行支付,跨行转账等交易,把各种交易计算后进行收支抵销,确定最终的债权债务关系,即最终谁要收取多少,谁要支付多少。
  • 结算:对清算的结果进行资金转移。即付钱与收钱。

  整个支付过程其实和打麻将差不多,打麻将过程中的碰,杠,胡就是对应交易的过程,产生债权债务关系;胡牌后进行算‘鸡’,计算谁输多少,谁赢多少的过程对应的就是清算过程;最后的付钱与收钱就是结算过程。

二 支付交易测试点

  现在科技这么发达,日常生活中的消费,转账,充值提现等交易活动对于我们来说简直易如反掌,但这些表面上容易的交易活动对于银行和支付机构来说其实并不简单,其内在逻辑还是比较复杂的,因此在测试的过程中我们要尽量考虑全面,覆盖完全。下面梳理了在测试金融支付交易时应该注意的一些测试点。

1. 报文前置数据处理

  • 接口数据格式转换
      支付交易很多时候都是外部系统发起,系统与系统之间的交互是接口数据的交互。不同的系统之间数据传输的格式,系统处理数据的格式不尽相同,因此数据格式处理是基础。
      常见的数据交互格式有:XMLJSONYAML
      测试数据格式转换时需要注意几点:外部系统数据格式内部系统数据格式数据格式是否需要转换请求数据转换以及应答数据转换

  • 接口数据检查
      一般前置都会做一些基本的接口数据检查,接口检查通过了才会发起底层业务请求。一些基础的接口校验:字段必填字段长度字段枚举等,接口检查这里先简单的说一下,具体的会有专门的文章写接口测试。

  • 路由分发
      众多的消费者每天都要发送很多交易请求,对于一些实时请求比较多的业务,后端一般都要采用多个服务器来进行分流处理,这时前置系统就得对每笔交易请求做好路由分发。所以在测试时需要关注:路由规则路由覆盖

  • 其他前置数据处理

2. 业务前置数据处理

  一笔交易请求发到业务系统,业务系统会进行一系列的业务前置检查,只有所有前置检查都通过后才能进行后续交易流程。检查具体如下。

  • 客户身份信息检查
      能够证明客户身份的基础信息是每次交易都要进行校验的,常见的有:银行卡,银行账户(银行交易),账户号码,用户ID,钱包ID(数字人民币交易)等。客户信息要在系统中存在,才能进行交易。

  • 银行卡,用户账户状态检查
      以银行卡为例,交易时我们需要检查银行卡,银行账户的状态,不同状态对交易的限制是不同的。有的状态能够正常交易,有的状态只能做付款交易,也有的状态只能做收款交易
    常见的卡,账户状态有:正常状态,冻结状态,失效状态,关闭状态,挂失,睡眠状态,黑名单,白名单等。

  • 交易场景限制
      生活中的交易场景非常之多,但并不是每个银行卡,每个账户都能做所有的交易。比如银行卡的活期账户和存款账户,活期账户可以进行消费,转账,充值提现等交易,而存款账户只能做存取款交易,不能做支付交易。
      个性化交易限制检查:停止支付,终止非柜面,终止所有。
      特殊交易场景:某些场景可以对某些卡,某些账户做特殊处理。

  • 账户余额检查
      前置账户金额检查主要是金额透支检查,一般是根据交易方向,交易金额,账户可用余额进行余额透支检查

  • 限额检查
      不同等级的银行卡,不同等级的数字人民币钱包在不同场景都有着不同的限额,交易前我们要检查这些场景限额是否都能检查通过。
      限额类型有余额限额单笔限额日限额年限额
      常见的场景限额:消费限额转账限额充值提现限额

  • 副卡,子钱包关联主卡,母钱包检查
      如果是副卡,子钱包交易,这时我们不仅仅要对副卡,子钱包进行业务前置检查,还要对其关联的主卡,母钱包进行前置检查,只有两者都检查通过了才能进行后续交易流程。

  • 防重检查
      检查系统是否已存在该笔交易,交易不能重复

  • 其他检查

3. 业务处理中(交易进行中)

  当上面的一系列前置检查通过后,业务系统就会接受处理该笔交易,进行数据落库处理。这时常见测试点如下。

  • 字段落库检查
      交易数据入库后,我们需要检查:数据库数据与交易接口数据是否一致接口数据是否全部落库字段编码是否正确是否存在长度截取等。

  • 状态更新
      交易处理时一般都会伴随着状态流转,因此要注意相关状态的更新是否正确。比如是一笔退款或者冲账交易,这时就会涉及到原交易的状态更新。

  • 账户余额更新
      账户余额更新是金融交易测试的重中之重,因此在涉及余额更新的交易时要重点关注。如果是收款交易,那么对应的账户余额就会累加,是付款交易,对应的账户余额就会减少,如果是冻结交易,那么对应的可用账户余额也会减少。因此需要关注不同交易场景下,账户余额的更新是否正确

  • 限额检查
      交易前要进行限额检查,主要是检查不能超过限额上限值。而交易时也要进行限额检查,这时检查的是各种限额的累加,限额恢复以及初始化是否正确
      不同的交易场景,限额的更新也是不同的。比如是消费付款,转账付款交易,那么对应的消费日限额,消费年限额,转账日限额,转账年限额就会累加;如果交易是对原消费付款,转账付款交易的冲账,那么对应的日限额,年限额就会恢复到原交易之前的值;如果交易是跨日交易,跨年交易,那么对应的日限额,年限额就会初始化后重新累加。

  • 其他检查

4. 业务处理完成(交易完成)

  交易完成后(不管交易是成功还是失败,只要到达终态就行)也有一系列的检查。交易成功,会涉及到很多上下游系统功能检查,其中账户余额更新面向客户类的单据检查是尤其重要。具体如下。

  • 状态更新
      交易完成后,涉及到状态流转的一般都会流转终态,不管是交易失败还是成功。

  • 数据写表
      有些数据是需要交易完成后才落库写表的,也需要检查其落库写表是否正确。比如日志表,防重表。

  • 账户余额更新
      当交易处理完成后,需要关注不同终态下账户余额的更新。比如交易成功,交易失败,交易撤销等场景。

  • 限额检查
      交易完成后限额检查和交易处理中的一样,也需要检查各种限额的累加,限额恢复以及初始化是否正确

  • 其他检查

5. 上,下游关联功能检查

  一笔交易往往涉及的不仅仅只有交易系统,大多都还涉及到上下游的一些关联系统,因此与交易有关的关联功能我们也需要关注检查。常见的一些关联功能及其测试注意点具体如下。

  • 单据打印
      单据打印是面向客户类的功能,需要重点关注。单据打印的信息都是从数据获取的,因此在检查此类功能要重点关注:单据上的信息与数据库信息是否一致有无乱码问题有无超长截取有无错别字等。

  • 动账通知
      当客户开通了交易动账通知,风控通知等通知功能的时候,在交易完成时需要向客户发送动账通知或风控通知。这时需要关注: 通知能否正常发送发送内容与交易信息或数据库信息是否一致等。

  • 数据推送
      交易系统产生的交易数据除了自己本身存储外,可能还需要推送给其它系统,比如中间件kafaka。这时需要关注:交易数据能否正常推送推送数据是否与数据库一致等。

  • 对账清算
      上面说过,一个完整的支付流程除了交易,还有清算和结算。其中具体到交易上的环节是清算过程中的对账流程,对账的基本流程一般是数据统计–>数据核对–>数据调账。因此还要保证交易数据能够:正常统计核对调账

  • 日志打印
      一般交易流程都会有日志进行跟踪,目的是为了在出问题时能够通过日志信息快速定位问题。所以我们还需要关注一下交易的日志打印是否正确。

  • 其它检查

这篇关于怎样测试一笔金融交易?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866802

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,