基于全链路的测试分析实践!

如何回答“测够了吗”。代码覆盖率是衡量测试充分性的起点,但远远不是终点。要回答”测够了吗”,至少还要考虑是否测了所有的场景、所有的状态、所有的状态转移路径、所有可能的配置、所有可能的数据等等。即便如此,我们可能还是无法100%确信我们已经测够了。

01/何为全链路

本文的创作来源于作者曾经作为主测试的项目实践,主要给大家介绍如何做全链路的测试场景分析。

首先以一个时序图回顾一下何为全链路。链路可以分为业务链路和调用链路,调用链路主要指从请求发起方到结果返回所途径各种服务/中间件产生的路径,可以理解为单系统[域]下的某一功能模块,例如淘宝添加购物车->提交订单->支付这个场景,就包含收单域/支付域/商服域/会员域等,所以全链路必然包含[微服务架构下]多个系统[域]的相互交互,而这些系统的纽带则是契约,这也是为什么微服务架构下非常重视契约测试质量的关键所在

02/全链路测试分析关键要素

言归正传,如何做全链路测试场景分析呢?我先按住不表,咱们继续分析上文中举的一个场景:即用户购买商品并支付成功。

首先上文说到已经说到了两个关键点:

1. 全链路必然包含[微服务架构下]多个系统[域]的相互交互,这里也可以称之为信息流,即可以理解为一条链路所经。

2. 契约测试是微服务架构关键。

另外,上述的场景咱们也可以从资金流向的角度来分析,即

3. 上述场景也完成了资金从账户A流向了账户B。

OK,经过上述分析,我们已经提炼出做好全链路测试场景分析的关键点,即

  1. 信息流

  2. 资金流

  3. 契约

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

下面来分析这三个关键要素。

信息流

信息流也即是这条链路所经历的系统(服务)集合,如果全链路要验证到下单支付场景,则构造的用例必须要覆盖上述说的系统(服务)集合。反之,则认为是不充分的。

图片

资金流

资金流即这个场景下资金从账户类型A/B流向了账户C/D。下单支付场景实际的资金流向是用户买家的钱流向了卖家(商户)的账户。

  • 买家账户的钱来源于银行卡/余额宝/花呗/余额户等;

  • 卖家账户收款账户可以是银行卡/余额户等

当然,资金流的要素不单单包含账户类型,如果涉及到跨境支付,则需要考虑付款和收款账户主体信息。

图片

因此,为了保证测试充分,则全链路必须验证所有的资金流向。反之,则认为是不充分的。

契约

请求报文则是契约的一种载体,理论上信息流和资金流所需要覆盖的测试场景,都可以通过构造不同的请求报文来实现。

因此我们分析全链路测试场景,则可以转化为分析请求报文。

03/如何分析全链路测试场景?

全链路场景必须满足上述信息流/资金流的充分覆盖。

而全链路信息流要素则首先需要集合内需要各个域的测试owner基于单域被测服务分析得出场景因子,全链路的测试场景理论上是单域测试因子的笛卡尔积,但是鉴于全链路场景的成本比较高,因此在全链路场景分析上也要结合等价类分析方法。

结论单域测试因子笛卡尔积 => 全链路发起的请求报文构造

图片

资金流的覆盖则需要基于业务经验做端到端的分析,因为涉及到资金的流入和流出,仅仅单域是感知不全的,所以要基于全链路角度分析。

图片

为什么仅仅信息流覆盖是不足的?

下面我从请求报文的角度来分析这个问题,例如下单支付功能,网关的请求报文如下:

字段参数

类型

备注

paymentType

String

支付类型

buyerId

String

买家ID

sellerId

String

卖家ID

OrderAmount

Class

订单

-currency

String

订单币种

-amount

String

订单金额

OK,如果我们只考虑信息流,则根据上述分析全链路场景方法,我们可以得到如下用例:

CASE01: 支付方式A,买家buyerId不存在

CASE02: 支付方式A,买家buyerId存在, 商户sellerId不存在

CASE03: 支付方式A,买家buyerId存在, 商户sellerId存在,支付成功

CASE04: 支付方式B,买家buyerId存在, 商户sellerId存在,支付成功

问题点就出现了,如果涉及跨境支付,就漏测了。因此则需要把买家/卖家的主体也作为场景因子进行覆盖。

OK,就写到这里了,抛砖引玉,大家有什么想法可以直接给我留言。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值