【银行测试】支付功能、支付平台、支持渠道如何测试?

news2024/11/30 10:52:30

有朋友提问:作为一个支付平台,接入了快钱、易宝或直连银行等多家的渠道,内在的产品流程是自己的。业内有什么比较好的测试办法,来测试各渠道及其支持的银行通道呢?

作为产品,我自己办了十几张银行卡方便测试,但QA和开发不愿意这样做,怎么办呢?

回答:对支付平台而言,与支付渠道相关的测试大致可以分为:测试支付渠道功能、测试支付产品功能

1、支付渠道功能测试

主要是测试与银行、银联、其他外部支付渠道以及诸如实名认证等非支付类功能的功能。

一般情况下,支付渠道的接口只对第三方支付内部开放,不会直接将支付渠道暴露给外部商户,对外部商户都是包装成支付产品形式提供的。支付渠道是第三方支付公司最基础的能力,由于涉及调用外部形形色色的各种接口及服务,各家的渠道提供的测试环境、准生产环境、生产环境要求也不同,同时第三方支付自己也需要维护对应的测试环境、准生产环境、生产环境不同版本的环境,要完整做测试确实挺麻烦。

测试方法:在内部开发一套统一的测试网关(不管是接口通信协议是socket、http、xml等,一般都统一为http以方便测试),统一各种渠道的测试入口,针对不同的渠道维护对应的接口参数模板,方便测试人员快速输入并提交原始的支付请求。

提交到支付渠道后,如果支付渠道维护有测试环境、准测试环境,则可以直接用提供的测试账号完成实际调用支付渠道测试。

如果不提供,只能像题主一样,针对不同的渠道开通银行卡、对公账户等进行测试。此种情况下一般都以最低限额测试。

测试卡的申请、测试费用出处、日常管理可以根据每家公司实际情况制定对应政策,最好是公司承担各种费用、简化相关流程并有对应的激励措施,例如不要对此类费用还要走极为漫长的报销流程。

测试目的:保证支付渠道功能的正确性、完整性、可用性,验证渠道是否畅通、功能是否正常。 一个典型例子是,原有支付渠道新上线一个功能,生产环境测试发现有问题,要在生产环境完整跑一边流程极为麻烦,可以用测试或准生产环境稳定版本的测试网关测试,快速定位是上线新版本影响生成功能,还是支付渠道端的问题,或者生产环境网络等问题影响。

2、支付产品功能测试

这里的支付产品可以是第三方支付内部的基础性产品,也可以是对外部商户提供的产品或接口。此种情况下,测试重点不是支付渠道的基础功能,而是支付产品的核心功能。对支付产品而言,可以假设支付渠道是一个黑盒子,黑盒子对外提供的服务是可靠稳定的。

测试方法:在内部开发一套支付渠道的模拟网关,对各种支付渠道的各个接口功能进行模拟并根据支付请求返回对应的模拟报文。支付请求不用实际提交给外部支付渠道。 一般模拟网关与上面的测试网关会统一开发部署。

3、支付测试思路

要分析测试点之前,我们先来梳理一下测试思维。总结来说,任何事物的测试思路都可以总结如下:

第一步:梳理产品的核心业务流程:明白这是个什么项目,实现了什么业务,以及是怎么实现的?

这个步骤一般是参考公司的需求文档来的,如果产品提供需求文档的同时提供了业务流程图,可以遵循流程图来梳理;如果产品没有提供流程图,就需要测试人员根据需求的理解自己画出流程图,达到梳理业务的目的。

第二步:根据流程进行模块细分,然后针对每个功能模块进行详细的测试点设计和提取。

这个单个功能的测试点提取要覆盖以下几个方面:

正常功能验证:优先覆盖正常的业务流程和功能验证,这其实也是单个功能的冒烟测试。冒烟测试先行,如果不通过,可以直接停止测试等开发修复后继续测试。

异常功能验证:为了更加贴近用户的使用产品,我们也要验证各种异常的场景,故意操作导致出错,检查系统的反馈和提示,保证用户操作失误的情况能够得到系统的友好指示。

因为有很多地方的操作都有可能会导致系统异常和报错,所以为了不漏测,我们需要找出所有可能导致异常的输入项和选项。所以就到了第三步:

第三步:针对具体功能,寻找每个输入项和步骤,从以下三个角度来分析测试点 。

1、长度,数据类型,必填项,重复

2、需求的约束条件 + 隐形需求

3、功能之间的交互

这其中就需要用到一些用例的具体设计方法了,比如场景法,等价类法,边界值法,错误推测法等等

第四步:考虑非功能测试点,包括界面、易用性、兼容性、安全性、性能压力

基于上面的测试思路,我们可以分析得出“支付功能”测试点如下:

一、梳理支付的业务流程如下:

点击支付---> 选择支付方式 ---> 确认金额---> 输入密码 ---> 成功支付

完成这个流程测试,也就是完成了项目的冒烟测试!然后需要测试针对流程中的每个阶段和步骤,具体分析可能导致异常的测试点,所以我们按阶段和输入项来进行划分如下:

非现金支付时代,非现金支付已经成为了生活不可或缺的一部分,我们只需要一台手机便可走遍全国各地(前提是支付宝,微信有钱<00>),那么作为测试人员,支付测试也是非常重要的一环,那么下面我就结合一下我的工作中遇到的一些问题,总结一下常见的支付测试:

一:支付的分类:

一般来讲,线上支付分为两种消费模式。一种是直接支付金额,如淘宝,京东等购物网站;另一种是充值购买金豆之类的虚拟币,在网站中使用虚拟币进行消费,比如游戏平台等产品!

二:功能测试

接下来就是测试方面的工作了,首先进行的是功能测试,那么我将边界值、等类划分、错误推测,因果图等各种测试方法相结合,整理出来了一套相对全面的测试案例,对支付功能进行测试,从而确保整个支付流程和涉及到的支付流程在任何情况下都能使用。

三:接口测试

明确整个支付流程所需要调用的接口,分清楚商家和第三方平台的接口以及参数的请求方式,包括对接口特定参数的加密,使用异常单号模拟支付,对服务端的检验等等

四:安全测试

支付都会涉及到金额,那么就需要考虑安全测试这个方面,支付请求的伪造,金额的恶意篡改,恶意模拟第三方接口来调用商家接口等,均是我们需要考虑清楚的问题

五:测试点

支付流程测试点

1、付款金额和应付金额是否一致,(比如:扫描的支付二维码,和显示的应支付金额是否一致)。支付还是要走整个支付流程才行,从确认订单到最后的支付成功,任何一步都有可能有问题。

2、同一种支付方式,不同的支付入口(比如:如下图所示,支付宝有两个支付入口。即可通过扫描二维码支付,也可以通过支付宝网页支付。在测试过程中,两个入口都要覆盖到。

3、支付成功后,产品购买是否成功

  (比如会员服务产品,购买后会员到期时间是否正常延迟;比如购买商品,支付成功后,订单状态是否更改,商品种类和数量是否正确等等)

4、支付成功后,用户的金额是否扣除成功

支付金额测试点

  • 正常金额支付
  • 金额的最小值:0.01
  • 无意义的值:0元
  • 最大金额:设置支付的最大金额
  • 银行卡或微信等,设置每日最大消费金额或者单笔最大消费金额
  • 银行卡或微信余额不足时支付

支付流程测试点

  • 正常完成支付流程
  • 调起订单后,取消订单
  • 支付中断后,继续支付
  • 支付中断后结束支付
  • 单笔订单单笔支付
  • 多订单合并支付
  • 持续点击支付,是否会出现多次购买

支付方式测试点

  • 支付宝支付
  • 支付宝网页支付
  • 微信支付
  • 银行卡支付
  • 优惠券或折扣(有一定的优惠)
  • 支付中使用优惠券/折扣,应付金额和实际支付金额是否正确
  • 优惠券/折扣是否是必选,是否可以不选择折扣
  • 支付订单退款完成后,优惠券/折扣是否还能使用

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

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

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

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

相关文章

效率提升测试工具开发的思考

本文针对测试部效率提升测试工具开发、管理、维护暴露出来的问题的一些思考以及一些个人改进观点。 写在前面 本文提到的效率提升测试工具不是指的部门中固有的自动化测试工具&#xff0c;这里提到的测试工具统一指测试人员在工作之余自主开发用于期望替代重复、繁琐、耗时的手…

如何在MacOS使用homebrew安装Nginx

文章目录 Homebrew安装nginxbrew启动Nginxbrew关闭Nginx 参考文章地址 Homebrew安装nginx 在确保MacOS 安装Homebrew成功以后&#xff0c;执行如下命令 brew install nginx注意&#xff1a;Nginx安装成功后会提示目录位置&#xff1b;每个人的系统可能因为Homebrew的安装位置…

永宏(FATEK)PLC通讯协议

文章目录 背景说明通讯帧通讯数据地址16进制数据元和ASCII的转换永宏通讯协议举例命令码40&#xff08;PLC概略系统状态读取&#xff09;命令码41&#xff08;PLC的RUN/STOP控制&#xff09;命令码42&#xff08;单一个单点运作控制&#xff09;命令码43&#xff08;多个连续单…

【自用】vmware workstation建立主机window与虚拟机ubuntu之间的共享文件夹

1.在windows中建立1个文件夹 在vmware中设置为共享文件夹 参考博文&#xff1a; https://zhuanlan.zhihu.com/p/650638983 2.解决&#xff1a; &#xff08;1&#xff09;fuse: mountpoint is not empty &#xff08;2&#xff09;普通用户也能使用共享目录 参考博文&#x…

Unity Profiler 详细解析(二)

Profiler的主要参数详解 1. Memory Profiler Uesd Total : 当前帧的Unity内存&#xff0c;Mono内存&#xff0c;GfxDriver内存&#xff0c;Profiler内存以及额外内存的总和。 Reserved Total&#xff1a; 系统在当前帧申请的总体物理内存 Total System Memory Usage&#xff1…

ModStartCMS v7.5.0 内外网映射节流,安全使用增强

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

8种按钮设计的常见类型分享

按钮是UI界面的元素之一&#xff0c;可以本能地吸引游客并将其转化为买家。界面中的UI按钮类型包括&#xff1a;CTA按钮、幽灵按钮、下拉按钮、浮动操作按钮、汉堡包按钮、加号按钮、消耗品按钮、共享按钮。 号召性用语按钮 CTA&#xff08;呼叫语言&#xff09;按钮是一种交…

八、ACL访问控制列表实验

拓扑图&#xff1a; 通过某些特定的条件&#xff0c;端口号&#xff0c;ip地址&#xff0c;来限定某些数据包的访问 在这张拓扑图中&#xff0c;使得1.0和2.0能够访问服务器&#xff0c;但是两个网段不能互通 首先根据拓扑图把ip分配完毕&#xff0c; 高级acl命令可以用设置源…

算法学习打卡day40|343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 力扣题目链接 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1&#xff1a; 输入: n 2 输出: 1 解释: 2 1 …

Panda3d 相机控制

Panda3d 相机控制 文章目录 Panda3d 相机控制Panda3d中的透视镜头和垂直镜头透视镜头垂直镜头 Panda3d 中用代码控制相机的移动用键盘控制相机的移动用鼠标控制相机的移动 Panda3d 把相机也当做是一个 PandaNode&#xff0c;因此可以向操作其他节点对其进行操作。 真正的相机是…

stm32整理(三)ADC

1 ADC简介 1.1 ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道&#xff0c;可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位…

Azure 机器学习 - 使用 AutoML 和 Python 训练物体检测模型

目录 一、Azure环境准备二、计算目标设置三、试验设置四、直观呈现输入数据五、上传数据并创建 MLTable六、配置物体检测试验适用于图像任务的自动超参数扫描 (AutoMode)适用于图像任务的手动超参数扫描作业限制 七、注册和部署模型获取最佳试用版注册模型配置联机终结点创建终…

Flask——接口路由技术

接口路由技术 一、Flask 简介1、环境安装&#xff1a;2、一个最小的应用3、两种运行方式 二、定义路由1、普通路由2、动态路由3、限定类型4、地址尾部的“/” 三、请求与响应-请求方法四、请求与响应-处理请求数据1、request的常用属性/方法2、get 请求参数3、json 请求4、表单…

高效文件整理:按数量划分自动建立文件夹,轻松管理海量文件

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件。然而&#xff0c;如何高效地整理这些文件却是一个棘手的问题。有时候&#xff0c;我们可能需要按照特定的规则来建立文件夹&#xff0c;以便更高效地整理文件。例如&#xff0c;您可以按照日期、时间或者特定的标签…

老杨说运维 | 历时180天,跟复旦大学共研的运维大模型终于来了!

写在前面 Q1&#xff1a;到处都在说的AI大模型到底是什么? ? ? A1&#xff1a;AI大模型是“人工智能预训练大模型"的简称&#xff0c;它包含了"预训练“和”大模型“两层含义&#xff0c;二者结合产生了一种新的人工智能模式即模型在大规模数据集上完成了预训练…

Azure 机器学习 - 使用无代码 AutoML 训练分类模型

了解如何在 Azure 机器学习工作室中使用 Azure 机器学习自动化 ML&#xff0c;通过无代码 AutoML 来训练分类模型。 此分类模型预测某个金融机构的客户是否会认购定期存款产品。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管…

【C语法学习】5 - fputc()函数

文章目录 1 函数原型2 参数3 返回值4 示例4.1 示例14.2 示例24.3 示例3 1 函数原型 fputc()&#xff1a;将一个字符发送至指定流stream&#xff0c;函数原型如下&#xff1a; int fputc(int c, FILE *stream);2 参数 fputc()函数有两个参数c和stream&#xff1a; 参数c是待…

Proteus仿真--基于51单片机的按键控制LED仿真(仿真文件+程序)

本文主要介绍基于51单片机的按键控制LED仿真&#xff08;完整仿真源文件及代码见文末链接&#xff09; 本仿真文件主要涉及4个按键&#xff0c;其中&#xff1a; K1按键的逻辑是——逐个点亮 K2按键的逻辑是——上四个点亮 K3按键的逻辑是——下四个点亮 K4按键的逻辑是——关…

opencv复习(很乱)

2-高斯与中值滤波_哔哩哔哩_bilibili 1、均值滤波 2、高斯滤波 3、中值滤波 4、腐蚀操作 卷积核不都是255就腐蚀掉 5、膨胀操作 6、开运算 先腐蚀再膨胀 7、闭运算 先膨胀再腐蚀 8、礼帽 原始数据-开运算结果 9、黑帽 闭运算结果-原始数据 10、Sobel算子 左-右&#x…

⾯向对象编程:封装数据和⾏为、定义交互协议、扩展与复⽤ - GO语言从入门到实战

⾯向对象编程&#xff1a;封装数据和⾏为、定义交互协议、扩展与复⽤ - GO语言从入门到实战 一、封装数据和⾏为 结构体定义 定义了一个名为Structural的结构体。结构体是一种用户自定义的数据类型&#xff0c;可以包含不同类型的字段&#xff08;成员变量&#xff09;。 与…