腾讯10年经验之谈 —— 自动化接口测试实践经验,2024年最新年薪超过80万

图片

接下来,我们通过**“流量录制->生成用例”的流程来进行阐述我们的实现方法和接入方式。我们会说明通用的平台如stke、sumeru服务的接入流程,由于123平台对goreplay等有较好的支持,除了通用流程外会以123平台为例进行说明。最后会说明流量频次筛选方案**帮助大家理解我们的流程。

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

二、流量录制
2.1 流量录制简介
2.1.1 什么是流量录制

我们听得比较多的是“录制与回放”,但目前只需要用到录制功能,后续可能会把回放功能也加上。顾名思义,流量录制就是指将我们期望的接口数据的包括response、request、协议等等存储起来的操作,可以是正式环境或者是测试环境的数据,开启了录制功能后,只要对应环境的服务有流量,便可以将其捕获存储起来,实现此功能的方式有多种。

通过对多个方案的对比后,我们决定采用goreplay的方式,其开源代码是goreplay ,基于goreplay 1.2.0版本改造后已经支持trpc, http, gofree, wup, videopacket, 后面会陆陆续续支持其他协议,采用goreplay的主要优势是它可以分析和记录服务的流量但不会影响服务,并且接入流程相对简单。

goreplay方案其最大好处是与业务代码解耦,不需要入侵代码。

图片

在传输层的goreplay录制方式为:

图片

2.1.2 为什么要进行流量录制

接口测试是在真实运行的服务中测试,若想自动化生成用例,理想的情况下,便是要自动化生成真实数据的接口测试用例,那么首先需要的就是真实的接口数据,数据从何而来呢?自然而然的,我们便会想到到线上去录制(无论是测试环境或者正式环境的)。

下面为「通用流程」讲述如何为服务接入goreplay流量录制流程。

2.2 「通用流程」服务流量录制
2.2.1 「通用流程」上传pb文件至协议中台用于解析二进制流量

首先我们需要一个能够管理协议的系统,它能够对协议文件(如pb文件等)进行管理,这样当协议有更新时,依然能够对新的协议生成的流量进行解析。

能够将goreplay录制的二进制数据进行解析:

图片

只需要将依赖的proto文件进行打包(注意依赖多个proto文件时保持相对目录正确)并上传到协议中台即可,并且生成对应此版本pb的版本号,用于我们后续生成goreplay命令。

2.2.2 「通用流程」生成并执行goReplay命令

在上述协议中台获取了版本号之后,我们已知后台服务的ip和端口,已经最新的协议版本。将这些填入我们的goreplay命令中,如下图所示:

图片

将上述命令在对应的容器中执行。

部分参数说明:

–input-raw-logreplay// 这个其实是rawInput插件的参数, 开启这个参数后, 必须ip和port都要填
–output-logreplay-cache-size 200// LogReplayOutPut插件 需要的缓存大小, 可以不设置, 有默认值
–output-logreplay-track-response// 跟–input-raw-track-response含义一样
–input-raw-protocol // 必填需要解析的协议
–output-logreplay-protocol-service-name “app.server” // 协议文件对的服务名
–output-logreplay-commitid “1.0.1” // 必填,如果是http协议, 可以自定义
–output-logreplay-qps-limit 100// 限制录制的qps, 非必填, 有默认值
–output-logreplay-env formal // 选填,默认formal,需要注册到logreplay测试环境可填test

在容器中执行ps -ef|grep goreplay看到如图进程便表示成功了:

图片

2.2.3「通用流程」查看录制流量

当服务在对应环境有流量的话,很快我们就可以查看到通过goreplay录制到并解析成功的流量了。

图片

里面的request和respond等数据都一目了然(此处是demo所以数据很少,真实环境中,可能有非常多的参数及数据),根据这些录制的数据,我们下来就可以自动生成接口测试用例了。

图片

三、生成用例

当录制好流量后,我们会有一个筛选机制来过滤流量,不过这个操作对于用户是无感知的。对于使用方来说,接下来就能够自动化生成流量了。

3.1 px-cmdline工具简介

我们提供了px-cmdline工具,这是一个命令行工具,它可以将goreplay录制的流量,通过proto文件,自动获取相关依赖后生成符合代码规范的接口测试文件。

3.2 px-cmdline使用

使用方式也很简单,命令行格式为:

px-cmdline generate -p  [-f] [–env test]

常用参数介绍:

  • -p 指定proto依赖路径,从go.mod中拷贝
  • -f 是否强制更新,开启后,会替换掉即将生成的同名接口测试文件
  • –env 指定拉取流量的环境变量,默认test环境
  • –dest 指定生成的目录,默认tests文件夹
  • -j 指定是否切换json文件模式。默认使用json文件独立模式;开启后,用例写入到*_test.go里

示例:

px-cmdline generate -p git.code.oa.com/xxxxprotocol/hello/world

运行后,如果未发生异常,会在当前目录下生成tests子目录,根据每个RPC接口生成独立的__test.go文件,以及一个唯一的suite_bvt_base_test.go用于启动接口测试。testdata目录存放json格式的用例数据。如图:

图片

当服务有多个运行节点的时候,还支持选择运行节点,以便用于本地调试接口用例时请求该目标。建议优先选择test环境或者开发者的特性环境

[Info] 请选择本地测试目标服务:可只选择环境,或指定节点
[Info] (1) 测试环境 test --------
[Info] (└ 11 ) 9.2.3.4:16916, Development, 权重100, 健康
[Info] (2) 特性环境 sdfdfe --------
[Info] (└ 21 ) 11.1.2.3:11389, Development, 权重100, 健康
[Info] (3) 特性环境 dfadfb --------

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-CuHLrEsj-1712792342280)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值