接口自动化测试数据怎么来?涉及资金的接口如何在线上回归?

最近,有一位小伙伴提出一个问题:

目前在用pytest做接口自动化,因为一开始就想要把这套接口自动化用到生产环境,所以考虑的问题比较多一点点。

请问:

1.在做接口自动化的过程中,参数的数据应该从哪里来比较好。是写死(这种切换一下环境就不能用了,不太好对吧?),还是从数据库里提取?(那如果数据库里有脏数据,会造成测试接口返回信息不准确吧?

2.如果是动态数据,比如需要上一个接口查询商品,下一个接口添加购物车。如果上一个接口出问题,那么下一个接口也跟着出问题。这种接口传参怎么样比较好呢?

3.请问你们已经落地的接口自动化,是在测试环境跑还是预发布、生产环境呢?因为感觉做出来只在测试环境跑,发现不了线上的问题。整个接口自动化意义不大。

4.如果在线上跑接口自动化,涉及到钱的接口,要怎么去跑呢?

观点一

以下纯个人经验:

1.在做接口自动化的过程中,参数的数据应该从哪里来比较好。是写死(这种切换一下环境就不能用了,不太好对吧?),还是从数据库里提取?(那如果数据库里有脏数据,会造成测试接口返回信息不准确吧?)

------从用例中生成最好,其次是从环境的数据库里提取。

2.如果是动态数据,比如需要上一个接口查询商品,下一个接口添加购物车。如果上一个接口出问题,那么下一个接口也跟着出问题。这种接口传参怎么样比较好呢?

------就照常传就好了。多接口串联的用例,本身就是必须要每个接口都 OK 才能持续走的。

3.请问你们已经落地的接口自动化,是在测试环境跑还是预发布、生产环境呢?因为感觉做出来只在测试环境跑,发现不了线上的问题。整个接口自动化意义不大。

------一般在测试环境。发现线上问题不是接口自动化这项工作的的职责,是监控以及巡检(也叫拨测,就是对着线上跑部分不会影响到线上用户的自动化用例)的职责。

4.如果在线上跑接口自动化,涉及到钱的接口,要怎么去跑呢?

------不跑。通过监控实际线上接口的调用情况,而非用接口自动化主动调用,来快速发现问题。

观点二

非常不建议自动化测试在生产环境跑,根据我的经验,自动化测试,基本不会被测试......你还想在线上跑涉及到钱的接口,这就是传说中的吃雷公屙火闪吧~

楼主又问:"那是否会用到做线上监控呢?那不也是在线上跑?"

回答:监控和自动化测试完全是两码事。。。。

观点三

我们做了生产的服务监控,其实只是监控服务,周期啊 频率啊 自己控制,不要产生业务数据,不要给生产增加负担。

目前我是一分钟轮训查询一个服务状态的,遇到服务异常,调云平台的电话服务打电话过来

观点四

提出这种问题,看来楼主还没遭受过社会的毒打。千万不要自作主张动生产数据,无论什么目的,即使领导让你动,也要获取多方确认(领导、运维、业务等)后再实施。不然出了问题锅只能自己背,小测试的抗风险能力差,如果遇到这种问题,基本就是走人了,慎重!

观点五

以下亦纯个人经验:

1.除了配置数据,业务数据都是动态的:

我们是直接前置时通过调用相关接口生成,或者插入数据库生成相关数据,然后后置操作进行删除。这样一般不会有脏数据

2.遵循原则:测试用例之间保持独立性,因此各个用例不会关联影响。

至于多接口串联用例,自然必须每个接口都要正确

3.参考上述大佬回答就行

4.同样参考上述大佬回答,千万别线上跑!实在要跑,就拿一些合适的跑。比如我们的业务核心功能就是各种各样的检索,就算程序挂了,也不会造成脏数据,至于影不影响线上性能,那就另说。

观点六

1.参数数据主要来源肯定就是你的用例设计,其他来源都是补充。补充来源可以是线上流量(access log 里面可以抽取)、可以是埋点上报、也可以是数据库数据。但是关键问题是补充来源的数据是否全部可行,要加什么筛选标准,肯定不是随便一条数据就能拿来直接用,一方面有些数据涉及用户隐私安全,一方面有些数据不完整,一方面有些数据根本没权限拿,所以很多时候最关键的就是搞明白筛选标准和你的测试范围,不是万能的。

"是写死(这种切换一下环境就不能用了,不太好对吧?)..."

没看懂你说的写死是什么意思,是人为确定的参数?为什么切一下环境就不能用呢?能不能按照不同环节做兼容?还是说你的环境本身就有问题?

2.上个接口出问题用例应该直接报错结束吧,没什么特别的方法。上游你的控制不稳定,自然就不用想着下游能好过。这个解决的下手点不在于接口怎么传参,而是确定前置条件有无满足。

3.全量用例是在测试环境跑,我们内部的预发布约等于生产环境,生产环境只跑很小一部分,而且都是读接口。在线上跑写接口就是给业务加脏数据污染,纯纯地坑研发,不仅可能发现不了线上问题,甚至可以引入问题让别人排查半天。这里的建议是把思路打开一些,发现线上问题除了接口自动化(巡检)外还有很多,比如监控、用户反馈跟进,更牛逼一点可以是舆情监控等手段。

4.基本原则是涉及到钱就别在线上去跑自动化,出问题就是事故,老老实实线下自动化或者线上手工验证,不差那么点工作量。一方面钱相关的一般是线下有mock,自动化会比较安全倒还好,但是线上没有mock,第三方支付也很少会给你在线上开这样的测试口子,所以就别去较劲,要是自动化把别人的接口打挂了还要担责;另一方面,如果线下测完了没问题,线上还出问题,我觉得可以想想为什么两者的结果不一致,再去尝试排除这些差异点,至少保证己方是没责任的。建议先了解一下依赖的财经支付方在线上有什么限制再考虑。

对于这个问题

你有什么想说的

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

相关推荐
螺丝钉tina2 天前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
七夜zippoe2 天前
Agent 测试实战:单元测试、集成测试与 Mock LLM 策略
ai·单元测试·集成测试·mock·agent
Da Da 泓3 天前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
梧桐1683 天前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
会开车的鸟哥3 天前
自动创建测试用例与组件测试向导
测试用例·simuinktest
mewowaBc4 天前
postman使用细则
测试工具·postman·偏差
梦想不只是梦与想4 天前
鸿蒙 AI自动化测试实现
单元测试·harmonyos·hypium
光影6274 天前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
螺丝钉tina4 天前
[Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
运维·自动化·测试用例
xie881018024 天前
正则里的点号不匹配换行:多行模式的开关
运维·服务器·测试工具