前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈接口diff设计实现应用

浅谈接口diff设计实现应用

作者头像
雷子
发布2021-03-15 14:53:10
9380
发布2021-03-15 14:53:10
举报
文章被收录于专栏:雷子说测试开发

1

背景

  1. 随着业务量和业务复杂度度增加,每次业务迭代都需要考虑业务影响域进行回归,效率低
  2. 业务重构导致覆盖度一定程度上不完全,质量不高
  3. tcp接口众多,http接口更接近业务场景

因为上述业务特点,故选择了接口diff的方式改进测试过程中效率和质量问题

2

实现目标

  1. 根据环境数据配置进行接口数据对比,找出结果中的差异
  2. 用例集成,使用csv文件管理用例case,支持不同业务线用例统一管理
  3. jenkins集成,自动化下载代码、执行用例、生成测试报告
  4. 入口集成,统一集成到开放平台中形成数据闭环,可选择具体业务线执行对应的用例集,报告产生后可在平台统一查看

3

技术实现

  1. 因为是通过jenkins集成部署到服务器中执行用例,故选择兼容的csv文件类型来做用例管理,每个业务有对应的csv文件用例集,主要维护用例接口名、要比对的配置环境、接口请求参数、接口请求cookie、cookie用到的uid等,其中接口请求参数可以通过数据平台初始化,更多接口定制化的数据就需要通过业务场景中抓包获取
  1. 接口数据集初始化,通过平台选择具体的业务线数据集以读取对应的csv文件中的接口case,通过数据平台获取uid对应的ppu为cookie准备数据,并组装单测框架所需的参数化数据
  2. 使用pytest单测框架执行用例,将参数化的用例数据进行接口请求,其中通过环境配置请求出json结果并传给服务平台进行diff比对,根据对比信息使用断言比较结果的差异(默认是线上同沙箱结果数据的比对)
  1. 在用例执行中发现服务器不稳定导致接口比对失败,故使用pytest-rerunfailures插件实现用例失败重试机制
  2. 用例执行后产出报告文件并发送邮件,平台页面可查看具体结果

4

经验分享&思考

  1. 接口diff更多针对的是读数据的请求,也可以根据具体情况做写数据的diff,但要注意写数据会在线上产生脏数据,其中写数据之后的验证一定要有对应读数据结果验证的配合
  2. cookie中的数据要根据实际接口进行配置,如客户端会根据v、t值不同有不同的逻辑
  3. 接口diff与接口测试无异,更多需要接口覆盖度(要是接口参数组合和异常情况的覆盖),与功能业务测试相辅相成
  4. 接口diff主要的使用场景:接口功能重构、功能快速迭代、沙箱验证回归
  5. 接口diff是对两个不同环境进行数据比对,那么环境的数据源就必须一致,因此比对时源数据的正确性就很重要
  6. 接口diff对新增接口的对比验证有一定的局限性
  7. 目前主要针对接口返回的全部数据进行比对,只对变化的字段进行过滤(如metric),后续用例量不断增加,diff比对的耗时也会递增,这样就要提前考虑比对数据字段中要过滤的部分和增加代码并发执行策略
  8. 用例执行过程中因为服务的不稳定经常发生接口异常的情况,故加入重试机制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档