接口测试 接口入参庞大,且由于功能优化接口变更频繁,又要求做自动化该怎么办?

WSSluoshifeng · 2024年11月15日 · 最后由 Qjping 回复于 2024年12月02日 · 6416 次阅读

如题:涉及工作流 web,单个接口的入参超过 30,且入参的嵌套层级很深,最深达到了 7 层字典嵌套,单条用例条用多个接口,导致用例十分臃肿,通过封装配置化后得到一定简化,但是单条用例编写时间较长,想问问大家有没有针对这种情况更好的解决办法,🙏 ~

共收到 11 条回复 时间 点赞

解决复杂的事情,有时候都是用最笨的方法实现。

功能优化接口变更频繁, 那就不要做了,做了也是白做,后面没时间维护的

比如什么笨方法呢?😂

我们也是工作流系统,我们自动化主要关注的是按照线上典型的工作流配置,进行工作流操作后,结果是否和预期一致。建议也可以从业务角度看下,实际用户使用的典型工作流配置是怎样的,进行覆盖。

另外,关于封装配置这个,可以考虑封装接口调用时,所有参数都提供默认参数,用例只需要传个别场景需要,要用非默认值的场景,这样也可以减少用例的编写时间。

小鹏友 回复

嗯嗯,有些变化特别频繁的没有做,优先做的是那些相对稳定的子系统。

陈恒捷 回复

感谢大佬的意见,核心的业务流其实在转测用例中覆盖了,这些自动化实现的优先级是最高的,其它的可能上层更关注整个的自动化覆盖率,其实我也赞同覆盖核心业务流就 OK,投入产出比更高一些,封装这个目前确实是这样做的,大部分是默认,结合实际使用开放一些非默认参数。

场景化吧

Ninja 回复

是指核心业务流吗?

GPT4.0 给出的建议:
1. 构建数据模型
使用数据模型类:定义与接口入参相匹配的模型类,使用 JSON 序列化和反序列化,可以简化构造复杂的入参结构。同时,支持默认值和可选字段的灵活性。
示例数据:建立一组模板或示例数据,配置化地使用这些数据作为入参的基础,通过动态替换需要变化的字段来减少手动构建的复杂性。
2. 利用配置文件和环境变量
配置化入参:将入参配置化到 JSON 或 YAML 文件中,针对不同的接口和场景进行管理,测试用例在运行时读取这些配置。
环境变量分离:如果有常见的参数组合,可以通过环境变量来快速切换特定的用例环境,减少硬编码。
3. 接口模拟与虚拟化
使用接口模拟工具:在开发和测试阶段,可以考虑使用 Mock 工具(如 WireMock、MockServer 等)模拟出接口的返回,减少依赖真实接口的复杂性。
服务虚拟化:虚拟化整个服务的响应,尤其是在服务依赖纵深的情况下,能够让测试更聚焦于特定接口的行为。
4. 自动化生成测试用例
自动生成用例:编写脚本分析接口文档或者 Swagger 文件自动生成入参,避免手动编写低效且容易出错。
使用测试框架的参数化功能:使用 JUnit、pytest 等框架的参数化测试功能,将多种入参情况整合到同一用例中,提高复用性和维护性。
5. 分层测试
设置单元测试与集成测试:将接口的核心逻辑进行单元测试,把复杂接口调用的测试分解成多个小单元的集成测试。
借助分层设计理念:将各个嵌套层级的验证独立提取,进行分层测试,降低单个测试用例的复杂度。
6. 持续维护与评审
定期评审用例:因为接口会频繁变化,定期评审测试用例的有效性,挑选出重复性、有效性不高的用例进行剔除或重构。
关注接口变更:跟踪接口文档的变化,确保测试用例在接口变更后能及时调整,防止用例和实现脱节。
7. 团队协作与知识分享
文档和知识共享:团队内部建立文档和知识库,分享处理复杂参数的最佳实践,定期进行技术分享和培训。
合理分工:将接口按照业务逻辑进行合理分工,让不同的成员对特定接口负责,提升团队的整体效率。
通过以上优化措施,可以在一定程度上减轻接口测试中的复杂性,提高自动化测试的效率与可靠性。

业务场景自动化吧 保证主要业务的稳定以及检测大部分交互场景是否有漏洞(注意解决:自动化参数与接口关联保持一致性以及可以快速批量修改的痛点)其他更换频繁以及复杂的活得用点点点还是得点点点

用构建者模式试试

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册