建设银行网站是多少,办公室装修案例,ui培训班教什么,微信支付服务商平台导读#xff1a;微服务架构下#xff0c;API 测试的最大挑战来自于庞大的测试用例数量#xff0c;以及微服务之间的相互耦合。基于这种挑战#xff0c;如何进行高效的API测试#xff0c;选择什么样的方式就比较重要#xff0c;此文主要是采用契约测试的方法来对微服务模式… 导读微服务架构下API 测试的最大挑战来自于庞大的测试用例数量以及微服务之间的相互耦合。基于这种挑战如何进行高效的API测试选择什么样的方式就比较重要此文主要是采用契约测试的方法来对微服务模式下的API测试做简要的阐述。一、背景集成开放平台由1个云端管理中心N个后台服务组成连接中心、接口中心等云端管理中心与后台服务存在1对多的API调用关系而服务与服务间也存在多对多的API调用关系。如何高效精准的保障这些接口调用稳定结合行业内接口测试方法和微服务模式下的接口测试我们总结了一套集成开放平台的API测试方法契约测试。二、契约测试与传统API测试的不同2.1 传统的 API 测试策略在传统的 API 测试中我们的测试策略通常是1. 根据被测 API 输入参数的各种组合调用 API并验证相关结果的正确性2. 衡量上述测试过程的代码覆盖率3. 根据代码覆盖率进一步找出遗漏的测试用例4. 以代码覆盖率达标作为 API 测试成功完成的标志。2.2 基于消费者契约的 API 测试后面简称契约测试而服务拆分之后API 接口数量将成倍增加此时需要找到一种既能保证 API 质量又能减少测试用例数量的测试策略。即基于消费者契约的 API 测试。如下图基于消费者契约的 API 测试的核心思想是只测试那些真正被实际使用到的 API 调用如果没有被使用到的就不去测试。看上图大家可能对契约测试还是比较模糊下面我举个实例进行详细讲解。案例连接中心提供了创建连接的API给云端管理中心我们需要对创建连接的API进行接口测试。传统的接口用例设计如下2.3 契约测试的用例设计如下从上面两幅图可以清晰的看出契约测试抛弃了异常场景的验证契约模式下传参可定是合法的。从上面两幅图可以清晰的看出。契约测试做了如下改变1.抛弃了异常场景的验证契约下传参肯定是合法的。不需要额外进行验证。2.对接口提供方的业务逻辑做了场景合并处理不关注里面的业务逻辑重在验证契约的功能是否正常。2.4 契约测试、单元测试、接口测试区别API测试和单元测试更强调的是覆盖API内部逻辑。契约测试更强调是组件之间连接的正确性除了保证组件内部还要保证组件间的调用是正确的也就是服务API之间的调用。单元测试单元测试针对代码单元通常是类的测试单元测试的价值在于能提供最快的反馈。另外好的单元测试还可以帮助你改善设计在你的团队掌握TDD的前提下单元测试能辅助重构帮助改善代码整洁度。API测试API测试是针对业务接口进行的测试主要测内部接口功能实现是否完整比如说内部逻辑是不是正常异常处理是不是正确。契约测试契约测试其实是为了测试服务之间连接或者说接口调用的正确性为了验证服务提供者的功能是不是真正能够满足消费者的需求。它其实体现了测试前移的思想把本来要通过集成测试才能验证的工作化作单元测试和接口测试用更轻量的方式快速进行验证。关注点是consumer是否可以正确的消费provider的API这里的消费包括调用接口和解析数据。它的被测对象注意一定是consumer。集成测试它从用户的角度验证整个功能的正确性测的是端到端的流程并且加入用户场景和数据验证整个过程是不是OK它的价值业务价值最高是验证一个完整的流程。2.5 契约测试带来的好处降低服务集成的难度把服务集成这个过程分解成了单元测试和接口测试来做它从消费者的需求为出发点把消费者的需求作为你的测试用例驱动出一份契约然后验证提供者端的功能。通过使用契约测试接口调用双方协商接口后就可以并行开发并且在开发过程中就利用契约进行预集成测试不用等到联调再来集成调通接口一旦成熟在保证质量的前提下联调的成本可以减低到几乎为0。三、总结及适用场景契约测试相对传统接口测试来说很大程度上缩减了测试场景使测试更聚焦于客户实际应用场景。但是缺点也很明显一旦消费者毁坏契约进行非法的参数调用时就会导致生产者出现不可预知的异常甚至会导致宕机的发生。为此我梳理一下适用的场景请慎重选择。场景描述是否适用1.微服务内部接口不对外开放√2.微服务前后端调用接口有指定身份认证√3.微服务间相互调用接口不对外开放√4.微服务对外指定接口有指定身份认证√5.微服务对外公开接口×6.微服务对外指定接口涉及核心业务场景×------ END ------作者简介吴同学 测试工程师目前负责集成开放平台的测试工作。