关于支付类的一些测试关注点及异常点

  做了四年多的银行支付系统测试,对支付模式类型略知一二。对于市场上的支付系统,其实原理大同小异。市场上大多数软件系统涉及到支付功能,都会与第三方支付系统交互,跳转到相应的支付系统实现其支付功能,下面说下开展这类型测试之前,需要考虑哪些因素:

  1,了解第三方支付接口有哪些,系统直接交互如何实现,建议画流程图(题外推荐:流程图可以使用chrome插件:Gliffy,个人感觉比较好用。),重复熟悉系统实现流程,只有搞清楚流程,才能更好的评估其中的风险,才能有利于测试用例的设计;

  2,除了主要功能之外,还需要考虑异常场景有哪些;

  3,有哪些风险?如何规避?

针对测试过程中涉及到主要的测试点整理如下:

  测试过程中需要注意的主要测试点及异常场景:

  · 首先要保证接口都能正常调用;

  · 生成一笔订单,支付完成后,同步或异步重复回调,只有一次有效;

  · 生成一笔订单,复制订单号和金额,再次生成一笔订单,用fiddler设置断点,用第一笔已完成的订单号和订单金额去替换现有的订单号和金额,无法完成支付;

  · 生成一笔订单,跳转到第三方时修改金额,无法到账,或者如果是游戏充值游戏币的话,到账为篡改后的金额对应的游戏币;

  · 异步通知屏蔽,同步有效,进行支付,同步能够正常到账;

  · 同步设置无效,异步有效,进行支付,异步能够正常到账;

  · 同步异步都设置无效,在第三方支付完成后,在重发机制时间范围内,设置异步有效,到下次通知时间点时,能够正常通知到账(补单机制的验证,如果商户收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知,如果第三方支付收到商户应答不是ok或超时,第三方支付就会认为通知失败,会在规定的时间内持续调用notify_url,一般有时间或次数的限制);

  · 针对支付订单在数据库中存储是否完整和正确进行校验(比如:第三方订单号--方便与第三方对账和问题排查、订单金额、订单状态等);

  · 如果是用户购买实物商品,用户发起退货,要保证退货流程正常,资金能正常返还,要考虑下并发情况的验证以确保安全性;

  · 如果是用户购买虚拟商品,比如话费、油卡之类的商品,只有在发货失败的时候才能发起退货,注意验证;

  遇到过的坑:

  · 用户购买100元游戏币时,前往第三方支付跳转进行金额的篡改由100元改成0.01元,结果就拿了0.01元充值了100元的游戏币。对订单金额没有做校验导致这样的后果,损失比较大。大家在测试的过程中一定要注意对服务端进行校验,支付时数据的篡改一定要有校验。

  · 当同步、异步通知都存在的情况的,异步通知(第三方支付成功后台通知),没有到账,导致部分用户充值不到账,引起客诉。当同步、异步并存的时候,一定要分别对同步和异步进行检验,确保都能正常到账。

  我们所做的绝大多少的互联网产品都会涉及到第三方支付,所以支付功能必然是重要的,作为测试互联网产品的一员,我们必须要做好支付的安全性。

  那么,如何规避支付风险?

  为了进一步的加强支付功能的安全,也可以适当的增加一些监控机制,比如:订单与第三方订单进行对比,可以使用跑批完成,当我们完成支付的订单从数据库中查出来与通过第三方订单查询接口查询出来的同一个订单金额有异常时,进行报警通知能够及时发现处理,甚至当有异常情况进行创建订单的终止,从而把损失降到最低。

时间: 2024-12-28 20:35:40

关于支付类的一些测试关注点及异常点的相关文章

支付类幂等性测试分享

主题: 支付类幂等性测试分享 HI all: 最近在测试扫码支付的时候,尝试测试了支付接口的幂等性,结合实例和网上资料一并分享给大家. 幂等性概念 数学中的定义:其任意多次执行所产生的影响均与一次执行的影响相同.比如f(f(x)) = f(x). HTTP协议中的定义:在HTTP/1.1规范中幂等性的定义是:HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用.其中GET,PUT, DELETE 方法是符合幂等性的,因为获取资源和删除资源无论执行多少次,产生的效果是一样的.Pos

xfire实现webservice客户端之测试关注点

日前的工作接触到很多系统间的Webservice调用,这里想谈谈基于spring+xfire实现的webservice的客户端踩过的一些坑,需要测试关注的点. xFire的配置项 在spring中实现ws的client的客户端还是相对比较容易的,只需要编写一个和webservice接口一致的接口类即可.在xml的配置中需要关注下面几个参数: http.timeout : 响应超时,即服务端接收到ws请求,但在处理请求时,长时间没有返回,超时 http.connection.timeout : 连

移动支付类App漏洞隐患重重,如何进行AndroidApk加密保护 !

没有一种支付是100%安全的,互联网及移动支付规模的增长,其交易的安全性需要银行.支付公司.App开发者.用户等参与各方更加重视.当下手机支付似乎变成了一种时尚,用户们"刷手机"乘地铁,"刷手机"购物,"刷手机"喝咖啡,"刷手机"看电影,甚至"刷手机"定机 票--种种迹象表明手机支付已经迎来了一个高速发展期.但伴随着移动支付业务金额的疯狂涨势,移动支付背后的隐患也让人忧心忡忡,引起广泛关注.为保护用户支付安

实用的随机数生成类Random:测试(随机产生100个不重复的正整数)

实用的随机数生成类Random:测试(使用Random类随机生成100个不重复的正整数) 一.之前我们使用随机数用的是Math类的random()方法: tips: 产生随机数(0~9中任意整数)的方法:int random = (int)(Math.random()*10); 1.商场幸运抽奖程序. 会员号的百位数字等于产生的随机数即为幸运会员. public class GoodLuck{ public static void main(String[] args){ //产生随机数 int

支付类项目

一.开发背景: 二.团队 团队 - 开发 - 前端 1 - 后端 4-5 - 运维 1 - UI 1 - 测试 1 - 产品经理 1 - 运营 2 - 销售 2 from django.db import models from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation

一次运行多个测试类2-1个测试类重复测试

package com.mengdd.junit; import junit.extensions.RepeatedTest; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; public class TestAll extends TestCase { public static Test suite() { // 创建一个测试套件 TestSuite

并发类相关需求测试

我去年做的一个东航官网抢购红包的需求测试分享,搬运一下. 我刚踏入测试行业半年,遇到的第一个抢购类需求测试,值得纪念一下. 我自己画了一个程序的流程图

面向对象-标准的手机类代码及其测试

1 /* 2 作业:请把手机类写成一个标准类,然后创建对象测试功能. 3 4 手机类: 5 成员变量: 6 品牌:String brand; 7 价格:int price; 8 颜色:String color; 9 成员方法: 10 针对每一个成员变量给出对应的getXxx()/setXxx()方法. 11 最后定义测试: 12 创建一个对象,先通过getXxx()方法输出成员变量的值.这一次的结果是:null---0---null 13 然后通过setXxx()方法给成员变量赋值.再次输出结果

H5测试关注点

1:逻辑相关 除了基本的功能测试以外,H5页面的测试需要关注以下几点: 1.1登录 目前H5与native各个客户端都做了互通,所以大家测试时要关注两点 A:若客户端已登录,那么进入H5后仍是登录状态 B:若客户端未登录,进入H5,点击对应的OR链接,若需要登录必须拉起native登录.若取消登录,是否可以再次拉起登陆或者停留在的页面是否有对应的提示. 1.2翻页 遇到翻页加载的页面,需要注意内容为1页或者多页的情况. A,数据分页加载时,注意后续页面请求数据的正确. ps:这个需要注意在快速操